李沉舟 发表于 2018-2-12 16:17

“修复” E-DEBUG 虫子修复版



一般我是在虚拟机里面用这个的,但是虚拟机我不接网。导致没办法使用,也就是如下:



而且我看那空间上的特征码最后一次修改是2014年,已经4年没有更新特征码了。还是直接把特征码转到本地算了。
注意,如果OllyDbg装了StrongOD这个插件,在配置里面把Skip Some Exceptions去掉,否则有可能不能调试。
用中文搜索引擎,很快就可以定位到这里。


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,
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   , eax
00406714|.8965 CC       mov   , esp
00406717|.68 00000000   push    0x0
0040671C|.FF75 E0       push   
0040671F|.FF75 E4       push   
00406722|.68 00000000   push    0x0
00406727|.FF75 EC       push   
0040672A|.FF15 64C34100 call    dword ptr ds:[<&WININET.Internet>;wininet.InternetOpenA


特征码地址是:toolext.oss-cn-hangzhou.aliyuncs.com/GetCode.asp

复制在浏览器里面打开就可以得到以下数据:
xvS0sMrCvP6junywtMWlysK8/qO6fNfpvP7D/MHutffTw0NBTEyjuny6y9DEw/zB7rX308NDQUxMo7p8zcuz9srCvP6junzIoU1ENaO6fFJDNCZERVO808Pco7p8UkM0JkRFU73iw9yjunzRucv1yv2+3aO6fL3i0bnK/b7do7p8zsSxvrHIvc+junzIocquwfm9+NbGzsSxvqO6fMih07LFzMzY1ffX1qO6fLX308NBUEm12Na3o7p80MXPor/yo7p8yKHL5rv6yv2junzIoUNQVdDFz6KjunzIoc34v6jQxc+io7p8yKG0xcXM0MXPoqO6fMihQmlvc9DFz6KjunzIobG+u/rD+6O6fNfTzsSxvszmu7s6fLHqzOK4s9a1KLHqx6m0sL/atcgpo7p80MXPor/yo7pbWF1GQ0RCRTNFOHw4QjU1RUM4QjQ1MDg4QjRDOTAxMDg5NERGMHw4RDQ0MjQwODgzRUMwQzUwRkY3NDI0MTQzM0MwODk0NDI0MDh8OEQ1NDI0MDg4M0VDMEM1MkZGNzQyNDE0Qzc0NDI0MDgwMDAwMDAwMHw1REMzQ0NDQ0NDNTU4QkVDOEI0NTA4NTB8ODNFQzI0OEI0NDI0MzA1MzU2NTc4QjMwfDhCNDQyNDA4OEI0QzI0MEM4QjU0MjQwNDZBMDE1MDUxNTJ8OEI0NDI0MDg4QjRDMjQwQzhCNTQyNDA0NkEwMDUwNTE1Mnw4QjQ0MjQwQzUzNTY1NzhCMzhCOEQzNEQ2MjEwfDhCNDQyNDBDNTM1NjU3OEIzMDMzRkY4M0M2MDh8RjdDMjAzMDAwMDAwNzUzNzhCMDIzQTAxfDhCNDQyNDBDODNFQzM0OEQ1NDI0MDA4QjA4fDgxRUM1NDAyMDAwMDUzMzNEQjU2NTM1MzZBMDM1MzZBMDM2ODAwMDAwMEMwfDgzQzQwNEZGRTBDQ3w4M0VDNjQ1NjhCNzQyNDc0NTc4QjdFMDg1N3w4QjRDMjQwQzU2OEI0MTA4ODVDMDc1MDQzM0Y2fDY0QTEwMDAwMDAwMDUwNjQ4OTI1MDAwMDAwMDA4MUVDQTgwMTAwMDA1MzU2NTc4RDRERDQ4OTY1RjB8NTU1NjU3OEQ0QzI0MTRDNzQ0MjQxMDAwMDAwMDAwODk0NDI0MEN8NjRBMTAwMDAwMDAwNTA2NDg5MjUwMDAwMDAwMDgxRUNDODAwMDAwMDUzNTY1NzhENEREOHw2NEExMDAwMDAwMDA1MDY0ODkyNTAwMDAwMDAwODFFQ0QwMDQwMDAwNTM1NjU3OEQ0REQ0fDgxRUMwMDAxMDAwMDhENDQyNDAwNjgwMDAxMDAwMDUwRTh8OEJDRjAzREYyQkYxM0JGNTg5NzQyNDEwMEZ8RjNBNDhCN0MyNDEwOEQ0QzI0NEM4OTRDMjQyODg5NkMyNDJDOEI1QzI0MUM4QjU0MjQyNDZBMDRGRnw4Qjc2MEM4QkNFRjdEMTgxRTEwMDEwMDAwMDhEMTQ0RTUyNTA1NzUzW1hdMHwxOHwwfDB8NXwwfDB8MHwwfDB8MHwwfDB8M3wwfDB8LTEwfC04fC0xMHwtMTB8MHwxOHwyNnww


BASE64解码后,得到:

启窗事件:|按钮事件:|组件命令调用CALL:|核心命令调用CALL:|退出事件:|取MD5:|RC4&DES加密:|RC4&DES解密:|压缩数据:|解压数据:|文本比较:|取十六进制文本:|取硬盘特征字:|调用API地址:|信息框:|取随机数:|取CPU信息:|取网卡信息:|取磁盘信息:|取Bios信息:|取本机名:|子文本替换:|标题赋值(标签窗口等):|信息框:FCDBE3E8|8B55EC8B45088B4C9010894DF0|8D44240883EC0C50FF74241433C089442408|8D54240883EC0C52FF742414C744240800000000|5DC3CCCCCC558BEC8B450850|83EC248B4424305356578B30|8B4424088B4C240C8B5424046A01505152|8B4424088B4C240C8B5424046A00505152|8B44240C5356578B38B8D34D6210|8B44240C5356578B3033FF83C608|F7C20300000075378B023A01|8B44240C83EC348D5424008B08|81EC540200005333DB5653536A03536A0368000000C0|83C404FFE0CC|83EC64568B742474578B7E0857|8B4C240C568B410885C0750433F6|64A100000000506489250000000081ECA80100005356578D4DD48965F0|5556578D4C2414C7442410000000008944240C|64A100000000506489250000000081ECC80000005356578D4DD8|64A100000000506489250000000081ECD00400005356578D4DD4|81EC000100008D442400680001000050E8|8BCF03DF2BF13BF5897424100F|F3A48B7C24108D4C244C894C2428896C242C8B5C241C8B5424246A04FF|8B760C8BCEF7D181E1001000008D144E525057530|18|0|0|5|0|0|0|0|0|0|0|0|3|0|0|-10|-8|-10|-10|0|18|26|0


关键是下面这一段代码,这段代码从空间里面读出了特征码,
0040678F|.50            push    eax
00406790|.68 00100000   push    0x1000
00406795|.8B45 F8       mov   eax,
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   
004067A3|.FF15 6CC34100 call    dword ptr ds:[<&WININET.Internet>;wininet.InternetReadFile

注意0040679F,这代码压入了缓冲区地址,我们只要Patch这里,我们用得到的数据(BASE64编码后,非解码后的数据)填充这个缓冲区即可,把这个API调用去掉,注意要同时去掉4条PUSH语句,如果不去掉的话堆栈会不平衡的(堆栈会乱掉的,有进无出)。
这里有一个小插曲,不知道注意到没有,每次CALL以后,都会校验一次堆栈。
00406781|.8965 CC       mov   , esp
004067AD|.3965 CC       cmp   , esp
对易语言编译器实在是有点无语(为了安全???)就好比说,易语言的发布模式就是其它编译器的DEBUG模式,人最多还只是默认在函数尾部加_chkesp。。。。
00406795,这里取出了缓冲区地址,但注意,后面判断了是否为空指针,如果不是,还增加了8。
打开StudyPE,往后面加一个区块,用来保存我们的本地数据。

在StudyPE里面保存修改。
记录下这个R Offset字段(0x27000),我们打开010 Editor,转到这个地址,把我们的本地数据复制粘贴进去。

这段数据长为0x63C。PE被映射后的RVA地址是,0x37000,VA地址是,0x437000。
在010Editor里面保存。
现在打开OllyDbg,Patch这个程序。
Patch前(方便对比):

我选中的是需要NOP掉的。
是dword ptr ss:,这是打开了配置里的分析功能,跟我反汇编出来的代码不一样是没有关系的。
Patch后:

稍稍解释一下几行代码吧,cld,表示把CF标志位清0,与串操作指令连用表示正向传输,rep是指令前缀,movsb表示byte ptr = byte ptr,mov ecx设置次数。

保存后,在不能访问Internet的情况下打开对比一下看看:


上传一份我修改后的版本:
因为附件用不了,还是来百度盘吧。

**** Hidden Message *****




JuStkK 发表于 2018-2-12 18:14

感谢分享,lz2018发发发{:5_193:}

192939 发表于 2020-3-16 19:45

谢谢分享啊

Shark恒 发表于 2018-2-12 17:02



刚刚修复了一下,上传附件功能可以使用了。
我来上传一份。做个备份。(在回复可见里)

感谢沉舟童鞋带来的精彩分析!


52bug 发表于 2018-2-12 17:45

{:5_116:}感谢!

kangaroo 发表于 2018-2-12 18:04

这个厉害了~

w6884411 发表于 2018-2-12 18:16

这个厉害了~

皓晨 发表于 2018-2-12 18:44

感谢表哥分享

DDK4282 发表于 2018-2-12 18:50

新春礼物,谢谢分享。{:5_117:}

1615922120 发表于 2018-2-12 19:00

小白的烦恼 发表于 2018-2-12 19:06

感谢分享{:5_119:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: “修复” E-DEBUG 虫子修复版