一般我是在虚拟机里面用这个的,但是虚拟机我不接网。导致没办法使用,也就是如下:
而且我看那空间上的特征码最后一次修改是2014年,已经4年没有更新特征码了。还是直接把特征码转到本地算了。
注意,如果OllyDbg装了StrongOD这个插件,在配置里面把Skip Some Exceptions去掉,否则有可能不能调试。
用中文搜索引擎,很快就可以定位到这里。
[Asm] 纯文本查看 复制代码 004066FA |. B8 11094200 mov eax, E-Debug?00420911 ; toolext.oss-cn-hangzhou.aliyuncs.com/GetCode.asp
004066FF |. 50 push eax
00406700 |. 8B5D EC mov ebx, [local.5]
00406703 |. 85DB test ebx, ebx
00406705 |. 74 09 je short E-Debug?00406710
00406707 |. 53 push ebx
00406708 |. E8 570C0000 call E-Debug?00407364
0040670D |. 83C4 04 add esp, 0x4
00406710 |> 58 pop eax ; user32.77D19418
00406711 |. 8945 EC mov [local.5], eax
00406714 |. 8965 CC mov [local.13], esp
00406717 |. 68 00000000 push 0x0
0040671C |. FF75 E0 push [local.8]
0040671F |. FF75 E4 push [local.7]
00406722 |. 68 00000000 push 0x0
00406727 |. FF75 EC push [local.5]
0040672A |. FF15 64C34100 call dword ptr ds:[<&WININET.Internet>; wininet.InternetOpenA
特征码地址是:toolext.oss-cn-hangzhou.aliyuncs.com/GetCode.asp
复制在浏览器里面打开就可以得到以下数据:
[C] 纯文本查看 复制代码 xvS0sMrCvP6junywtMWlysK8/qO6fNfpvP7D/MHutffTw0NBTEyjuny6y9DEw/zB7rX308NDQUxMo7p8zcuz9srCvP6junzIoU1ENaO6fFJDNCZERVO808Pco7p8UkM0JkRFU73iw9yjunzRucv1yv2+3aO6fL3i0bnK/b7do7p8zsSxvrHIvc+junzIocquwfm9+NbGzsSxvqO6fMih07LFzMzY1ffX1qO6fLX308NBUEm12Na3o7p80MXPor/yo7p8yKHL5rv6yv2junzIoUNQVdDFz6KjunzIoc34v6jQxc+io7p8yKG0xcXM0MXPoqO6fMihQmlvc9DFz6KjunzIobG+u/rD+6O6fNfTzsSxvszmu7s6fLHqzOK4s9a1KLHqx6m0sL/atcgpo7p80MXPor/yo7pbWF1GQ0RCRTNFOHw4QjU1RUM4QjQ1MDg4QjRDOTAxMDg5NERGMHw4RDQ0MjQwODgzRUMwQzUwRkY3NDI0MTQzM0MwODk0NDI0MDh8OEQ1NDI0MDg4M0VDMEM1MkZGNzQyNDE0Qzc0NDI0MDgwMDAwMDAwMHw1REMzQ0NDQ0NDNTU4QkVDOEI0NTA4NTB8ODNFQzI0OEI0NDI0MzA1MzU2NTc4QjMwfDhCNDQyNDA4OEI0QzI0MEM4QjU0MjQwNDZBMDE1MDUxNTJ8OEI0NDI0MDg4QjRDMjQwQzhCNTQyNDA0NkEwMDUwNTE1Mnw4QjQ0MjQwQzUzNTY1NzhCMzhCOEQzNEQ2MjEwfDhCNDQyNDBDNTM1NjU3OEIzMDMzRkY4M0M2MDh8RjdDMjAzMDAwMDAwNzUzNzhCMDIzQTAxfDhCNDQyNDBDODNFQzM0OEQ1NDI0MDA4QjA4fDgxRUM1NDAyMDAwMDUzMzNEQjU2NTM1MzZBMDM1MzZBMDM2ODAwMDAwMEMwfDgzQzQwNEZGRTBDQ3w4M0VDNjQ1NjhCNzQyNDc0NTc4QjdFMDg1N3w4QjRDMjQwQzU2OEI0MTA4ODVDMDc1MDQzM0Y2fDY0QTEwMDAwMDAwMDUwNjQ4OTI1MDAwMDAwMDA4MUVDQTgwMTAwMDA1MzU2NTc4RDRERDQ4OTY1RjB8NTU1NjU3OEQ0QzI0MTRDNzQ0MjQxMDAwMDAwMDAwODk0NDI0MEN8NjRBMTAwMDAwMDAwNTA2NDg5MjUwMDAwMDAwMDgxRUNDODAwMDAwMDUzNTY1NzhENEREOHw2NEExMDAwMDAwMDA1MDY0ODkyNTAwMDAwMDAwODFFQ0QwMDQwMDAwNTM1NjU3OEQ0REQ0fDgxRUMwMDAxMDAwMDhENDQyNDAwNjgwMDAxMDAwMDUwRTh8OEJDRjAzREYyQkYxM0JGNTg5NzQyNDEwMEZ8RjNBNDhCN0MyNDEwOEQ0QzI0NEM4OTRDMjQyODg5NkMyNDJDOEI1QzI0MUM4QjU0MjQyNDZBMDRGRnw4Qjc2MEM4QkNFRjdEMTgxRTEwMDEwMDAwMDhEMTQ0RTUyNTA1NzUzW1hdMHwxOHwwfDB8NXwwfDB8MHwwfDB8MHwwfDB8M3wwfDB8LTEwfC04fC0xMHwtMTB8MHwxOHwyNnww
BASE64解码后,得到:
[C] 纯文本查看 复制代码 启窗事件:|按钮事件:|组件命令调用CALL:|核心命令调用CALL:|退出事件:|取MD5:|RC4&DES加密:|RC4&DES解密:|压缩数据:|解压数据:|文本比较:|取十六进制文本:|取硬盘特征字:|调用API地址:|信息框:|取随机数:|取CPU信息:|取网卡信息:|取磁盘信息:|取Bios信息:|取本机名:|子文本替换:|标题赋值(标签窗口等):|信息框:[X]FCDBE3E8|8B55EC8B45088B4C9010894DF0|8D44240883EC0C50FF74241433C089442408|8D54240883EC0C52FF742414C744240800000000|5DC3CCCCCC558BEC8B450850|83EC248B4424305356578B30|8B4424088B4C240C8B5424046A01505152|8B4424088B4C240C8B5424046A00505152|8B44240C5356578B38B8D34D6210|8B44240C5356578B3033FF83C608|F7C20300000075378B023A01|8B44240C83EC348D5424008B08|81EC540200005333DB5653536A03536A0368000000C0|83C404FFE0CC|83EC64568B742474578B7E0857|8B4C240C568B410885C0750433F6|64A100000000506489250000000081ECA80100005356578D4DD48965F0|5556578D4C2414C7442410000000008944240C|64A100000000506489250000000081ECC80000005356578D4DD8|64A100000000506489250000000081ECD00400005356578D4DD4|81EC000100008D442400680001000050E8|8BCF03DF2BF13BF5897424100F|F3A48B7C24108D4C244C894C2428896C242C8B5C241C8B5424246A04FF|8B760C8BCEF7D181E1001000008D144E52505753[X]0|18|0|0|5|0|0|0|0|0|0|0|0|3|0|0|-10|-8|-10|-10|0|18|26|0
关键是下面这一段代码,这段代码从空间里面读出了特征码,
[Asm] 纯文本查看 复制代码 0040678F |. 50 push eax
00406790 |. 68 00100000 push 0x1000
00406795 |. 8B45 F8 mov eax, [local.2]
00406798 |. 85C0 test eax, eax
0040679A |. 74 03 je short E-Debug?0040679F
0040679C |. 83C0 08 add eax, 0x8
0040679F |> 50 push eax ;压入缓冲区!!!
004067A0 |. FF75 DC push [local.9]
004067A3 |. FF15 6CC34100 call dword ptr ds:[<&WININET.Internet>; wininet.InternetReadFile
注意0040679F,这代码压入了缓冲区地址,我们只要Patch这里,我们用得到的数据(BASE64编码后,非解码后的数据)填充这个缓冲区即可,把这个API调用去掉,注意要同时去掉4条PUSH语句,如果不去掉的话堆栈会不平衡的(堆栈会乱掉的,有进无出)。
这里有一个小插曲,不知道注意到没有,每次CALL以后,都会校验一次堆栈。
[Asm] 纯文本查看 复制代码 00406781 |. 8965 CC mov [local.13], esp
004067AD |. 3965 CC cmp [local.13], esp
对易语言编译器实在是有点无语(为了安全???)就好比说,易语言的发布模式就是其它编译器的DEBUG模式,人最多还只是默认在函数尾部加_chkesp。。。。
00406795,这里取出了缓冲区地址,但注意,后面判断了是否为空指针,如果不是,还增加了8。
打开StudyPE,往后面加一个区块,用来保存我们的本地数据。
在StudyPE里面保存修改。
记录下这个R Offset字段(0x27000),我们打开010 Editor,转到这个地址,把我们的本地数据复制粘贴进去。
这段数据长为0x63C。PE被映射后的RVA地址是,0x37000,VA地址是,0x437000。
在010Editor里面保存。
现在打开OllyDbg,Patch这个程序。
Patch前(方便对比):
我选中的是需要NOP掉的。
[local.2]是dword ptr ss:[ebp-0x8],这是打开了配置里的分析功能,跟我反汇编出来的代码不一样是没有关系的。
Patch后:
稍稍解释一下几行代码吧,cld,表示把CF标志位清0,与串操作指令连用表示正向传输,rep是指令前缀,movsb表示byte ptr[edi] = byte ptr[esi],mov ecx设置次数。
保存后,在不能访问Internet的情况下打开对比一下看看:
上传一份我修改后的版本:
因为附件用不了,还是来百度盘吧。
|