本帖最后由 今夕望月 于 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:[0] ; 这里用esp定律
00402F65 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00402F6C 33C0 XOR EAX,EAX
esp 0012FFC0 下断hr 0012ffc0运行,断下后删掉硬件断点7C94A573 3B45 F8 CMP EAX,DWORD PTR SS:[EBP-8] ; 断在这里
7C94A576 72 09 JB SHORT ntdll.7C94A581
7C94A578 3B45 F4 CMP EAX,DWORD PTR SS:[EBP-C]
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:[7C99E41A],80
7C94A596 0F85 A75C0200 JNZ ntdll.7C970243 ; 到这里,让跳转实现
7C94A59C FF73 04 PUSH DWORD PTR DS:[EBX+4]
双击寄存器z的值,让1变成0,至于为什么这么做我也不知道,这个壳就这样。
跳到下面这里
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:[EAX+10001257] 这里继续用 esp定律
0045CE6E 8B53 18 MOV EDX,DWORD PTR DS:[EBX+18]
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:[401154] ; MSVBVM60.EVENT_SINK_QueryInterface
00402F3A - FF25 F8104000 JMP DWORD PTR DS:[4010F8] ; MSVBVM60.EVENT_SINK_AddRef
00402F40 - FF25 3C114000 JMP DWORD PTR DS:[40113C] ; MSVBVM60.EVENT_SINK_Release
00402F46 - FF25 98104000 JMP DWORD PTR DS:[401098] ; MSVBVM60.GetMem2
00402F4C - FF25 BC104000 JMP DWORD PTR DS:[4010BC] ; MSVBVM60.PutMem2
00402F52 - FF25 F0114000 JMP DWORD PTR DS:[4011F0] ; MSVBVM60.ThunRTMain
00402F58 > 68 08E74000 PUSH 魔兽改键.0040E708 这里是oep
00402F5D E8 F0FFFFFF CALL 魔兽改键.00402F52 ; JMP 到 MSVBVM60.ThunRTMain
00402F62 0000 ADD BYTE PTR DS:[EAX],AL
00402F64 48 DEC EAX
00402F65 0000 ADD BYTE PTR DS:[EAX],AL
00402F67 0030 ADD BYTE PTR DS:[EAX],DH
00402F69 0000 ADD BYTE PTR DS:[EAX],AL
00402F6B 0040 00 ADD BYTE PTR DS:[EAX],AL
00402F6E 0000 ADD BYTE PTR DS:[EAX],AL
很明显,这是个vb的程序。直接请出lordpe 脱壳,然后用import fix修复下,文件可运行。脱壳就完成了。下面要找到弹网页的事件。
用getvbres,打开脱壳后的程序,
,在这里找到这么个网址,是官网吧。这个程序有时候会弹广告,有时候不弹,但是点击菜单里的官方网站时一定会弹,我们就从这里下手找到弹网页的call,把它修改。
在数据窗口中ctrl+g 转到 004169f4,这时我们就看到了这个网址
004169F4 68 00 74 00 74 00 70 00 3A 00 2F 00 2F 00 75 00 h.t.t.p.:././.u.
00416A04 2E 00 73 00 6B 00 79 00 77 00 6F 00 2E 00 63 00 ..s.k.y.w.o...c.
00416A14 6F 00 6D o.m
选中网址部分,下硬件访问断点(字)。
运行程序。点菜单中的'官方网站"程序断了下来0041E385 . 52 PUSH EDX ; 停在这里
0041E386 . FFD6 CALL ESI
0041E388 . 50 PUSH EAX
0041E389 . 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
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:[453DA8] ; 直接把这句改成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了!大功告成
|