首页
社区
课程
招聘
[求助]DLL打补丁
发表于: 2011-10-5 20:29 8071

[求助]DLL打补丁

2011-10-5 20:29
8071
一般DLL打补丁流程:创建一个DLL ,然后在这个DLL中LoadLibraryA加载要打补丁的DLL,

获取DLL基址,加上偏移地址,获取修改地址然后修改代码。

今天给一DLL打补丁,但是出现了问题,请大家帮帮忙,这个DLL在DLL初始化的时候就验证,验证不通过就退出
没时间修改代码就退出了。也就是说用LoadLibraryA 根本就没等 LoadLibraryA 返回基址的时候 DLL初始化已经完成了

hModule = LoadLibraryA("d:\\test.dll");

        dPrintf("0x%X\n",hModule); //没等输出模块基地址 DLL初始化已经完成验证退出了

        Address = (DWORD)hModule + 0x5EB70;

        WriteMemByte((HANDLE)-1,(DWORD)Address,L"{C3}",true);

        Address2 = (DWORD)hModule + 0x1BF74;

        WriteMemByte((HANDLE)-1,(DWORD)Address,L"{90,90,90,90,90,90}",true);

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 267
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
勾住ntdll回调dllmain的地方...
2011-10-5 23:23
0
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
3
Sunnig 兄 能否详细提示点,没有LOAD源码不明白怎么个调用机制
2011-10-6 00:45
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
如果是DLLMain中做了Check,钩住了用处也不大吧,还是要使用DLLMain进行初始化的。而这部分代码是没法自己写的。
2011-10-6 13:19
0
雪    币: 267
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
等到ntdll模块回调dllmain的时候,对dll的一些初始化已经完成(如加载dll模块到内存-是否能打内存补丁最主要的就是这点),勾住ntdll模块回调dllmain的地方然后打上热补丁,补丁打完之后继续完成ntdll模块回调dllmain的流程(这样阐述应该易懂了,但是细节上如何做到兼容,须得自己研究研究了),可参考http://bbs.pediy.com/showpost.php?p=956306&postcount=19该贴思路.
2011-10-10 17:09
0
雪    币: 386
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
入口搞个cc,加载自动断下
2011-10-13 09:38
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
LdrLoadDll
2011-10-13 10:27
0
游客
登录 | 注册 方可回帖
返回
//