首页
社区
课程
招聘
未解决 请教如何对一个dll中的函数在 dll入口点执行完毕前进行hook
发表于: 2024-2-16 16:20 2465

未解决 请教如何对一个dll中的函数在 dll入口点执行完毕前进行hook

2024-2-16 16:20
2465

有个待搞定的程序调用一个受保护的dll文件,这个dll文件的入口点里面有一些动态解密代码以及自校验等。


请教如何创建一个hook,使hook在dll载入以后,入口点执行完毕前开始起作用。  hook里面的工作代码需要hModule。


所以正常的如果调用loadlibrary或者hook loadlibrary,等获得这个hmodule的时候,入口点已经执行完毕了,这个时候再去hook已经没意义了。


需要一个入口点代码尚未执行,但是hmodule已经出来的时候。感觉类似于x64dbg里面的  用户dll载入  这个断点。


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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 800
活跃值: (3465)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
2
To answer the original question, what you can do is to hook LdrpCallInitRoutine in . This function is used by DLL loading/unloading code to actually call the DLL entry point () and also the TLS callbacks. The first argument is the address to be called:ntdll.dllDllMain

BOOLEAN NTAPI LdrpCallInitRoutine(PDLL_INIT_ROUTINE EntryPoint, PVOID BaseAddress, ULONG Reason, PVOID Context);
2024-2-16 18:19
0
雪    币: 107
活跃值: (2319)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
yeyeshun To answer the original question, what you can do is to hook LdrpCallInitRoutine in . This function i ...
LdrpCallInitRoutine是个未导出函数,不同win版本里面这个函数的所在位置都不固定,没啥好的获取函数地址的方法啊
2024-2-16 21:12
0
雪    币: 15
活跃值: (3621)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
第一点  注入你的dll   第二点 模块加载回调中  把目标模块的入口点hook到你的模块去
2024-2-17 01:14
0
雪    币: 800
活跃值: (3465)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
5
或者注入你的dll,在dllmain中进行stack walk,找到LdrpCallInitRoutine再进行hook。要确保你的dll比目标dll先加载
2024-2-17 15:41
0
雪    币: 918
活跃值: (1955)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
劫持掉这个dll,然后内存加载他
2024-2-18 13:26
0
雪    币: 107
活跃值: (2319)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
后来用了个高版本windows才支持的api  LdrRegisterDllNotification解决了。能够在dll load后及时挂上。
2024-2-21 17:42
0
游客
登录 | 注册 方可回帖
返回
//