对PYGcrackme1.0的简单分析(适合菜鸟哦)
对PYGcrackme1.0的简单分析(适合菜鸟哦)【破文标题】对PYGcrackme1.0的简单分析
【破文作者】小儿垂钓
【作者邮箱】[email protected]
【作者主页】
【破解工具】PEiD,W32DASM,UC32,OD
【破解平台】Windows 2K&XP
【软件名称】PYGcrackme1.0
【保护方式】注册码
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
-----------------------------------------------------------------------------------------------------------------------------------------
经过在飘云阁长时间学习,学到了不少知识,感谢飘云阁所有的朋友~
经过数日的苦战,终于将PYGcrackme1.0搞定!现将过程详细写出来~~以便和大家分享破解过程的酸与甜~~~
首先,我要说明的是,我应该多谢谢菜儿,我从他的《VB断点杀手》一文获益匪浅,因为我以前总是不知道怎么找VB程序的关键注册算法部分~~~(除了明码比较以外),因为无法用字符串参考功能吗!!学习之后,我不敢怠慢,立即找到一个crackme进行了实验~~果然很灵验,至此对菜儿大师佩服的是五体投地,惊天地,泣鬼神~希望菜儿老师以后多多指点小弟,奢求之中~~
一、快速定位爆破点,爆破程序!
下断:BP __vbaFreeStr
运行程序,第一次就运行起来了,我们输入假码!
User:abcde
Sn:987654321
程序被中断
00404707 FF15 B8104000 call dword ptr ds:[<&MSVBVM60.__>; MSVBVM60.__vbaFreeStr
0040470D 8D55 B0 lea edx,dword ptr ss:
00404710 8D45 C0 lea eax,dword ptr ss:
00404713 52 push edx
00404714 50 push eax
00404715 6A 02 push 2
00404717 FFD3 call ebx
向上看看,就会找找到注册算法的开始:
004044D0 55 push ebp
004044D1 8BEC mov ebp,esp
004044D3 83EC 0C sub esp,0C
004044D6 68 F6104000 push <jmp.&MSVBVM60.__vbaExceptH>
004044DB 64:A1 00000000 mov eax,dword ptr fs:
004044E1 50 push eax
004044E2 64:8925 00000000mov dword ptr fs:,esp
004044E9 81EC C0000000 sub esp,0C0
004044EF 53 push ebx
004044F0 56 push esi
004044F1 57 push edi
004044F2 8965 F4 mov dword ptr ss:,esp
(省略部分代码)
第一次,我们粗略的跟踪程序!!
发现在00404878处,程序用msgbox函数调出错信息!“继续加油吧”
0040482E 8B3D 9C104000 mov edi,dword ptr ds:[<&MSVBVM60.__>; MSVBVM60.__vbaVarDup
00404834 BE 08000000 mov esi,8
00404839 8D95 70FFFFFF lea edx,dword ptr ss:
0040483F 8D4D B0 lea ecx,dword ptr ss:
00404842 C785 78FFFFFF E82>mov dword ptr ss:,a.004022E>
0040484C 89B5 70FFFFFF mov dword ptr ss:,esi
00404852 FFD7 call edi
00404854 8D55 80 lea edx,dword ptr ss:
00404857 8D4D C0 lea ecx,dword ptr ss:
0040485A C745 88 D4224000mov dword ptr ss:,a.004022D>
00404861 8975 80 mov dword ptr ss:,esi
00404864 FFD7 call edi
00404866 8D4D 90 lea ecx,dword ptr ss:
00404869 8D55 A0 lea edx,dword ptr ss:
0040486C 51 push ecx
0040486D 8D45 B0 lea eax,dword ptr ss:
00404870 52 push edx
00404871 50 push eax
00404872 8D4D C0 lea ecx,dword ptr ss:
00404875 6A 00 push 0
00404877 51 push ecx
00404878 FF15 30104000 call dword ptr ds:[<&MSVBVM60.#595>>; MSVBVM60.rtcMsgBox
0040487E 8D55 90 lea edx,dword ptr ss:
00404881 8D45 A0 lea eax,dword ptr ss:
00404884 52 push edx
00404885 8D4D B0 lea ecx,dword ptr ss:
00404888 50 push eax
00404889 8D55 C0 lea edx,dword ptr ss:
0040488C 51 push ecx
0040488D 52 push edx
0040488E 6A 04 push 4
我们向上看看,是从哪儿跳来的呀?
004047CA /74 62 je short a.0040482E 《————跳向错误,我们nop掉
004047CC |8B3D 9C104000mov edi,dword ptr ds:[<&MSVBVM60.__>; MSVBVM60.__vbaVarDup
004047D2 |BE 08000000 mov esi,8
004047D7 |8D95 70FFFFFF lea edx,dword ptr ss:
我们在004047CA行进行爆破~~je-jne 或者 je-nop
保存之后!我们试试看!
我输入我的邮箱作为用户名:
Xecd@163.com(其他的也可以,不要少于5位)
见图......
好了下面我们就开始我们的算法分析之旅吧~~
二、算法分析
有了上面的爆破过程,下面的算法分析也不会很难的,但是需要我们的耐心和时间~~
取用户名的 每位字符的ascii十六进制,然后相加~~~
add eax,edi
abcde
a eax=62
b 63
c 64
d 65
e 66
62+63+64+65+66=320
User:abcde
SN:320
-----------------------------------------------------------------------------------------------------------------------------------------
【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[ 本帖最后由 小儿垂钓 于 2007-1-5 15:06 编辑 ] :L 我确实是菜鸟,可不适合我啊 我也菜.需要努力 支持加油~
一起努力~
:lol:
页:
[1]