CRACKME练习2(原创)

本破解仅作学习研究用,请勿用于任何不法行为,否则后果自负。
软件名称: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,爆破完毕。随意输入注册码(必须是错误的注册码)均显示‘你真棒!’。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值