飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3051|回复: 0

手动脱tElock 0.98b1 -> tE!的壳

[复制链接]
  • TA的每日心情
    慵懒
    2024-3-21 21:06
  • 签到天数: 1489 天

    [LV.10]以坛为家III

    发表于 2005-4-14 20:40:27 | 显示全部楼层 |阅读模式
    贴个一年以前的手脱练习。当时按照二哥的教程学着弄的。他的方法非常直接有用。让我们感谢二哥为我们这些新手所做的贡献!

                    手动脱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:[EBX*2+1234]

    第五次异常
    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:[0]
    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:[EBX]
    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:[ESP+8]    <-从这开始
    0053482D    EB 1A           JMP SHORT 智能投注.00534849

    00534849    64:67:8F06 0000 POP DWORD PTR FS:[0]                     ; 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:[ESP]
    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:[EAX]
    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:[EAX]
    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:[EDX],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:[EBP+40D382]
    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:[EBP+40B6A2]
    00534752    EB 06           JMP SHORT 智能投注.0053475A
    00534754    039D 62D34000   ADD EBX,DWORD PTR SS:[EBP+40D362]   <-SS=400000与EBX的值相加X=448024 入口=48024
    0053475A    895C24 F0       MOV DWORD PTR SS:[ESP-10],EBX
    0053475E    8DBD 84D24000   LEA EDI,DWORD PTR SS:[EBP+40D284]
    00534764    33C0            XOR EAX,EAX
    00534766    B9 9E030000     MOV ECX,39E
    0053476B    F3:AA           REP STOS BYTE PTR ES:[EDI]
    0053476D    8DBD A2B64000   LEA EDI,DWORD PTR SS:[EBP+40B6A2]
    00534773    B9 58170000     MOV ECX,1758
    00534778    F3:AA           REP STOS BYTE PTR ES:[EDI]
    0053477A    66:AB           STOS WORD PTR ES:[EDI]         <-程序执行到这句,上面的代码全变为0了
    0053477C    8DBD A2B64000   LEA EDI,DWORD PTR SS:[EBP+40B6A2]
    00534782    85F6            TEST ESI,ESI        <-ESI为入口值,即OEP,这里ESI不能为0
    00534784    75 08           JNZ SHORT 智能投注.0053478E    <-一定要跳

    0053478E    C607 E9         MOV BYTE PTR DS:[EDI],0E9  <-跳到这
    00534791    47              INC EDI
    00534792    2BDF            SUB EBX,EDI
    00534794    83EB 04         SUB EBX,4
    00534797    891F            MOV DWORD PTR DS:[EDI],EBX
    00534799    8DBD FACD4000   LEA EDI,DWORD PTR SS:[EBP+40CDFA]
    0053479F    B9 2C000000     MOV ECX,2C
    005347A4    F3:AA           REP STOS BYTE PTR ES:[EDI]
    005347A6    66:AB           STOS WORD PTR ES:[EDI]
    005347A8    EB 02           JMP SHORT 智能投注.005347AC

    005347AC    61              POPAD
    005347AD    FF6424 D0       JMP DWORD PTR SS:[ESP-30]   <-跨段跳转,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 00000000  MOV EAX,DWORD PTR FS:[0]        |这里是典型的VC++6.0的程序入口代码
    00448039    50              PUSH EAX                        |直接用LordPE Dump整个进程
    0044803A    64:8925 0000000>MOV DWORD PTR FS:[0],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:[EBP-18],ESP/

        现在关闭OD,运行未脱壳的智能投注师钻石版,打开ImportREC142,在OEP处填入48024,点IAT自动搜索,再点获取输入信息。接下来点显示无效的指针,用tElock0.98插件搜索。搜索完毕后,再次点显示无效的指针,我们会发现有四个未修复的指针。不要犹豫,鼠标右键点它,用剪切指针去掉它们。修理Dump文件。程序运行成功。


                                        xbb[DFCG][PYG]
                                         2004年1月6日 夜
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表