本破解仅作学习研究用,请勿用于任何不法行为,否则后果自负。
软件名称:crack456
下载:http://bbs.pediy.com/upload/2005/37/files/crack456.rar_469.rar
编码语言:VB6.0
大 小:20KB(压缩)
加密方式:注册码
使用工具:odbg110_cn,PEiD,w32dasm89cn,WinHex
破解日期:2006年1月7日
破解人:[certainheart] QQ:8108306
无壳。
其注册失败的提示字符在w32dasm89cn反编译后查找不到,用ODBG载入,检查其使用的VB6函数:
00401000 <> . 06880F66 dd MSVBVM60._CIcos
00401004 <> . 79FE0E66 dd MSVBVM60._adj_fptan
00401008 <> . 2E6B1066 dd MSVBVM60.__vbaVarMove
0040100C <> . 4CEA0F66 dd MSVBVM60.__vbaFreeVar
00401010 <> . A8BD0C66 dd MSVBVM60.__vbaEnd
00401014 <> . A2721066 dd MSVBVM60.__vbaFreeVarList
00401018 <> . 3AF70E66 dd MSVBVM60._adj_fdiv_m64
0040101C <> . C1FD0E66 dd MSVBVM60._adj_fprem1
00401020 <> . EC9C0D66 dd MSVBVM60.__vbaHresultCheckObj
00401024 <> . EEF60E66 dd MSVBVM60._adj_fdiv_m32
00401028 <> . 699A0D66 dd MSVBVM60.__vbaObjSet
0040102C <> . 86F70E66 dd MSVBVM60._adj_fdiv_m16i
00401030 <> . 86F80E66 dd MSVBVM60._adj_fdivr_m16i
00401034 <> . C5711066 dd MSVBVM60.__vbaBoolVarNull
00401038 <> . 6E890F66 dd MSVBVM60._CIsin
0040103C <> . 6A570F66 dd MSVBVM60.__vbaChkstk ; ASCII "QWP="
00401040 <> . 949A0C66 dd MSVBVM60.EVENT_SINK_AddRef
00401044 <> . BB4B0D66 dd MSVBVM60.__vbaPrintObj
00401048 <> . 76FE0E66 dd MSVBVM60._adj_fpatan
0040104C <> . A79A0C66 dd MSVBVM60.EVENT_SINK_Release
00401050 <> . 138A0F66 dd MSVBVM60._CIsqrt
00401054 <> . C9951066 dd MSVBVM60.__vbaVarAnd
00401058 <> . A5990C66 dd MSVBVM60.EVENT_SINK_QueryInterface
0040105C <> . A43C0E66 dd MSVBVM60.__vbaExceptHandler
00401060 <> . 09FB0E66 dd MSVBVM60._adj_fprem
00401064 <> . 3AF80E66 dd MSVBVM60._adj_fdivr_m64
00401068 <> . 53751066 dd MSVBVM60.__vbaFPException
0040106C <> . AB880F66 dd MSVBVM60._CIlog
00401070 <> . BAF70E66 dd MSVBVM60._adj_fdiv_m32i
00401074 <> . BAF80E66 dd MSVBVM60._adj_fdivr_m32i
00401078 <> . 0E610E66 dd MSVBVM60.__vbaStrCopy
0040107C <> . EEF70E66 dd MSVBVM60._adj_fdivr_m32
00401080 <> . 29F20E66 dd MSVBVM60._adj_fdiv_r
00401084 <> . 7C350066 dd MSVBVM60.ThunRTMain
00401088 <> . 62991066 dd MSVBVM60.__vbaVarCmpEq 《==非常可疑
0040108C <> . 40870F66 dd MSVBVM60._CIatan
00401090 <> . 6DE30E66 dd MSVBVM60._allmul
00401094 <> . C48A0F66 dd MSVBVM60._CItan
00401098 <> . 91D10E66 dd MSVBVM60._CIexp
0040109C <> . 279A0D66 dd MSVBVM60.__vbaFreeObj
004010A0 <> . B0600E66 dd MSVBVM60.__vbaFreeStr
发现其使用的可以用于比较的函数仅有
00401088 <> . 62991066 dd MSVBVM60.__vbaVarCmpEq
这样一个,于是对MSVBVM60.__vbaVarCmpEq下断点,然后单步运行,又回到程序本身的领空
0040217F . FFD7 call edi ; <&MSVBVM60.__vbaVarCmpEq>
00402181 . 50 push eax 〈==在这里返回
00402182 . 8D55 C8 lea edx,dword ptr ss:[ebp-38]
00402185 . 8D85 6CFFFFFF lea eax,dword ptr ss:[ebp-94]
0040218B . 52 push edx
0040218C . 8D4D 9C lea ecx,dword ptr ss:[ebp-64]
0040218F . 50 push eax
00402190 . 51 push ecx
00402191 . FFD7 call edi
00402193 . 8D55 8C lea edx,dword ptr ss:[ebp-74]
00402196 . 50 push eax
00402197 . 52 push edx
00402198 . FF15 54104000 call dword ptr ds:[<&MSVBVM60.__vbaVarAnd>] ; MSVBVM60.__vbaVarAnd
0040219E . 50 push eax
0040219F . FF15 34104000 call dword ptr ds:[<&MSVBVM60.__vbaBoolVarNull>] ; MSVBVM60.__vbaBoolVarNull
004021A5 . 66:85C0 test ax,ax 〈==看到这里非常可疑
004021A8 74 07 je short crack456.004021B1 〈==跳转
004021AA . 68 F8184000 push crack456.004018F8
004021AF . EB 05 jmp short crack456.004021B6
004021B1 > 68 10194000 push crack456.00401910
经反复检查,确认004021A8为关键跳转,将其代码改为jne short crack456.004021B1,爆破完毕。随意输入注册码(必须是错误的注册码)均显示‘你真棒!’。