呱叽呱叽的CrackME -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    标 题: 呱叽呱叽的CrackME

    发信人: 呱叽呱叽

    时 间:2003/01/12 10:54pm

    详细信息:

    CrackME

    编译语言:VB6

    壳:考虑到写给我一样的菜鸟没加

    工具:W32Dasm Trw2000

    前几天看了一下看雪老师的 Crack Tutorial中关于VB6的分析 msvbvm60!__vbavartsteq可以比较字符串(Variant型)于是联想到上次我写的CrackMe还没有动态分析出注册码,

呱叽呱叽的CrackME

。开工。既然是我写的CrackMe我当然知道我的变量定义的就是变体型了。那么首先我们已经找到程序比较的入口点了。

    用W32Dasm打开程序浏览一下程序调用的所有函数,果真有msvbvm60!__vbavartsteq 双击进入

    :0040258D 89B578FFFFFF mov dword ptr [ebp+FFFFFF78] esi

    :00402593 C78564FFFFFF08800000 mov dword ptr [ebp+FFFFFF64] 00008008

    * Reference To: MSVBVM60.__vbaVarTstEq Ord:0000h<<-------------------睁大眼睛,就在这了

    |

    :0040259D FF1548104000 Call dword ptr [00401048]<<---------这里很可疑,进去看看

    :004025A3 8D8D74FFFFFF lea ecx dword ptr [ebp+FFFFFF74]  注意要用Trw2000分析啊!

    :004025A9 8BD8 mov ebx eax

    * Reference To: MSVBVM60.__vbaFreeObj Ord:0000h

    |

    :004025AB FF15B0104000 Call dword ptr [004010B0]

    :004025B1 8D8D64FFFFFF lea ecx dword ptr [ebp+FFFFFF64]

    * Reference To: MSVBVM60.__vbaFreeVar Ord:0000h

    |

    :004025B7 FF150C104000 Call dword ptr [0040100C]

    :004025BD B904000280 mov ecx 80020004

    :004025C2 B80A000000 mov eax 0000000A

    :004025C7 663BDE cmp bx si

    :004025CA 898D3CFFFFFF mov dword ptr [ebp+FFFFFF3C] ecx

    :004025D0 898534FFFFFF mov dword ptr [ebp+FFFFFF34] eax

    :004025D6 898D4CFFFFFF mov dword ptr [ebp+FFFFFF4C] ecx

    :004025DC 898544FFFFFF mov dword ptr [ebp+FFFFFF44] eax

    :004025E2 0F84AC000000 je 00402694

    * Reference To: MSVBVM60.__vbaVarDup Ord:0000h

    |

    :004025E8 8B1D94104000 mov ebx dword ptr [00401094]

    :004025EE 8D9514FFFFFF lea edx dword ptr [ebp+FFFFFF14]

    :004025F4 8D8D54FFFFFF lea ecx dword ptr [ebp+FFFFFF54]

    * Possible StringData Ref from Code Obj ->"by lovemelovemydogs "

    在 0040259D 按F8进入,再按大概三次F8来到

    6610ABCE   FF7424 08 PUSH DWORD PTR SS:[ESP+8]

    6610ABD2 FF7424 08 PUSH DWORD PTR SS:[ESP+8]

    6610ABD6 6A 00 PUSH 0

    6610ABD8 E8 3A54FFFF CALL MSVBVM60.66100017<<--------------这里还有一个CALL进去看看

    6610ABDD 8B0485 D4F7026>MOV EAXDWORD PTR DS:[EAX*4+6602F7D>

    6610ABE4 C2 0800 RETN 8

    6610ABE7   FF7424 08 PUSH DWORD PTR SS:[ESP+8]

    6610ABEB FF7424 08 PUSH DWORD PTR SS:[ESP+8]

    6610ABEF 6A 00 PUSH 0

    6610ABF1 E8 2154FFFF CALL MSVBVM60.66100017

    6610ABF6 8B0485 F4F7026>MOV EAXDWORD PTR DS:[EAX*4+6602F7F>

    6610ABFD C2 0800 RETN 8

    6610AC00   FF7424 08 PUSH DWORD PTR SS:[ESP+8]

    进入6610ABD8 E8 3A54FFFF CALL MSVBVM60.66100017

    来到

    66100017 55 PUSH EBP

    66100018 8BEC MOV EBPESP

    6610001A 83EC 38 SUB ESP38

    6610001D 8B55 10 MOV EDXDWORD PTR SS:[EBP+10]

    66100020 8B4D 0C MOV ECXDWORD PTR SS:[EBP+C]

    66100023 53 PUSH EBX

    66100024 56 PUSH ESI

    66100025 66:8B31 MOV SIWORD PTR DS:[ECX]

    66100028 57 PUSH EDI

    66100029 66:8B3A MOV DIWORD PTR DS:[EDX]

    6610002C B8 FF7F0000 MOV EAX7FFF

    66100031 23F8 AND EDIEAX

    66100033 23F0 AND ESIEAX

    66100035 66:83FF 09 CMP DI9

    66100039 0F84 D3770000 JE MSVBVM60.66107812

    6610003F 66:83FE 09 CMP SI9

    66100043 0F84 C9770000 JE MSVBVM60.66107812

    66100049 0FB745 08 MOVZX EAXWORD PTR SS:[EBP+8]

    6610004D 68 01000300 PUSH 30001

    66100052 50 PUSH EAX

    66100053 51 PUSH ECX

    66100054 52 PUSH EDX

    66100055 FF15 60FE1066 CALL DWORD PTR DS:[6610FE60] ; OLEAUT32.VarCmp

    6610005B 8945 08 MOV DWORD PTR SS:[EBP+8]EAX

    6610005E 8B75 08 MOV ESIDWORD PTR SS:[EBP+8]

    66100061 85F6 TEST ESIESI

    66100063 0F8C E9780000 JL MSVBVM60.66107952

    66100069 8D46 FF LEA EAXDWORD PTR DS:[ESI-1]

    6610006C 5F POP EDI

    6610006D 5E POP ESI

    6610006E 5B POP EBX

    6610006F C9 LEAVE

    66100070 C2 0C00 RETN 0C

    看这句 66100055 FF15 60FE1066 CALL DWORD PTR DS:[6610FE60] ; OLEAUT32.VarCmp

    看雪老师说 OLEAUT32 在VB中提供了很多对VB中的Variant类型的变量进行操作的函数,主要是一系列

    VarXXX( ),看来快到核心了,

电脑资料

呱叽呱叽的CrackME》(https://www.unjs.com)。进入66100055 FF15 60FE1066 CALL DWORD PTR DS:[6610FE60]

    来到

    653BF4FE   55 PUSH EBP

    653BF4FF 8BEC MOV EBPESP

    653BF501 83EC 38 SUB ESP38

    653BF504 53 PUSH EBX

    653BF505 56 PUSH ESI

    653BF506 8B75 08 MOV ESIDWORD PTR SS:[EBP+8]

    653BF509 BB FF7FFFFF MOV EBXFFFF7FFF

    653BF50E 57 PUSH EDI

    省略部分

    653BFBB0 FF75 10 PUSH DWORD PTR SS:[EBP+10]

    653BFBB3 FF77 08 PUSH DWORD PTR DS:[EDI+8]

    653BFBB6 FF76 08 PUSH DWORD PTR DS:[ESI+8]

    653BFBB9 E8 5F080000 CALL OLEAUT32.VarBstrCmp<<------Crack Tutorial中介绍可以使用

    653BFBBE ^E9 0DFAFFFF JMP OLEAUT32.653BF5D0      VarBstrCmp( )比较字符串

    653BFBC3 8B76 08 MOV ESIDWORD PTR DS:[ESI+8]

    653BFBC6 B9 0000FF1F MOV ECX1FFF0000

    653BFBCB 8BDE MOV EBXESI

    653BFBCD B8 00000A00 MOV EAX0A0000

    653BFBD2 23D9 AND EBXECX

    653BFBD4 BA FFFF0000 MOV EDX0FFFF

    653BFBD9 3BD8 CMP EBXEAX

    当然进去了,go 看来胜利就在眼前

    653C041D 55 PUSH EBP<<-----------------首先来到这里了!!

    653C041E 8BEC MOV EBPESP

    653C0420 51 PUSH ECX

    653C0421 53 PUSH EBX

    653C0422 56 PUSH ESI

    653C0423 8B75 08 MOV ESIDWORD PTR SS:[EBP+8]

    653C0426 57 PUSH EDI

    653C0427 85F6 TEST ESIESI

    653C0429 75 4C JNZ SHORT OLEAUT32.653C0477

    653C042B 2175 FC AND DWORD PTR SS:[EBP-4]ESI

    653C042E 8B4D 0C MOV ECXDWORD PTR SS:[EBP+C]

    653C0431 85C9 TEST ECXECX<<----------------这里是比较核心了,D ECX

    653C0433 75 4A JNZ SHORT OLEAUT32.653C047F 是不是看见正确注册码和错误注册码了?

    653C0435 33DB XOR EBXEBX

    653C0437 395D FC CMP DWORD PTR SS:[EBP-4]EBX

    653C043A 8B55 FC MOV EDXDWORD PTR SS:[EBP-4]

    653C043D 72 02 JB SHORT OLEAUT32.653C0441

    按F8 大约13次来到 653C0431 85C9 TEST ECXECX

    这里是比较核心了,D ECX

    正确注册码和错误注册码都在这 Q Q 5 0 3 8 2 1 8 7

    7 8 7 8 7 8 7 8

    总结: 1 VB6中__vbavartsteq 测试变量是否相等

    2 oleaut32.dll 提供了很多对VB中的Variant类型的变量进行操作的函数主要               是一系列VarXXX( )。(具体内容见看雪的电子版教程Crack Tutorial)

    3 VB6有可能用VarBstrCmp( )比较注册码(Variant类型的变量)

    4 VB的程序真是麻烦。这是最后一条

    希望本篇分析文章能对你有所帮助!

    呱叽呱叽

    2003.1.11

    历时1小时45分

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

    Copyright©2000-2024 看雪学院(www.pediy.com) All Rights Reserved.

最新文章