飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6253|回复: 3

[原创] 对PYGcrackme1.0的简单分析(适合菜鸟哦)

[复制链接]
  • TA的每日心情

    2022-1-22 22:38
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2007-1-5 15:03:29 | 显示全部楼层 |阅读模式
    对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:[ebp-50]
    00404710    8D45 C0           lea eax,dword ptr ss:[ebp-40]
    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:[0]
    004044E1    50                push eax
    004044E2    64:8925 00000000  mov dword ptr fs:[0],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:[ebp-C],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:[ebp-90]
    0040483F      8D4D B0           lea ecx,dword ptr ss:[ebp-50]
    00404842      C785 78FFFFFF E82>mov dword ptr ss:[ebp-88],a.004022E>
    0040484C      89B5 70FFFFFF     mov dword ptr ss:[ebp-90],esi
    00404852      FFD7              call edi
    00404854      8D55 80           lea edx,dword ptr ss:[ebp-80]
    00404857      8D4D C0           lea ecx,dword ptr ss:[ebp-40]
    0040485A      C745 88 D4224000  mov dword ptr ss:[ebp-78],a.004022D>
    00404861      8975 80           mov dword ptr ss:[ebp-80],esi
    00404864      FFD7              call edi
    00404866      8D4D 90           lea ecx,dword ptr ss:[ebp-70]
    00404869      8D55 A0           lea edx,dword ptr ss:[ebp-60]
    0040486C      51                push ecx
    0040486D      8D45 B0           lea eax,dword ptr ss:[ebp-50]
    00404870      52                push edx
    00404871      50                push eax
    00404872      8D4D C0           lea ecx,dword ptr ss:[ebp-40]
    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:[ebp-70]
    00404881      8D45 A0           lea eax,dword ptr ss:[ebp-60]
    00404884      52                push edx
    00404885      8D4D B0           lea ecx,dword ptr ss:[ebp-50]
    00404888      50                push eax
    00404889      8D55 C0           lea edx,dword ptr ss:[ebp-40]
    0040488C      51                push ecx
    0040488D      52                push edx
    0040488E      6A 04             push 4

    我们向上看看,是从哪儿跳来的呀?

    004047CA     /74 62             je short a.0040482E     《————跳向错误,我们nop掉
    004047CC    |8B3D 9C104000  mov edi,dword ptr ds:[<&MSVBVM60.__>; MSVBVM60.__vbaVarDup
    004047D2     |BE 08000000       mov esi,8
    004047D7     |8D95 70FFFFFF     lea edx,dword ptr ss:[ebp-90]

    我们在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 编辑 ]
    image001.gif
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-5 17:31:51 | 显示全部楼层
    :L 我确实是菜鸟,可不适合我啊
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-5 18:23:38 | 显示全部楼层
    我也菜.需要努力
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-5-3 19:45
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2007-1-30 19:30:23 | 显示全部楼层
    支持  加油~
    一起努力~
    :lol:
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表