手动脱tElock 0.98b1 -> tE!的壳
贴个一年以前的手脱练习。当时按照二哥的教程学着弄的。他的方法非常直接有用。让我们感谢二哥为我们这些新手所做的贡献!手动脱tElock 0.98b1 -> tE!的壳
找个软件练练手。呵呵。
脱壳目标:智能投注师钻石版
壳类型:tElock 0.98b1 -> tE! EP Section:UPX! 估计最少两层壳:( 硬着头皮上吧。
第一次异常
00534A1B F7F2 DIV EDX
00534A1D^ EB E8 JMP SHORT 智能投注.00534A07
第二次异常
00534A51 9D POPFD
00534A52 F8 CLC
00534A53^ 73 DC JNB SHORT 智能投注.00534A31
第三次异常
0053308D 90 NOP
0053308E 8BC0 MOV EAX,EAX
第四次异常
00533090 F9 STC
00533091 90 NOP
00533092 8D045D 34120000 LEA EAX,DWORD PTR DS:
第五次异常
00533099 F8 CLC
0053309A 90 NOP
0053309B C1EB 05 SHR EBX,5
第六次异常
0053309E FC CLD
0053309F 90 NOP
005330A0 C1C0 07 ROL EAX,7
第七次异常
005330A7 F7F3 DIV EBX
005330A9 64:67:8F06 0000 POP DWORD PTR FS:
005330AF 83C4 04 ADD ESP,4
005330B2 66:BE 4746 MOV SI,4647
第八次异常
005336A8 8DC0 LEA EAX,EAX ; 非法使用寄存器
005336AA 74 03 JE SHORT 智能投注.005336AF
第九次异常
00533AA1 66:F7F3 DIV BX
00533AA4 0F85 5B010000 JNZ 智能投注.00533C05
第十次异常
00533AE4 F8 CLC
00533AE5 0F83 1A010000 JNB 智能投注.00533C05
第十一次异常
00533B28 90 NOP
00533B29 E9 D7000000 JMP 智能投注.00533C05
第十三次异常
00533B67 F7F3 DIV EBX
00533B69 85D2 TEST EDX,EDX
第十四次异常
00533BA6 CD 68 INT 68
00533BA8 66:05 7B0C ADD AX,0C7B
第十五次异常
00533BF1 90 NOP
00533BF2 66:81FE 4746 CMP SI,4647
00533BF7 75 0C JNZ SHORT 智能投注.00533C05
第十六次异常
00533DFB F7F7 DIV EDI
00533DFD^ EB E8 JMP SHORT 智能投注.00533DE7
第十七次异常
00533E36^\73 DC JNB SHORT 智能投注.00533E14
00533E38 CD20 64678F06 VxDCall 68F6764
第十八次异常
005346F1 8DC0 LEA EAX,EAX ; 非法使用寄存器
005346F3 EB 01 JMP SHORT 智能投注.005346F6
第十九次异常
005347DC FF03 INC DWORD PTR DS:
005347DE^ EB E8 JMP SHORT 智能投注.005347C8
第二十次异常
00534845^\73 DC JNB SHORT 智能投注.00534823
00534847 CD20 64678F06 VxDCall 68F6764
到了534845这行,我们看堆栈窗口,就是OD右下的那个窗口里的第二行的地址是00534829。找得就是它,现在按CTRL+G,来到00534829,在这行下断。按Shift+F9,程序断在这行。下面就要进行手动跟踪了。
手动脱壳时,我们要记住二哥说的,对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。
00534829 8B6424 08 MOV ESP,DWORD PTR SS: <-从这开始
0053482D EB 1A JMP SHORT 智能投注.00534849
00534849 64:67:8F06 0000 POP DWORD PTR FS: ; 0012FFE0
0053484F 58 POP EAX
00534850 61 POPAD
00534851 EB 02 JMP SHORT 智能投注.00534855
00534855 F8 CLC
00534856 E8 00000000 CALL 智能投注.0053485B <-F7
0053485B /EB 01 JMP SHORT 智能投注.0053485E
0053485E 0BC2 OR EAX,EDX ; ntdll.77F833B4
00534860 40 INC EAX
00534861 8B0C24 MOV ECX,DWORD PTR SS:
00534864 58 POP EAX
00534865 81E9 CA144100 SUB ECX,智能投注.004114CA
0053486B EB 01 JMP SHORT 智能投注.0053486E
0053486E F8 CLC
0053486F 72 7F JB SHORT 智能投注.005348F0 <-这里跳出循环
00534871 68 155B9615 PUSH 15965B15
00534876 5A POP EDX
00534877 81F2 B848D715 XOR EDX,15D748B8
0053487D EB 02 JMP SHORT 智能投注.00534881 <-下跳
0053487F FF20 JMP DWORD PTR DS:
00534881 3D F2714152 CMP EAX,524171F2
00534886 03D1 ADD EDX,ECX
00534888 68 A27DBB5D PUSH 5DBB7DA2
0053488D 5F POP EDI
0053488E 81F7 BF7DBB5D XOR EDI,5DBB7DBF
00534894 EB 02 JMP SHORT 智能投注.00534898 <-下跳
00534896 FF20 JMP DWORD PTR DS:
00534898 83C0 1C ADD EAX,1C
00534898 83C0 1C ADD EAX,1C
0053489B BE 00000000 MOV ESI,0
005348A0 81C6 4EB7FD17 ADD ESI,17FDB74E
005348A6 0BE4 OR ESP,ESP
005348A8 75 01 JNZ SHORT 智能投注.005348AB <-下跳
005348AB 1BC3 SBB EAX,EBX
005348AD F5 CMC
005348AE F9 STC
005348AF 6BF6 7D IMUL ESI,ESI,7D
005348B2 3132 XOR DWORD PTR DS:,ESI
005348B4 C1C6 05 ROL ESI,5
005348B7 F9 STC
005348B8 83D6 61 ADC ESI,61
005348BB B8 58FC210D MOV EAX,0D21FC58
005348C0 2BF8 SUB EDI,EAX
005348C2 81C7 57FC210D ADD EDI,0D21FC57
005348C8 0BE4 OR ESP,ESP
005348CA 75 01 JNZ SHORT 智能投注.005348CD<-下跳
005348CD 98 CWDE
005348CE B8 4259612A MOV EAX,2A615942
005348D3 03F0 ADD ESI,EAX
005348D5 EB 01 JMP SHORT 智能投注.005348D8<-下跳
005348D8 83E0 C3 AND EAX,FFFFFFC3
005348DB 42 INC EDX
005348DC 42 INC EDX
005348DD 42 INC EDX
005348DE 42 INC EDX
005348DF EB 01 JMP SHORT 智能投注.005348E2<-下跳
005348E2 35 9EA3292F XOR EAX,2F29A39E
005348E7 51 PUSH ECX
005348E8 8BCF MOV ECX,EDI
005348EA E3 03 JECXZ SHORT 智能投注.005348EF
005348EC 59 POP ECX
005348ED^ EB BF JMP SHORT 智能投注.005348AE<-回跳了
005348EF 59 POP ECX <-我们在这行下断,F9就断下了,清除断点继续
005348F0 0BE4 OR ESP,ESP
005348F2 75 01 JNZ SHORT 智能投注.005348F5 <-下跳
005348F5 40 INC EAX
005348F6 33C7 XOR EAX,EDI
005348F8 E8 08000000 CALL 智能投注.00534905 <-F7
005348FD 23C3 AND EAX,EBX
005348FF E9 08000000 JMP 智能投注.0053490C<-下跳
00534904 FC CLD
00534905 F5 CMC
00534906 2BC7 SUB EAX,EDI
00534908 C3 RETN <-返回到005348FD
00534909 03C5 ADD EAX,EBP
0053490B F5 CMC
0053490C 13C1 ADC EAX,ECX
0053490E 61 POPAD
0053490F EB 01 JMP SHORT 智能投注.00534912
00534912 1BC5 SBB EAX,EBP
00534914 C3 RETN <-返回53473E
0053473E 8B9D 82D34000 MOV EBX,DWORD PTR SS:
00534744 33F6 XOR ESI,ESI
00534746 F7D3 NOT EBX
00534748 0BF3 OR ESI,EBX
0053474A 75 08 JNZ SHORT 智能投注.00534754 <-下跳
0053474C 8D9D A2B64000 LEA EBX,DWORD PTR SS:
00534752 EB 06 JMP SHORT 智能投注.0053475A
00534754 039D 62D34000 ADD EBX,DWORD PTR SS: <-SS=400000与EBX的值相加X=448024 入口=48024
0053475A 895C24 F0 MOV DWORD PTR SS:,EBX
0053475E 8DBD 84D24000 LEA EDI,DWORD PTR SS:
00534764 33C0 XOR EAX,EAX
00534766 B9 9E030000 MOV ECX,39E
0053476B F3:AA REP STOS BYTE PTR ES:
0053476D 8DBD A2B64000 LEA EDI,DWORD PTR SS:
00534773 B9 58170000 MOV ECX,1758
00534778 F3:AA REP STOS BYTE PTR ES:
0053477A 66:AB STOS WORD PTR ES: <-程序执行到这句,上面的代码全变为0了
0053477C 8DBD A2B64000 LEA EDI,DWORD PTR SS:
00534782 85F6 TEST ESI,ESI <-ESI为入口值,即OEP,这里ESI不能为0
00534784 75 08 JNZ SHORT 智能投注.0053478E <-一定要跳
0053478E C607 E9 MOV BYTE PTR DS:,0E9<-跳到这
00534791 47 INC EDI
00534792 2BDF SUB EBX,EDI
00534794 83EB 04 SUB EBX,4
00534797 891F MOV DWORD PTR DS:,EBX
00534799 8DBD FACD4000 LEA EDI,DWORD PTR SS:
0053479F B9 2C000000 MOV ECX,2C
005347A4 F3:AA REP STOS BYTE PTR ES:
005347A6 66:AB STOS WORD PTR ES:
005347A8 EB 02 JMP SHORT 智能投注.005347AC
005347AC 61 POPAD
005347AD FF6424 D0 JMP DWORD PTR SS: <-跨段跳转,SS=48024
00448024 55 PUSH EBP-------------------\
00448025 8BEC MOV EBP,ESP \
00448027 6A FF PUSH -1 \
00448029 68 70624700 PUSH 智能投注.00476270 \
0044802E 68 9CE14400 PUSH 智能投注.0044E19C \
00448033 64:A1 00000000MOV EAX,DWORD PTR FS: |这里是典型的VC++6.0的程序入口代码
00448039 50 PUSH EAX |直接用LordPE Dump整个进程
0044803A 64:8925 0000000>MOV DWORD PTR FS:,ESP |
00448041 83EC 58 SUB ESP,58 |
00448044 53 PUSH EBX |
00448045 56 PUSH ESI /
00448046 57 PUSH EDI /
00448047 8965 E8 MOV DWORD PTR SS:,ESP/
现在关闭OD,运行未脱壳的智能投注师钻石版,打开ImportREC142,在OEP处填入48024,点IAT自动搜索,再点获取输入信息。接下来点显示无效的指针,用tElock0.98插件搜索。搜索完毕后,再次点显示无效的指针,我们会发现有四个未修复的指针。不要犹豫,鼠标右键点它,用剪切指针去掉它们。修理Dump文件。程序运行成功。
xbb
2004年1月6日 夜
页:
[1]