首页
社区
课程
招聘
半夜脱壳记(第4篇脱文)!
发表于: 2006-7-6 05:54 4997

半夜脱壳记(第4篇脱文)!

2006-7-6 05:54
4997
4个软件以放在:http://free5.ys168.com/?lzmo123

脱文1.软件名字Arm
软件类型:加密 加壳工具查

PEID查不出壳的类型
OD载入
0040FB3F >- E9 1406FFFF     JMP Arm.00400158                         ;这里
0040FB44    0000            ADD BYTE PTR DS:[EAX],AL
0040FB46    0002            ADD BYTE PTR DS:[EDX],AL
0040FB48    0000            ADD BYTE PTR DS:[EAX],AL
0040FB4A    000CC0          ADD BYTE PTR DS:[EAX+EAX*8],CL
0040FB4D    0000            ADD BYTE PTR DS:[EAX],AL
0040FB4F    0000            ADD BYTE PTR DS:[EAX],AL

0040017C   .  B0 10         MOV AL,10
0040017E   >  FF13          CALL DWORD PTR DS:[EBX]
00400180   .  12C0          ADC AL,AL
00400182   .^ 73 FA         JNB SHORT Arm.0040017E                   ;有回跳
00400184   .  75 3E         JNZ SHORT Arm.004001C4                   ;F4 (运行到这里)

00400187   .^\EB E0         JMP SHORT Arm.00400169                   ;回跳
00400189   >  E8 72BE0000   CALL Arm.0040C000                        ;有CALL不能下 F4退后一行
0040018E   .  02F6          ADD DH,DH                                ;这里可以F4

004001C9   .  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004001CB   .  5E            POP ESI
004001CC   .^ EB 9B         JMP SHORT Arm.00400169                   ;  有回跳
004001CE   >  AD            LODS DWORD PTR DS:[ESI]                  ;  这里下F4
004001CF   .  85C0          TEST EAX,EAX

004001D9   .  3C 00         CMP AL,0
004001DB   .^ 75 FB         JNZ SHORT Arm.004001D8                   ;  和前面一样,不能回跳
004001DD   .  FF53 F0       CALL DWORD PTR DS:[EBX-10]               ;  有CALL 也不能下F4
004001E0   .  95            XCHG EAX,EBP                             ;  在这一行下

004001F4   .  FF53 F4       CALL DWORD PTR DS:[EBX-C]
004001F7   .  AB            STOS DWORD PTR ES:[EDI]
004001F8   .^ 75 E7         JNZ SHORT Arm.004001E1                   ;  回跳
004001FA   .  C3            RETN                                     ;  要大跳咯,就这里F4

00401000    6A 00           PUSH 0                                   ; 入口点 对吧!
00401002    E8 17220000     CALL Arm.0040321E                        ; JMP 到 kernel32.GetModuleHandleA
00401007    A3 1C504000     MOV DWORD PTR DS:[40501C],EAX
0040100C    6A 00           PUSH 0
0040100E    68 24104000     PUSH Arm.00401024
00401013    6A 00           PUSH 0
00401015    6A 65           PUSH 65
00401017    50              PUSH EAX
00401018    E8 9B210000     CALL Arm.004031B8                        ; JMP 到 USER32.DialogBoxParamA
0040101D    6A 00           PUSH 0
0040101F    E8 EE210000     CALL Arm.00403212                        ; JMP 到 kernel32.ExitProcess
00401024    55              PUSH EBP
00401025    8BEC            MOV EBP,ESP
00401027    53              PUSH EBX
00401028    57              PUSH EDI
00401029    56              PUSH ESI

脱后可以运行,为MASM32 / TASM32编写!
总结:这个壳虽然不知道是什么壳,但是都比较传统,所以就用传统脱法。(菜鸟练习)

脱文2.软件名字:!EP v1.0
类型:压缩工具
PEID查不出类型
OD载入

0049F2A7 >  9C              PUSHFD                                   ; 来到这里!看这里,就知道应该是ASP的壳
0049F2A8    60              PUSHAD
0049F2A9    E8 00000000     CALL !EP_v1_0.0049F2AE
0049F2AE    5D              POP EBP
0049F2AF    B8 07000000     MOV EAX,7

0049F3B8    8A07            MOV AL,BYTE PTR DS:[EDI]
0049F3BA    47              INC EDI
0049F3BB    2C E8           SUB AL,0E8
0049F3BD    3C 01           CMP AL,1
0049F3BF  ^ 77 F7           JA SHORT !EP_v1_0.0049F3B8               ; 一路到这里,有回跳!
0049F3C1    8B07            MOV EAX,DWORD PTR DS:[EDI]               ; F4到这里!

0049F3F5  ^\E2 C6           LOOPD SHORT !EP_v1_0.0049F3BD            ; 又是回跳
0049F3F7    E8 39010000     CALL !EP_v1_0.0049F535                   ; CALL 不能下F4
0049F3FC    8D8D CDFBFFFF   LEA ECX,DWORD PTR SS:[EBP-433]           ; 这里下!
0049F402    8B41 08         MOV EAX,DWORD PTR DS:[ECX+8]

0049F51A    83C3 0C         ADD EBX,0C
0049F51D  ^ E2 E1           LOOPD SHORT !EP_v1_0.0049F500            ; 回跳!
0049F51F    B8 00000000     MOV EAX,0                                ; F4

0049F52E    61              POPAD                                    ; 这里因该是出口标志,看看后面在下结论!
0049F52F    9D              POPFD
0049F530  - E9 EB6AFDFF     JMP !EP_v1_0.00476020                    ; 很明显一个大跳!那后面就是OEP咯
0049F535    8BB5 81FBFFFF   MOV ESI,DWORD PTR SS:[EBP-47F]
0049F53B    0BF6            OR ESI,ESI
0049F53D    0F84 97000000   JE !EP_v1_0.0049F5DA
0049F543    8B95 89FBFFFF   MOV EDX,DWORD PTR SS:[EBP-477]

00476020      55            DB 55                                    ;  CHAR 'U'         ; OEP在这里
00476021      8B            DB 8B
00476022      EC            DB EC
00476023      83            DB 83
00476024      C4            DB C4
00476025      F0            DB F0
00476026      B8            DB B8
00476027      10            DB 10
00476028      5E            DB 5E                                    ;  CHAR '^'
00476029      47            DB 47                                    ;  CHAR 'G'
0047602A      00            DB 00
0047602B      E8            DB E8
0047602C      20            DB 20                                    ;  CHAR ' '
0047602D      FC            DB FC
0047602E      F8            DB F8
0047602F      FF            DB FF

脱壳后正常运行。
为Borland Delphi 6.0 - 7.0编写!
总结:这个壳虽然不知道是什么壳,但是都比较传统,所以就用传统脱法。(菜鸟练习)

   小结:可能有的人会问我,为什么老是用这些无聊的方法脱这些无聊的壳, 其实因为我才入门,也不懂
语言类。所以需要多多摸索其中的规律。看资料太枯燥 ,所以就手动练习。

下面接着脱
脱文3.软件名字:EProt000
软件类型:入口点加密工具
PEID不认识它,那就手动
脱壳方法:ESP定律。(个人建议,希望大家还是多走点岔路,失败的经验多了,处理失败的方法也就多了!
ESP定律脱壳比较简单,但是个人不喜欢用)
关于ESP定律 资料大家可以去网上找找!~
个人理解:一个程序运行的过程   程序运行(有壳)→程序运行(解壳)→程序运行(正常代码)
总的说就是加了壳的程序总会解压壳后才会运行的。
OD载入

0041916C >  9C              PUSHFD          \\来到这里注意OD右上角的寄存器ESP 的值  
0041916D    60              PUSHAD
0041916E    E8 00000000     CALL EProt000.00419173
00419173    5D              POP EBP
00419174    B8 07000000     MOV EAX,7
00419179    2BE8            SUB EBP,EAX
0041917B    8DB5 F8FCFFFF   LEA ESI,DWORD PTR SS:[EBP-308]
00419181    8B06            MOV EAX,DWORD PTR DS:[ESI]
00419183    83F8 00         CMP EAX,0

寄存器:
EAX 00000000
ECX 00010101
EDX FFFFFFFF
EBX 7FFDF000
ESP 0012FFC4               \\值是红色的对吧!先不管,因为程序还没运行。
EBP 0012FFF0
ESI 00000056
EDI 005816A8
EIP 0041916C EProt000.<模块入口点>

F8单步
0041916C >  9C              PUSHFD                                   ;载入OD来到的地方
0041916D    60              PUSHAD                                   ; F8到这里的时候 在看寄存器的值
0041916E    E8 00000000     CALL EProt000.00419173
00419173    5D              POP EBP
看寄存器的值
EAX 00000000
ECX 00010101
EDX FFFFFFFF
EBX 7FFDF000
ESP 0012FFC0              \\程序运行的第一步,ESP 的值是红色的,那就把这个0012FFC0复制下来 待用。
EBP 0012FFF0
ESI 00000056
EDI 005816A8

OD下方命令处输入:dd 0012FFC0 (这里用的就是ESP 的值)在按回车

在看OD的左下角,是否是:
0012FFC0  00000246         \\选中这里,鼠标右键 → 断点 → 硬件访问 →字 F9运行
0012FFC4  77E687F5  返回到 KERNEL32.77E687F5
0012FFC8  005816A8
0012FFCC  00000056
0012FFD0  7FFDF000
0012FFD4  00000200
0012FFD8  0012FFC8
0012FFDC  00000200
0012FFE0  FFFFFFFF  SEH 链尾部
0012FFE4  77E7F0B4  SE处理程序
0012FFE8  77E68EC8  KERNEL32.77E68EC8
0012FFEC  00000000
0012FFF0  00000000
0012FFF4  00000000
0012FFF8  0041916C  OFFSET EProt000.<模块入口点>

004193F5  - E9 4220FFFF     JMP EProt000.0040B43C       \\来到这里,004193F5和 0040B43C的值相差很大,那应该是OEP了 F8单步一下
004193FA    8BB5 ACFCFFFF   MOV ESI,DWORD PTR SS:[EBP-354]
00419400    0BF6            OR ESI,ESI
00419402    0F84 97000000   JE EProt000.0041949F
00419408    8B95 B4FCFFFF   MOV EDX,DWORD PTR SS:[EBP-34C]
0041940E    03F2            ADD ESI,EDX
00419410    833E 00         CMP DWORD PTR DS:[ESI],0
00419413    75 0E           JNZ SHORT EProt000.00419423
00419415    837E 04 00      CMP DWORD PTR DS:[ESI+4],0
00419419    75 08           JNZ SHORT EProt000.00419423
0041941B    837E 08 00      CMP DWORD PTR DS:[ESI+8],0
0041941F    75 02           JNZ SHORT EProt000.00419423
00419421    EB 7A           JMP SHORT EProt000.0041949D
00419423    8B5E 08         MOV EBX,DWORD PTR DS:[ESI+8]
00419426    03DA            ADD EBX,EDX
00419428    53              PUSH EBX
00419429    52              PUSH EDX
0041942A    56              PUSH ESI

0040B43C      55            DB 55                                    ;  CHAR 'U'        \\在明显不过的OEP了 现在就脱
0040B43D      8B            DB 8B
0040B43E      EC            DB EC
0040B43F      83            DB 83
0040B440      C4            DB C4
0040B441      F0            DB F0
0040B442      B8            DB B8
0040B443      9C            DB 9C
0040B444      B3            DB B3
0040B445      40            DB 40                                    ;  CHAR '@'
0040B446      00            DB 00
0040B447      E8            DB E8
0040B448      9C            DB 9C
0040B449      86            DB 86
0040B44A      FF            DB FF
0040B44B      FF            DB FF
0040B44C      B8            DB B8
0040B44D      88            DB 88
0040B44E      B4            DB B4
0040B44F      40            DB 40                                    ;  CHAR '@'
0040B450      00            DB 00
0040B451      E8            DB E8
0040B452      4A            DB 4A                                    ;  CHAR 'J'

程序脱后正常运行
为Borland Delphi 6.0 - 7.0。
总结:用ESP定律脱壳是方便,但是也有些行不通的。
建议:实在脱不下来,就用ESP定律脱,脱完 在根据入口点寻找其他的方法解决这个壳。

脱文4.软件名字:eXPressor v1.2
软件类别:压缩程序。
PEID查为PECompact 1.68 - 1.84 -> Jeremy Collake
用OD载入:
004AB9E0 > /EB 06           JMP SHORT 222.004AB9E8                   ; 载入,来到这里!PECompact的第一句。
004AB9E2   |68 15F50100     PUSH 1F515
004AB9E7   |C3              RETN
004AB9E8   \9C              PUSHFD
004AB9E9    60              PUSHAD
004AB9EA    E8 02000000     CALL 222.004AB9F1                        ; 这里这个CALL太近了,F7,F8会死掉
004AB9EF    33C0            XOR EAX,EAX
004AB9F1    8BC4            MOV EAX,ESP                              ; 跳到这里,下面F8一路走。
004AB9F3    83C0 04         ADD EAX,4
004AB9F6    93              XCHG EAX,EBX

004AE24E    AD              LODS DWORD PTR DS:[ESI]
004AE24F    85C0            TEST EAX,EAX
004AE251    0F84 9B000000   JE 222.004AE2F2                          ; 这里有个跳是跳到循环外面的,但是是灰色。先不管他,看看下面往回跳不。记住位置
(在这里回车)
004AE257    8BD0            MOV EDX,EAX
004AE259    0395 E6904000   ADD EDX,DWORD PTR SS:[EBP+4090E6]
004AE25F    AD              LODS DWORD PTR DS:[ESI]
004AE260    56              PUSH ESI
004AE261    8BC8            MOV ECX,EAX
004AE263    57              PUSH EDI
004AE264    52              PUSH EDX
004AE265    8DB5 6BA14000   LEA ESI,DWORD PTR SS:[EBP+40A16B]
004AE26B    57              PUSH EDI
004AE26C    51              PUSH ECX
004AE26D    52              PUSH EDX
004AE26E    6A 40           PUSH 40
004AE270    56              PUSH ESI
004AE271    FFB5 3D974000   PUSH DWORD PTR SS:[EBP+40973D]
004AE277    FFB5 39974000   PUSH DWORD PTR SS:[EBP+409739]
004AE27D    E8 B8090000     CALL 222.004AEC3A
004AE282    5A              POP EDX
004AE283    5F              POP EDI
004AE284    8D85 E4914000   LEA EAX,DWORD PTR SS:[EBP+4091E4]
004AE28A    50              PUSH EAX
004AE28B    64:67:FF36 0000 PUSH DWORD PTR FS:[0]
004AE291    64:67:8926 0000 MOV DWORD PTR FS:[0],ESP
004AE297    52              PUSH EDX
004AE298    57              PUSH EDI
004AE299    FF95 DA904000   CALL DWORD PTR SS:[EBP+4090DA]
004AE29F    64:67:8F06 0000 POP DWORD PTR FS:[0]
004AE2A5    83C4 04         ADD ESP,4
004AE2A8    85C0            TEST EAX,EAX
004AE2AA    74 07           JE SHORT 222.004AE2B3
004AE2AC    8BC8            MOV ECX,EAX
004AE2AE    5E              POP ESI
004AE2AF    5F              POP EDI
004AE2B0  ^ EB 9B           JMP SHORT 222.004AE24D                   ; 跳回去了(那就从004AE25面跳出去这个循环)
004AE2B2    B9 E8000000     MOV ECX,0E8                              ; 这里是个陷阱,F4就挂掉(多脱几次就知道咯)

004AE2F2    5F              POP EDI                  \\回车后到这里,但是由于程序还没运行到着,那就F2下个断在F9运行(下个断免费运行过了头)在F2取消断点。F8向下走!
004AE2F3    8BB5 E2904000   MOV ESI,DWORD PTR SS:[EBP+4090E2]
004AE2F9    AD              LODS DWORD PTR DS:[ESI]
004AE2FA    83F8 FF         CMP EAX,-1
004AE2FD    74 74           JE SHORT 222.004AE373
004AE2FF    0385 E6904000   ADD EAX,DWORD PTR SS:[EBP+4090E6]
004AE305    8BD8            MOV EBX,EAX
004AE307    AD              LODS DWORD PTR DS:[ESI]
004AE308    0385 E6904000   ADD EAX,DWORD PTR SS:[EBP+4090E6]

004AE3A0   /74 72           JE SHORT 222.004AE414                    ; 和前面一样,也是一个循环。那方法一样。这里回车!
004AE3A2   |78 70           JS SHORT 222.004AE414
004AE3A4   |66:8B07         MOV AX,WORD PTR DS:[EDI]
004AE3A7   |2C E8           SUB AL,0E8
004AE3A9   |3C 01           CMP AL,1
004AE3AB   |76 38           JBE SHORT 222.004AE3E5
004AE3AD   |66:3D 1725      CMP AX,2517
004AE3B1   |74 51           JE SHORT 222.004AE404
004AE3B3   |3C 27           CMP AL,27
004AE3B5   |75 0A           JNZ SHORT 222.004AE3C1
004AE3B7   |80FC 80         CMP AH,80
004AE3BA   |72 05           JB SHORT 222.004AE3C1
004AE3BC   |80FC 8F         CMP AH,8F
004AE3BF   |76 05           JBE SHORT 222.004AE3C6
004AE3C1   |47              INC EDI
004AE3C2   |43              INC EBX
004AE3C3  ^|EB DA           JMP SHORT 222.004AE39F                   ; 往回跳。
004AE3C5   |B8 8B47023C     MOV EAX,3C02478B                         ; 陷阱!别按F4

004AE414    5F              POP EDI                                  ; 回车后到这里,F2下个断  F9运行 在F2取消断点。F8向下走!
004AE415    59              POP ECX
004AE416    33C0            XOR EAX,EAX
004AE418    85C9            TEST ECX,ECX
004AE41A    74 3B           JE SHORT 222.004AE457
004AE41C    8BF7            MOV ESI,EDI
004AE41E    33C0            XOR EAX,EAX
004AE420    83F9 04         CMP ECX,4
004AE423    72 32           JB SHORT 222.004AE457
004AE425    87DB            XCHG EBX,EBX

004AE442    83F9 04         CMP ECX,4
004AE445  ^ 73 E8           JNB SHORT 222.004AE42F                   ; 回跳!
004AE447    BA 04000000     MOV EDX,4                                ; F4 运行到这里
004AE44C    2BD1            SUB EDX,ECX
004AE44E    2BF2            SUB ESI,EDX
004AE450    B9 04000000     MOV ECX,4
004AE455  ^ EB D8           JMP SHORT 222.004AE42F                   ; 回跳!
004AE457    3B85 67974000   CMP EAX,DWORD PTR SS:[EBP+409767]        ; F4 运行到这里
004AE45D    74 4D           JE SHORT 222.004AE4AC
004AE45F  ^ E9 4FFEFFFF     JMP 222.004AE2B3
004AE464    D5 E2           AAD 0E2

004AE523    80BD 6B9F4000 C>CMP BYTE PTR SS:[EBP+409F6B],0C3
004AE52A    74 22           JE SHORT 222.004AE54E
004AE52C    8D95 6BA14000   LEA EDX,DWORD PTR SS:[EBP+40A16B]
004AE532    6A 40           PUSH 40
004AE534    52              PUSH EDX
004AE535    FFB5 3D974000   PUSH DWORD PTR SS:[EBP+40973D]
004AE53B    FFB5 39974000   PUSH DWORD PTR SS:[EBP+409739]
004AE541    E8 F40A0000     CALL 222.004AF03A
004AE546    85C0            TEST EAX,EAX
004AE548  ^ 0F85 9DFDFFFF   JNZ 222.004AE2EB
004AE54E    61              POPAD          \\连续F8几次 看到这个。知道是什么吗?出口点哦!在来几下F8结束脱壳吧!
004AE54F    9D              POPFD
004AE550    50              PUSH EAX
004AE551    68 15F54100     PUSH 222.0041F515
004AE556    C2 0400         RETN 4          \\这里就是跨断的地方!

0041F515    55              PUSH EBP         \\跳出壳,保存!
0041F516    8BEC            MOV EBP,ESP
0041F518    6A FF           PUSH -1
0041F51A    68 80F34300     PUSH 222.0043F380
0041F51F    68 503D4200     PUSH 222.00423D50
0041F524    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
0041F52A    50              PUSH EAX
0041F52B    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0041F532    83EC 58         SUB ESP,58
0041F535    53              PUSH EBX
0041F536    56              PUSH ESI
0041F537    57              PUSH EDI
0041F538    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP
0041F53B    FF15 70C24300   CALL DWORD PTR DS:[43C270]               ; KERNEL32.GetVersion
0041F541    33D2            XOR EDX,EDX
0041F543    8AD4            MOV DL,AH
0041F545    8915 F80D4500   MOV DWORD PTR DS:[450DF8],EDX
0041F54B    8BC8            MOV ECX,EAX
0041F54D    81E1 FF000000   AND ECX,0FF
0041F553    890D F40D4500   MOV DWORD PTR DS:[450DF4],ECX

脱壳后正常运行!
为Microsoft Visual C++ 6.0编写。
总结:这个壳不是很难,只是多脱了几次知道了其中的死循环,跳出去就没事了。
该软件其实是另一个壳,研究了半天也不知道改怎么写脱文,所以就给他换了件衣服,给我们入门的朋友练手!

脱文5.
加了壳的记事本
穿的是:ASPack 2.11 -> Alexey Solodovnikov
给新手练习用!

0040D001 >  60              PUSHAD              \\ASPack 2.11的标志,F8走
0040D002    E9 3D040000     JMP NOTEPAD.0040D444
0040D007    45              INC EBP
0040D008  - 71 8C           JNO SHORT NOTEPAD.0040CF96
0040D00A    E7 5D           OUT 5D,EAX                               ; I/O 命令
0040D00C    37              AAA
0040D00D    89A2 8D85CCE7   MOV DWORD PTR DS:[EDX+E7CC858D],ESP

0040D444    81DD 719D2555   SBB EBP,55259D71
0040D44A    E8 14000000     CALL NOTEPAD.0040D463         \\F7跟入,F8会飞的。
0040D44F    47              INC EDI
0040D450    DA7C6B E1       FIDIVR DWORD PTR DS:[EBX+EBP*2-1F]
0040D454    43              INC EBX

0040D516    81EE 02000000   SUB ESI,2
0040D51C    0FBFFA          MOVSX EDI,DX
0040D51F    B2 9B           MOV DL,9B
0040D521    81FB D1812D0F   CMP EBX,0F2D81D1
0040D527  ^ 0F85 C4FFFFFF   JNZ NOTEPAD.0040D4F1
0040D52D    66:8BD5         MOV DX,BP
0040D530    81D9 4192AA90   SBB ECX,90AA9241
0040D536  ^ E9 00FFFFFF     JMP NOTEPAD.0040D43B       \\这里是往回跳的,ASP一部分壳 有的JMP必须回跳
0040D53B    A9 55C3500F     TEST EAX,0F50C355           \\如果运行到这里就死了

0040D43B  ^\E9 C7FBFFFF     JMP NOTEPAD.0040D007          \\断在这里 F8回跳
0040D440    0000            ADD BYTE PTR DS:[EAX],AL        
0040D442    0000            ADD BYTE PTR DS:[EAX],AL
0040D444    81DD 719D2555   SBB EBP,55259D71
0040D44A    E8 14000000     CALL NOTEPAD.0040D463
0040D44F    47              INC EDI
0040D450    DA7C6B E1       FIDIVR DWORD PTR DS:[EBX+EBP*2-1F]
0040D454    43              INC EBX
0040D455    C547 33         LDS EAX,FWORD PTR DS:[EDI+33]            ; 段寄存器更改

接着就是很长的一段路  遇到回跳就在
下一行F4 途中没有任何异常,常规处理。

0040D3A2    0BC9            OR ECX,ECX
0040D3A4    8985 E63C4400   MOV DWORD PTR SS:[EBP+443CE6],EAX
0040D3AA    61              POPAD       \\最后出现出口标志
0040D3AB    75 08           JNZ SHORT NOTEPAD.0040D3B5
0040D3AD    B8 01000000     MOV EAX,1
0040D3B2    C2 0C00         RETN 0C            
0040D3B5    68 CC104000     PUSH NOTEPAD.004010CC      \\指向出口地址
0040D3BA    C3              RETN

004010CC    55              PUSH EBP                   \\记事本的出口地址
004010CD    8BEC            MOV EBP,ESP
004010CF    83EC 44         SUB ESP,44
004010D2    56              PUSH ESI
004010D3    FF15 E4634000   CALL DWORD PTR DS:[4063E4]               ; kernel32.GetCommandLineA
004010D9    8BF0            MOV ESI,EAX
004010DB    8A00            MOV AL,BYTE PTR DS:[EAX]
004010DD    3C 22           CMP AL,22
004010DF    75 1B           JNZ SHORT NOTEPAD.004010FC
004010E1    56              PUSH ESI
004010E2    FF15 F4644000   CALL DWORD PTR DS:[4064F4]               ; USER32.CharNextA
004010E8    8BF0            MOV ESI,EAX
004010EA    8A00            MOV AL,BYTE PTR DS:[EAX]
004010EC    84C0            TEST AL,AL
004010EE    74 04           JE SHORT NOTEPAD.004010F4
004010F0    3C 22           CMP AL,22
004010F2  ^ 75 ED           JNZ SHORT NOTEPAD.004010E1
004010F4    803E 22         CMP BYTE PTR DS:[ESI],22
004010F7    75 15           JNZ SHORT NOTEPAD.0040110E
004010F9    46              INC ESI
004010FA    EB 12           JMP SHORT NOTEPAD.0040110E
004010FC    3C 20           CMP AL,20

脱完后正常运行,不用修复!
总结:ASPack 2.11的壳注意几个CALL 和 回跳!

哎:别说我半夜三更的没事做啊!只是少休息会,拿来学东西罢了!
以上有很多 不足,不对之处,请大虾指出。加以改正!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看来是刚学会脱壳,精神可佳....
2006-7-6 08:55
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
脱文1的Arm可以用FI查壳为:
MEW v1.1SE {aplib} Northfox//HCC
但我也不知道这个是什么壳.
2006-7-6 10:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
软件名arm。。。

armdillo///.........

no/.
2006-7-6 10:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
脱文1的壳用单步就可以搞定
2006-7-6 10:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习!
2006-7-7 15:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
适合新手学习!!!
2006-7-26 11:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
跳转下面有个call时,为什么不能用F4跳到call那里,而要跳到下一步呢?
还有在一个跳转处按回车和按F8有什么不同?
2006-7-29 10:07
0
游客
登录 | 注册 方可回帖
返回
//