偶尔对一些软件进行小patch,需要注入自己写的dll.但是dll的注入总觉得找不到一个趁手的办法.
1.消息钩子:缺点,需要等GUI线程开始才能进入,此外,可能被一些进程保护软件拦截.
2.转发dll:
2.1 msimg32.dll,需要程序调用此dll,一般是涉及渐变填充,Alpha绘图的程序才会加载
2.2 lpk.dll vista后系统默认无法加载
2.3 wsock32.dll,需要进程涉及网络应用
2.4 ddraw.dll,需要进程调用direct draw,似乎进程启动时当前路径不是程序根目录,不一定会加载此文件
3.作为loader,直接注入:缺点必须由我们的loader启动,如果是别人创建进程,就无效了.
4.远程线程,或通过修改线程EIP来加载dll,类似消息钩子,可以在大多数时候奏效,但都需要作为loader,或daemon才能实施这个操作.此外,大多数杀毒软件会拦截远程线程的行为.
希望达到通过任意程序启动都能加载,还有别的办法么?
补充:
1.最好是不修改目标文件,否则,灵活性大大降低了.(修改文件往往会涉及:版本兼容,自校验等等)
2.避免使用驱动,因为如果使用驱动,意味着权限必须够高,到了Vista64位还得数字签名.能不用ring0,则不用ring0.
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!