Rover12421's Blog

The End.

网络上流传的输入表互换修改纠正

        特征码定位在输入表的修改,网上有很多教程,一般是移位,互换和重建。这里要说下互换的一个误区。下面是以灰鸽子的DAT文件为例,比如我们定位到的位置是InternetOpenUrlA这个函数, 仔细观察上下函数名,发现InternetReadFile 函数名和定位到的InternetOpenUrlA长度是一样的,那我们就把InternetOpenUrlA和InternetReadFile函数互换。

image

        往前面看一点,可以发现这两个函数都是在wininet.dll文件中。用LordPE打开看下当前的ThunkRVA,Thunk偏移和Thunk值,这个我们等下用来比较来说明当前网上流传修改中的误区。

image

        现在用C32把InternetOpenUrlA和InternetReadFile互换位置,再用LordPE查看下。

image 

image

        比较发现TunkRAV、Thunk偏移和Thunk值都没有变化,只是对应的API名称互换了。网上的教程说的是需要在这里把API调整过来,修改后如下:

image

        保存后,用C32载入看下会发生什么变化。

image

        发现又改回来了,为什么呢?指针所指的地址没边,所以用C32把两个长度相同的函数名互换,在LordPE里看到的Thunk对应的API名称也相应的互换了。要在再在LordPE里把API名称互调那不就是负负得正了吗。其实我们只要用C32把这两个函数名互换就可以了。但是这样修改程序不一定能运行,这个DAT文件互换是可以运行的。有什么办法能达到完美呢?

        其实很简单,只要在LordPE里把Thunk值互换就OK了。

image

Comments