- UID
- 3908
注册时间2005-10-22
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
《家庭理财ver:1.3.3》重启验证
【破文标题】《家庭理财ver:1.3.3》重启验证
【破文作者】Iceman
【破解工具】OD
【破解平台】XP
【软件名称】家庭理财ver:1.3.3
【原版下载】http://www4.skycn.com/soft/22911.html
【破解声明】我是一只菜菜鸟,偶得一点心得,愿与大家分享 ^_^
============================================================================================
【破解过程】
一、查壳 无壳 Microsoft Visual Basic 5.0 / 6.0编写
二、注册软件,“您好,感谢您的大力支持!按【确定】后请重新登录本软件!”
这个说明,不是直接验证注册码。
注册名:Iceman 注册码:1111 2222 3333 4444
三、软件重启时,应该有比较注册码的地方,在命令行运行“bp __vbaStrCmp”。这是一个VB程序比较字符的函数。
运行“bp __vbaStrCmp”,后,F9运行。程序中断下来
660E8A03 M> FF7424 08 push dword ptr ss:[esp+8] //中断在这里。
660E8A07 FF7424 08 push dword ptr ss:[esp+8]
660E8A0B 6A 00 push 0
660E8A0D E8 B426F3FF call MSVBVM60.__vbaStrComp
这时,不应该理会这个中断,因为它还没到软件比较注册码的地方。这个软件,得选择家庭名称后,才验证注册码,我在这里,也浪费了不少时间。。。。。。。。。
按几次F9后,来到用户登录界面,选择一个家庭登录,程序又被中断了。嘿嘿,关键地方到了。注册码逃不出我们的手掌心了。
660E8A03 M> FF7424 08 push dword ptr ss:[esp+8] //还是停在这里,因为刚才下的那个断点
660E8A07 FF7424 08 push dword ptr ss:[esp+8] //看到ECX里,UNICODE“Iceman”,用户名
660E8A0B 6A 00 push 0
660E8A12 C2 0800 retn 8 //返回
00591AD6 . FF15 18114000 call dword ptr ds:[<&MSVBVM60.__vb>; MSVBVM60.__vbaStrCmp //下断的API函数
00591ADC . 85C0 test eax,eax //来到这里。一路按F8
00591ADE . 75 0A jnz short PFin.00591AEA
00591AE0 . BA 64744400 mov edx,PFin.00447464
00591AE5 . 8D4D DC lea ecx,dword ptr ss:[ebp-24]
00591AE8 . FFD7 call edi ; <&MSVBVM60.__vbaStrCopy>
00591AEA > E8 B1370A00 call PFin.006352A0
00591AEF . 8BD0 mov edx,eax
00591AF1 . 8D4D D8 lea ecx,dword ptr ss:[ebp-28]
00591AF4 . FFD6 call esi
00591AF6 . 68 80744400 push PFin.00447480 ; UNICODE "Txt='"
00591AFB . 8D55 D8 lea edx,dword ptr ss:[ebp-28]
00591AFE . 52 push edx
00591AFF . 8D45 DC lea eax,dword ptr ss:[ebp-24]
00591B02 . 50 push eax
00591B03 . E8 C83B0A00 call PFin.006356D0 //产生一个16位的,UNICODE码,应该是注册码了
00591B08 . 8BD0 mov edx,eax 和我们的注册码一样长。继续跟下去。
00591B0A . 8D4D D4 lea ecx,dword ptr ss:[ebp-2C] “WSQS3VQX[R0PSQ[Z”
00591B0D . FFD6 call esi
00591B0F . 50 push eax
00591B10 . FF15 70104000 call dword ptr ds:[<&MSVBVM60.__vb>; MSVBVM60.__vbaStrCat
00591B16 . 8BD0 mov edx,eax
00591B18 . 8D4D D0 lea ecx,dword ptr ss:[ebp-30]
00591B1B . FFD6 call esi
00591B1D . 50 push eax
00591B1E . 68 F4744400 push PFin.004474F4
00591B23 . FF15 70104000 call dword ptr ds:[<&MSVBVM60.__vb>; MSVBVM60.__vbaStrCat
00591B29 . 8BD0 mov edx,eax
00591B2B . 8D4D C8 lea ecx,dword ptr ss:[ebp-38]
00591B2E . FFD6 call esi
00591B30 . BA 6C744400 mov edx,PFin.0044746C ; UNICODE "Memory"
00591B35 . 8D4D CC lea ecx,dword ptr ss:[ebp-34]
00591B38 . FFD7 call edi
00591B3A . 8D4D C8 lea ecx,dword ptr ss:[ebp-38]
00591B3D . 51 push ecx
00591B3E . 8D55 CC lea edx,dword ptr ss:[ebp-34]
00591B41 . 52 push edx
00591B42 . E8 F9A00000 call PFin.0059BC40 //F8,过这里后,又一次停下来
如果F7进去,会看到有一些SQL语句
660E8A03 M> FF7424 08 push dword ptr ss:[esp+8] //EAX中,看到那个16位的UNICODE 停在这
660E8A07 FF7424 08 push dword ptr ss:[esp+8]
660E8A0B 6A 00 push 0
660E8A0D E8 B426F3FF call MSVBVM60.__vbaStrComp
660E8A12 C2 0800 retn 8
如果再跟下去,会发现,有很多SQL查询语句,从MENORY中查询
按我的理解,程序重启后,会在内存中,做注册码比较,如果比较结果相等,那么软件注册成功。
我也不清楚,这观点是否正确,毕竟,我汇编不是很懂。
关闭OD,试注册
用户名:Iceman WSQS3VQX[R0PSQ[Z,做为注册码试下。注册成功
------------------------------------------------------------------------
【破解总结】破解这个软件,只要知道下哪个断点,很快就能破解。学习破解,学习到一定程度,就会觉得API函数很重要。
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢! |
|