首页
社区
课程
招聘
[原创]][第四回]CrackMe破解提交
2009-9-10 17:17 4070

[原创]][第四回]CrackMe破解提交

2009-9-10 17:17
4070
对于这个VB的程序,可以通过 VB 的反汇编的过程得到关键算法的位置

004026FC    .  816C24 04 43000000      SUB DWORD PTR SS:[ESP+4],43
00402704    .  E9 BB000000             JMP 1.004027C4  
关键算法的位置:00402704   
-----------------------------------
接着来到这里:
004027C4    > \55                      PUSH EBP
004027C5    .  8BEC                    MOV EBP,ESP
004027C7    .  83EC 14                 SUB ESP,14
004027CA    .  68 66114000             PUSH <JMP.&MSVBVM60.__vbaExceptHandler>         ;  SE handler installation
004027CF    .  64:A1 00000000          MOV EAX,DWORD PTR FS:[0]
004027D5    .  50                      PUSH EAX
-------------------------------
之后是对是否输入对程序框中的内容进行校验,如果没有就完了。。。
00402910    .  3BC6                    CMP EAX,ESI
00402912    .  7D 11                   JGE SHORT 1.00402925
00402914    .  68 A0000000             PUSH 0A0
00402919    .  68 341B4000             PUSH 1.00401B34
0040291E    .  53                      PUSH EBX
0040291F    .  50                      PUSH EAX
00402920    .  E8 37E9FFFF             CALL <JMP.&MSVBVM60.__vbaHresultCheckObj>
---------------------------------
读入了name:
0040293A    .  E8 11E9FFFF             CALL <JMP.&MSVBVM60.#712>
0040293F    .  8BD0                    MOV EDX,EAX
00402941    .  8D8D 30FFFFFF           LEA ECX,DWORD PTR SS:[EBP-D0]
---------------------------------

之后就是一段漫长的过程。。。

004030A6    .  E8 8DE1FFFF             CALL <JMP.&MSVBVM60.__vbaFreeObj>
004030AB    .  8D45 D4                 LEA EAX,DWORD PTR SS:[EBP-2C]
004030AE    .  50                      PUSH EAX
004030AF    .  8D45 C4                 LEA EAX,DWORD PTR SS:[EBP-3C]
004030B2    .  50                      PUSH EAX
004030B3    .  8D85 1CFFFFFF           LEA EAX,DWORD PTR SS:[EBP-E4]
004030B9    .  50                      PUSH EAX

这是一个关键的点:
004030BA    .  E8 73E1FFFF             CALL <JMP.&MSVBVM60.__vbaVarPow>                ;  调用注册错误的

让我们进去看看:
73497704 M>  FF7424 04                 PUSH DWORD PTR SS:[ESP+4]
73497708     FF7424 0C                 PUSH DWORD PTR SS:[ESP+C]
7349770C     FF7424 14                 PUSH DWORD PTR SS:[ESP+14]
73497710     FF15 00EF4973             CALL DWORD PTR DS:[7349EF00]                    ; OLEAUT32.VarPow
73497716     85C0                      TEST EAX,EAX

73497718     EB 0C                     JMP SHORT MSVBVM60.73497726
必须要将上面的改为跳转,不然就出错了,我已经改好了。。。

7349771A     50                        PUSH EAX
7349771B     E8 D445FCFF               CALL MSVBVM60.7345BCF4
73497720     50                        PUSH EAX
73497721     E8 6069FCFF               CALL MSVBVM60.7345E086
73497726     8B4424 04                 MOV EAX,DWORD PTR SS:[ESP+4]

之后又是一段漫长 的 F8
-----------------------------------
当程序来到这一段时,也就是离成功不远了。。。

004033C2    . /74 3B                   JE SHORT 1.004033FF
004033C4    . |8D85 50FFFFFF           LEA EAX,DWORD PTR SS:[EBP-B0]
004033CA    . |50                      PUSH EAX
004033CB    . |8D85 60FFFFFF           LEA EAX,DWORD PTR SS:[EBP-A0]
004033D1    . |50                      PUSH EAX
004033D2    . |8D85 1CFFFFFF           LEA EAX,DWORD PTR SS:[EBP-E4]
004033D8    . |50                      PUSH EAX
004033D9    . |E8 54DEFFFF             CALL <JMP.&MSVBVM60.__vbaVarPow>
004033DE    . |8BD0                    MOV EDX,EAX
004033E0    . |8D8D 60FFFFFF           LEA ECX,DWORD PTR SS:[EBP-A0]
004033E6    . |E8 5FDEFFFF             CALL <JMP.&MSVBVM60.__vbaVarMove>
004033EB    . |8D85 60FFFFFF           LEA EAX,DWORD PTR SS:[EBP-A0]
004033F1    . |50                      PUSH EAX
004033F2    . |E8 38020000             CALL 1.0040362F                                 ;  调用成功的函数
004033F7    . |3BC6                    CMP EAX,ESI
004033F9    . |E9 9B000000             JMP 1.00403499

-------------------
004033F2    . |E8 38020000             CALL 1.0040362F                                 ;  调用成功的函数
就是上边的这个函数,找到他了,我们进去看看。。。
---------------------

00403B6F    .  3995 7CFFFFFF           CMP DWORD PTR SS:[EBP-84],EDX
00403B75       0F8E 9A000000           JLE 1.00403C15
这里又进行了判断,刚开始,我以为搞定了,没想到作者在这还判断了一下。。。
nop 它就可以了

00403B7B    .  B9 04000280             MOV ECX,80020004
00403B80    .  898D CCFEFFFF           MOV DWORD PTR SS:[EBP-134],ECX                  ;  MSVBVM60.73470002
00403B86    .  6A 0A                   PUSH 0A
-------------------------

00403BDD    .  57                      PUSH EDI
00403BDE    .  8D85 F4FEFFFF           LEA EAX,DWORD PTR SS:[EBP-10C]
00403BE4    .  50                      PUSH EAX
00403BE5    .  E8 18D6FFFF             CALL <JMP.&MSVBVM60.#595>
00403BEA    .  8D85 C4FEFFFF           LEA EAX,DWORD PTR SS:[EBP-13C]
00403BF0    .  50                      PUSH EAX
00403BF1    .  8D85 D4FEFFFF           LEA EAX,DWORD PTR SS:[EBP-12C]

00403BE5    .  E8 18D6FFFF             CALL <JMP.&MSVBVM60.#595>
成功了。。。。

由于上了一个下午的课,现在才把破文发上,可惜还是爆破的。。。

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
hawking 12 2009-9-14 23:24
2
0
时长:317Min
得分:39.42
游客
登录 | 注册 方可回帖
返回