能力值:
( LV13,RANK:530 )
|
-
-
2 楼
好像 一块三毛钱 DX贴过这类代码.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
你说的是不是这个帖子:
调试 DLL 时加载到不同地址的小技巧
他跟我的目的有点不同,一块三毛钱写的是在调试的时候如何更改加载基址,但本身加载的内容不变.
我的目的可能前面没有讲的太清楚,我是想拦截loadlibrary,发现在NtMapViewOfSection拦截比较方便,当用户调用loadlibrary("test.dll"),我把它拦截住后,新开一块内存,拷贝test.dll的内容,然后再修改.最后让loadlibrary返回我新分配的那块内存地址.
这样可以实现对test.dll本身进行加密,然后加载过程中拦截,解密.
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
也就是說,在你的第一步 Hook NtMapViewOfSection 時就已經不成功了吧?
檢查一下。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
我跟了一下,发现前面都成功的.
是在NtMapViewOfSection之后,去调用test.dll里面的入口函数时,会
调用一些其它函数.如果是相对地址调用那是没有问题的,
但好像有一些绝对地址的调用.
看到有一个调用:
1100110D FF 15 BC 51 03 10 call dword ptr [__imp__GetVersion@0 (100351bc)]
结果就crash了.
dll原本加载地址是0x10000000
我把它改了0x11000000
这种绝对地址的调用就挂了.
除了手动更改这些code bytes(好像也不太现实),有没有其它方法.
|
|
|