xbb[DFCG] 发表于 2005-4-14 20:40:27

手动脱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]
查看完整版本: 手动脱tElock 0.98b1 -> tE!的壳