第21章 Windows消息钩取

以前只知道Windows程序是以消息为基础,以事件驱动之。但不知道消息钩子的用法,更不知道还有DLL注入。有点像自己家的晾衣架上,别人可以随便晾衣服的感觉。

HookMain.exe在我的Windows 7 64位环境中无法正常运行。重新编译,或者修改了注册表里面LowLevelHooksTimeout的值也没有效果。暂时放弃在64位环境下的调试。

第22章 恶意键盘记录器

提起这个名字比较熟悉,因为自己也用过,但平时真的很少防范。

第23章 DLL注入

Windows居然设计出这么个功能,Java最多也就是在ClassLoader里面做点文章。

在调用InjectDll.exe的时候,使用的是绝对路径,一开始偷懒了一下,注入不成功。下载的是NAVER的网页。

enter image description here

调试的时候用的是OllyDbg 1.x,左下角没有显示显示的模块。

使用注册表注入的时候,Windows XP默认没有LoadAppInit_DLLs注册表项,不用设置该项也会注入成功。

第24章 DLL卸载

做这一章的时候记得要把前面的注册表恢复了。这里比较有意思的是利用Module32First和Module32Next去查找到myhack.dll的信息,保存在MODULEENTRY32结构体里面,然后用结构体里面的modBaseAddr作为参数去卸载DLL。

第25章 通过修改PE加载DLL

例子里面的myhack3.dll使用的下载地址是google的index.html,我朝没办法下载,所以我重新编译了一下,可以下载baidu的index.html。

这一章的方法稍微复杂,默认的IDT没有足够空间,还需要把整个IDT移动到别的地方。

这里发现PEview的一排小按钮,分别可以看文件偏移地址、视图偏移地址,RVA和VA。最常用的是文件偏移和RVA。

enter image description here

既然最后一个为NULL结构图,为什么不能用来添加myhack3.dll结构体呢?

选择RVA:8C80的原因是必须大于RVA + Virtual Size,即8C56。

最后截个图留念:

enter image description here

第26章 PE Tools

下载地址变为:

http://sourceforge.net/projects/pe-tools/

而且还会被检测为木马。

第27章 代码注入

可能是使用DLL注入有点不够精巧,于是黑客们开始使用代码注入或者叫线程注入。主要是Windows提供了一些“功能强大”的API,比如CreateRemoteThread()之类,居然能在其他的进程内调用线程。

第28章 使用汇编语言编写注入代码

当C语言写的代码都不够精巧时,大神们直接用汇编写注入代码了。

那一堆汇编代码的写法是本章的难点,首先要用55 8BEC生成栈帧,然后后面的字符串都需要反向压入栈中。所以user32.dll就成了lld.23resu。再后面的就有点看不懂了,暂时搁置。

尝试修改一下汇编中的字符串部分,截图留念:

enter image description here