魔兽改键精灵脱壳(PECompact 2.x )+去除弹窗广告
本帖最后由 今夕望月 于 2011-3-11 16:51 编辑软件名称:魔兽改键精灵,网上随便就可以找到
工具:peid,od,lordpe,import fix,getvbres
很简单的内容,大家随便看看就可以了。
首先peid查壳,PECompact 2.x -> Jeremy Collake,好了OD载入,开始脱壳00402F58 >B8 30CE4500 MOV EAX,魔兽改键.0045CE30
00402F5D 50 PUSH EAX
00402F5E 64:FF35 0000000>PUSH DWORD PTR FS: ; 这里用esp定律
00402F65 64:8925 0000000>MOV DWORD PTR FS:,ESP
00402F6C 33C0 XOR EAX,EAX
esp 0012FFC0下断hr 0012ffc0运行,断下后删掉硬件断点7C94A573 3B45 F8 CMP EAX,DWORD PTR SS: ; 断在这里
7C94A576 72 09 JB SHORT ntdll.7C94A581
7C94A578 3B45 F4 CMP EAX,DWORD PTR SS:
7C94A57B 0F82 FA050000 JB ntdll.7C94AB7B
7C94A581 50 PUSH EAX
7C94A582 E8 67000000 CALL ntdll.7C94A5EE
7C94A587 84C0 TEST AL,AL
7C94A589 0F84 EC050000 JE ntdll.7C94AB7B
7C94A58F F605 1AE4997C 8>TEST BYTE PTR DS:,80
7C94A596 0F85 A75C0200 JNZ ntdll.7C970243 ; 到这里,让跳转实现
7C94A59C FF73 04 PUSH DWORD PTR DS:
双击寄存器z的值,让1变成0,至于为什么这么做我也不知道,这个壳就这样。跳到下面这里
7C970243 6A 10 PUSH 10
0045CE63 53 PUSH EBX停在这里
0045CE64 51 PUSH ECX
0045CE65 57 PUSH EDI
0045CE66 56 PUSH ESI
0045CE67 52 PUSH EDX
0045CE68 8D98 57120010 LEA EBX,DWORD PTR DS: 这里继续用 esp定律
0045CE6E 8B53 18 MOV EDX,DWORD PTR DS:
0045CE71 52 PUSH EDX
0045CE72 8BE8 MOV EBP,EAX
下断hr 0012ffac,运行,断下,删掉断点,到这里0045CEED 5E POP ESI ; 魔兽改键.<模块入口点>
0045CEEE 5F POP EDI
0045CEEF 59 POP ECX
0045CEF0 5B POP EBX
0045CEF1 5D POP EBP
0045CEF2 FFE0 JMP EAX看到这里了吧,直接跳到oep了
0045CEF4 58 POP EAX
0045CEF5 2F DAS
00402F34- FF25 54114000 JMP DWORD PTR DS: ; MSVBVM60.EVENT_SINK_QueryInterface
00402F3A- FF25 F8104000 JMP DWORD PTR DS: ; MSVBVM60.EVENT_SINK_AddRef
00402F40- FF25 3C114000 JMP DWORD PTR DS: ; MSVBVM60.EVENT_SINK_Release
00402F46- FF25 98104000 JMP DWORD PTR DS: ; MSVBVM60.GetMem2
00402F4C- FF25 BC104000 JMP DWORD PTR DS: ; MSVBVM60.PutMem2
00402F52- FF25 F0114000 JMP DWORD PTR DS: ; MSVBVM60.ThunRTMain
00402F58 >68 08E74000 PUSH 魔兽改键.0040E708 这里是oep
00402F5D E8 F0FFFFFF CALL 魔兽改键.00402F52 ; JMP 到 MSVBVM60.ThunRTMain
00402F62 0000 ADD BYTE PTR DS:,AL
00402F64 48 DEC EAX
00402F65 0000 ADD BYTE PTR DS:,AL
00402F67 0030 ADD BYTE PTR DS:,DH
00402F69 0000 ADD BYTE PTR DS:,AL
00402F6B 0040 00 ADD BYTE PTR DS:,AL
00402F6E 0000 ADD BYTE PTR DS:,AL
很明显,这是个vb的程序。直接请出lordpe 脱壳,然后用import fix修复下,文件可运行。脱壳就完成了。下面要找到弹网页的事件。
用getvbres,打开脱壳后的程序,,在这里找到这么个网址,是官网吧。这个程序有时候会弹广告,有时候不弹,但是点击菜单里的官方网站时一定会弹,我们就从这里下手找到弹网页的call,把它修改。
在数据窗口中ctrl+g 转到 004169f4,这时我们就看到了这个网址
004169F468 00 74 00 74 00 70 00 3A 00 2F 00 2F 00 75 00 h.t.t.p.:././.u.
00416A042E 00 73 00 6B 00 79 00 77 00 6F 00 2E 00 63 00 ..s.k.y.w.o...c.
00416A146F 00 6D o.m
选中网址部分,下硬件访问断点(字)。
运行程序。点菜单中的'官方网站"程序断了下来0041E385 .52 PUSH EDX ;停在这里
0041E386 .FFD6 CALL ESI
0041E388 .50 PUSH EAX
0041E389 .8D45 E8 LEA EAX,DWORD PTR SS:
0041E38C .68 E4694100 PUSH dump1_.004169E4 ;UNICODE "open"
0041E391 .50 PUSH EAX
0041E392 .FFD6 CALL ESI
0041E394 .50 PUSH EAX
0041E395 .57 PUSH EDI
0041E396 .E8 C575FFFF CALL dump1_.00415960 ;这个就是弹网页的子程序,F7跟进去
0041E39B .FF15 78104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaSetSy>;msvbvm60.__vbaSetSystemError
跟进以后00415960 A1 A83D4500 MOV EAX,DWORD PTR DS: ;直接把这句改成retn,运行,点官方网站,不弹了
00415965 .0BC0 OR EAX,EAX
00415967 .74 02 JE SHORT dump1_.0041596B
00415969 .FFE0 JMP EAX
0041596B >68 48594100 PUSH dump1_.00415948
00415970 .B8 402C4000 MOV EAX,<JMP.&msvbvm60.DllFunctionCall>
00415975 .FFD0 CALL EAX
00415977 .FFE0 JMP EAX
好了现在在点右键,复制到可执行文件=--所有修改----全部复制--保存文件
ok了!大功告成
我现在还不会用OD脱壳呢 回复 浪子空谷 的帖子
怎么说 补上中午漏的代码 如果能出视频比较好,文字一堆看的眼花、。。谢谢分析 呵呵2次运用ESP定律,恩~~学到了 还要自己看看esp定律 好好学习 另外补充一下。。。这样弄完广告还是会弹。。但是由于弹广告的不定性,实在不好拦截。。就当是抛砖引玉吧 谢谢分享,学习了 新手学习很不错