安全中国首页 > 文章中心 > 脱壳技术
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

Upx之enablewebcompiler1.0 去除Crc校验(图)

更新时间:2008-5-17 0:09:51
责任编辑:流火
热 点:
【破文标题】 Upx之enablewebcompiler1.0 去除Crc校验

【脱文作者】 weiyi75[Dfcg]

【作者邮箱】 weiyi75@sohu.com

【作者主页】 Dfcg官方大本营 ---   http://www.chinadfcg.com/

【使用工具】 Fi3.01,Upxshell,olldbg1.10b

【脱壳平台】 Win2K/Xp

【软件名称】 enablewebcompiler

【下载地址】 本地下载

【软件简介】 普通Upx壳,Crc脱壳校验。

【软件大小】 76.5k

【加壳方式】 UPX V1.20

【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)



--------------------------------------------------------------------------------

【脱壳内容】

Fi查壳,为Upx V1.20。用Upxshell干净完美脱壳,运行程序提示Crc校验错误,请重装软件。

本来很简单的一个问题,搞了半天。

先从麻烦入手吧,软件Crc校验,当然和GetfileSize有关。

命令行 bp GetFileSize  F9运行。

77E68854 >  55              PUSH EBP  //中断,这里是系统领空,我们要返回到程序领空才能爆破或者修改Z标志。不能简单的Ctrl+F9或Alt+F9返回用户代码。
77E68855    8BEC            MOV EBP,ESP
77E68857    51              PUSH ECX
77E68858    51              PUSH ECX
77E68859    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
77E6885C    50              PUSH EAX
77E6885D    FF75 08         PUSH DWORD PTR SS:[EBP+8]
77E68860    E8 24000000     CALL KERNEL32.GetFileSizeEx
77E68865    85C0            TEST EAX,EAX
77E68867    0F84 D3690200   JE KERNEL32.77E8F240
77E6886D    8B45 0C         MOV EAX,DWORD PTR SS:[EBP+C]
77E68870    85C0            TEST EAX,EAX
77E68872  ^ 0F85 B5E6FFFF   JNZ KERNEL32.77E66F2D
77E68878    837D F8 FF      CMP DWORD PTR SS:[EBP-8],-1
77E6887C    0F84 B2690200   JE KERNEL32.77E8F234
77E68882    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
77E68885    C9              LEAVE
77E68886    C2 0800         RETN 8
..........................................................

取消断点,Alt+M打开内存镜像。

内存镜像,项目 13
地址=0043A000  //这次要对data段下内存访问断点。
大小=00004000 (16384.)
Owner=enablewe 00400000
区段=.data
包含=data
类型=Imag 01001002
访问=R
初始访问=RWE

00420912   .  FF50 04       CALL DWORD PTR DS:[EAX+4]                ;  MSVBVM50.BASIC_CLASS_AddRef  //好,回家了,清除内存断点。Getfilesize只是取文件大小,比较过程还要往下看。
00420915   .  C745 FC 01000>MOV DWORD PTR SS:[EBP-4],1
0042091C   .  C745 FC 02000>MOV DWORD PTR SS:[EBP-4],2
00420923   .  6A FF         PUSH -1
00420925   .  FF15 00E34300 CALL DWORD PTR DS:[<&MSVBVM50.__vbaOnErr>;  MSVBVM50.__vbaOnError
0042092B   .  C745 FC 03000>MOV DWORD PTR SS:[EBP-4],3
00420932   .  E8 99420100   CALL enablewe.00434BD0
00420937   .  C745 FC 04000>MOV DWORD PTR SS:[EBP-4],4
0042093E   .  E8 1D160100   CALL enablewe.00431F60  //经过这个Call,Crc校验错误。
....................................................................

Vb语言特点是容易入手,但代码效率实在无法恭维,垃圾代码非常多。

要找到这个Magic Jmp 还不是很容易的事。

Ctrl+F2 重启Od,直接 Ctrl+G  0042093E ,F4直接到达,F7跟进。

00431F60   $Content$nbsp; 55            PUSH EBP  //跟进后,代码实在太多,Ctrl+F8让Od帮我们减一点负担。一段眼花缭乱后,转标签1
00431F61   .  8BEC          MOV EBP,ESP
00431F63   .  83EC 18       SUB ESP,18
00431F66   .  68 261D4000   PUSH <JMP.&MSVBVM50.__vbaExceptHandler>  ;  SE handler installation
00431F6B   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00431F71   .  50            PUSH EAX
00431F72   .  64:8925 00000>MOV DWORD PTR FS:[0],ESP
00431F79   .  B8 58110000   MOV EAX,1158
00431F7E   .  E8 9DFDFCFF   CALL <JMP.&MSVBVM50.__vbaChkstk>
00431F83   .  53            PUSH EBX
00431F84   .  56            PUSH ESI
00431F85   .  57            PUSH EDI
00431F86   .  8965 E8       MOV DWORD PTR SS:[EBP-18],ESP
00431F89   .  C745 EC 501A4>MOV DWORD PTR SS:[EBP-14],enablewe.00401>
00431F90   .  C745 F0 00000>MOV DWORD PTR SS:[EBP-10],0
00431F97   .  C745 F4 00000>MOV DWORD PTR SS:[EBP-C],0
00431F9E   .  C745 FC 01000>MOV DWORD PTR SS:[EBP-4],1
00431FA5   .  C745 FC 02000>MOV DWORD PTR SS:[EBP-4],2
00431FAC   .  6A FF         PUSH -1
00431FAE   .  FF15 00E34300 CALL DWORD PTR DS:[<&MSVBVM50.__vbaOnErr>;  MSVBVM50.__vbaOnError
00431FB4   .  C745 FC 03000>MOV DWORD PTR SS:[EBP-4],3
00431FBB   .  833D CCAA4300>CMP DWORD PTR DS:[43AACC],0
00431FC2   .  75 1C         JNZ SHORT enablewe.00431FE0
00431FC4   .  68 CCAA4300   PUSH enablewe.0043AACC
00431FC9   .  68 2C674000   PUSH enablewe.0040672C
00431FCE   .  FF15 14E44300 CALL DWORD PTR DS:[<&MSVBVM50.__vbaNew2>>;  MSVBVM50.__vbaNew2
00431FD4   .  C785 D4EEFFFF>MOV DWORD PTR SS:[EBP-112C],enablewe.004>
00431FDE   .  EB 0A         JMP SHORT enablewe.00431FEA
...................................................................

标签1,向上找Magic Jmp 吧,再转标签2

004341D2   .  FF15 08E34300 CALL DWORD PTR DS:[<&MSVBVM50.#595>]     ;  MSVBVM50.rtcMsgBox
004341D8   .  8D85 D8FDFFFF LEA EAX,DWORD PTR SS:[EBP-228]
004341DE   .  50            PUSH EAX
004341DF   .  8D8D E8FDFFFF LEA ECX,DWORD PTR SS:[EBP-218]
004341E5   .  51            PUSH ECX
004341E6   .  8D95 F8FDFFFF LEA EDX,DWORD PTR SS:[EBP-208]
004341EC   .  52            PUSH EDX
004341ED   .  8D85 08FEFFFF LEA EAX,DWORD PTR SS:[EBP-1F8]
004341F3   .  50            PUSH EAX
004341F4   .  8D8D 18FEFFFF LEA ECX,DWORD PTR SS:[EBP-1E8]
004341FA   .  51            PUSH ECX
004341FB   .  8D95 28FEFFFF LEA EDX,DWORD PTR SS:[EBP-1D8]
00434201   .  52            PUSH EDX
...................................................................

标签2

00433EB4   .  FF15 34E44300 CALL DWORD PTR DS:[<&MSVBVM50.#578>]     ;  MSVBVM50.rtcFileLen
00433EBA   .  8985 A4EEFFFF MOV DWORD PTR SS:[EBP-115C],EAX
00433EC0   .  DB85 A4EEFFFF FILD DWORD PTR SS:[EBP-115C]
00433EC6   .  DD9D 9CEEFFFF FSTP QWORD PTR SS:[EBP-1164]
00433ECC   .  DD85 10EFFFFF FLD QWORD PTR SS:[EBP-10F0]
00433ED2   .  FF15 24E34300 CALL DWORD PTR DS:[<&MSVBVM50.__vbaFpR8>>;  MSVBVM50.__vbaFpR8
00433ED8   .  DC9D 9CEEFFFF FCOMP QWORD PTR SS:[EBP-1164]
00433EDE   .  DFE0          FSTSW AX
00433EE0   .  F6C4 01       TEST AH,1
00433EE3   .  74 0C         JE SHORT enablewe.00433EF1
00433EE5   .  C785 98EEFFFF>MOV DWORD PTR SS:[EBP-1168],1
00433EEF   .  EB 0A         JMP SHORT enablewe.00433EFB
00433EF1   >  C785 98EEFFFF>MOV DWORD PTR SS:[EBP-1168],0
00433EFB   >  8B8D 98EEFFFF MOV ECX,DWORD PTR SS:[EBP-1168]
00433F01   .  F7D9          NEG ECX
00433F03   .  0FBFD1        MOVSX EDX,CX
00433F06   .  85D2          TEST EDX,EDX
00433F08   .  0F84 33040000 JE enablewe.00434341   //找了半天就是这里,直接爆破它。

              直接修改为

00433F08     /0F85 33040000 JNZ enablewe.00434341

保存为一个文件。

00433F0E   .  C745 FC 06000>MOV DWORD PTR SS:[EBP-4],6
00433F15   .  6A 41         PUSH 41
00433F17   .  8D45 A8       LEA EAX,DWORD PTR SS:[EBP-58]
00433F1A   .  50            PUSH EAX
00433F1B   .  FF15 C4E34300 CALL DWORD PTR DS:[<&MSVBVM50.#608>]     ;  MSVBVM50.rtcVarBstrFromAnsi
00433F21   .  6A 6C         PUSH 6C
00433F23   .  8D4D 98       LEA ECX,DWORD PTR SS:[EBP-68]
00433F26   .  51            PUSH ECX
00433F27   .  FF15 C4E34300 CALL DWORD PTR DS:[<&MSVBVM50.#608>]     ;  MSVBVM50.rtcVarBstrFromAnsi
00433F2D   .  6A 65         PUSH 65
00433F2F   .  8D95 78FFFFFF LEA EDX,DWORD PTR SS:[EBP-88]
00433F35   .  52            PUSH EDX
00433F36   .  FF15 C4E34300 CALL DWORD PTR DS:[<&MSVBVM50.#608>]     ;  MSVBVM50.rtcVarBstrFromAnsi
00433F3C   .  6A 72         PUSH 72
00433F3E   .  8D85 58FFFFFF LEA EAX,DWORD PTR SS:[EBP-A8]
00433F44   .  50            PUSH EAX
00433F45   .  FF15 C4E34300 CALL DWORD PTR DS:[<&MSVBVM50.#608>]     ;  MSVBVM50.rtcVarBstrFromAnsi
00433F4B   .  6A 74         PUSH 74
00433F4D   .  8D8D 38FFFFFF LEA ECX,DWORD PTR SS:[EBP-C8]
00433F53   .  51            PUSH ECX
00433F54   .  FF15 C4E34300 CALL DWORD PTR DS:[<&MSVBVM50.#608>]     ;  MSVBVM50.rtcVarBstrFromAnsi
00433F5A   .  6A 21         PUSH 21
00433F5C   .  8D95 18FFFFFF LEA EDX,DWORD PTR SS:[EBP-E8]
00433F62   .  52            PUSH EDX
00433F63   .  FF15 C4E34300 CALL DWORD PTR DS:[<&MSVBVM50.#608>]     ;  MSVBVM50.rtcVarBstrFromAnsi
00433F69   .  6A 20         PUSH 20
00433F6B   .  8D85 F8FEFFFF LEA EAX,DWORD PTR SS:[EBP-108]
00433F71   .  50            PUSH EAX
00433F72   .  FF15 C4E34300 CALL DWORD PTR DS:[<&MSVBVM50.#608>]     ;  MSVBVM50.rtcVarBstrFromAnsi
00433F78   .  6A 3A         PUSH 3A
00433F7A   .  8D8D D8FEFFFF LEA ECX,DWORD PTR SS:[EBP-128]
00433F80   .  51            PUSH ECX

1 2 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画