六、PEDIY
这是最关键的一步,因为每次运行aaa.exe,程序都从自身的数据里提取并生成aaa.dll,而不会使用我们修改过的dll,因此必须在aaa.exe内部将我们修改的dll嵌进去,并让aaa.exe运行时,生成的是我们修改过的没有特征码的dll文件。
将aaa.exe复制到windir/system32目录下,用Ollydbg载入并运行,设置断点bp CreateFileA。当文件名参数显示为“windir/system32/aaa.dll”时,手动跟踪,找出位置如下:
004063BA 50 push eax
004063BB E8 6CE0FF>call <jmp.&KERNEL32.CreateFileA>
004063CB 50 push eax
004063CC 8B45 FC mov eax,dword ptr ss:[ebp-4]
004063CF 50 push eax
004063D0 53 push ebx
004063D1 E8 4EE1FF>call <jmp.&KERNEL32.WriteFile>
004063D6 53 push ebx
004063D7 E8 38E0FF>call <jmp.&KERNEL32.CloseHandle>
记下WriteFile时,写入的字节数大小,因为这是原dll数据在文件中的大小。关闭Ollydbg,用UltraEdit打开aaa.exe,搜索“MZ”,找到原dll文件的起始位置后填充为0,大小不要超过刚才记录的字节数。
再用UltraEdit打开aaa.dll(已脱壳的),将dll中的全部数据复制到exe文件偏移处00014798h处(自校验数据之前),保存并关闭。用PEInfo(by:破解勇)修改exe文件的最后一节节表的数据,RawSize大小加上1BBD2(这是dll的字节数),VirtualSize修改为新的RawSize按1000h对齐即可,ImageSize会自动修改。这样,我们已经把特征码修改过的dll放进了exe文件中,下面修改文件指令(刚才的WriteFile处,主要是lpBuffer和nBytesToWrite要修改),使它在运行时正常生成aaa.dll文件。修改方法如下:
004063CD |90 nop
004063CE |90 nop
004063CF |90 nop
004063D0 |90 nop
004063D1 |E8 4EE1FF>call <jmp.&KERNEL32.WriteFile>
004063D6 |53 push ebx
空隙处(
004092AD 53 push ebx
004092AE ^ E9 24D1FF>jmp aaa.004063D1
其中
七、主程序特征码修改
这样,排除了aaa.exe中dll文件的特征码干扰(因为原来含特征码的dll已经被覆盖,新的内嵌dll已经没有特征码了),剩下对aaa.exe文件本身进行特征码定位和修改。过程略。修改完毕后,OK。已经成了一个完美的Trojan。
相关专题
- 常用电脑密码破解实用技巧! (14811次浏览)
- 深入掌握网络加密及解密方法 (9144次浏览)
- 常见电子书格式及其反编译思路 (6502次浏览)
- 数据加密技术 (6242次浏览)
- openssl的man中文文档 (6192次浏览)
- 电脑中的十二种常用密码破解法 (5190次浏览)
- 详解加密技术概念、加密方法以及应用 (4968次浏览)
- 对称加密算法技术概述 (4666次浏览)
- 网络游戏封包基础 (4077次浏览)
- 加密:让你的文件人间蒸发 (4010次浏览)



