飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1977|回复: 1

关于第二作业快斩乱麻,两种破法,请高手指点一下我的第三种构思

[复制链接]
  • TA的每日心情
    无聊
    2022-9-12 06:24
  • 签到天数: 188 天

    [LV.7]常住居民III

    发表于 2005-9-26 10:48:10 | 显示全部楼层 |阅读模式
    破解作者】 风明月
    【作者邮箱】 ws5483@tom.com
    【作者主页】 PYG(https://www.chinapyg.com/
    【使用工具】 peid ResHacker  OD   W32
    【破解平台】 Win9x/NT/2000/XP
    【软件名称】 快刀崭乱麻
    【软件简介】 共享软件,。没有注册的有使用30天期限。
    【软件大小】 695KB
    【加壳方式】 无壳
    【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    --------------------------------------------------------------------------------
    【破解内容】


    属先peid查壳。显示为Microsoft Visual C++ 6.0编写。无壳。
    方法一;清除注册框,除除试用天数。
    打开工具ResHacker,载入文件。这时我们会发现右边的工具窗口,有些分类的文件,如DLL。EXE……
    我们用光标在这里点击文件看每个文件夹里都有些什么东西。找到我们自己想要的。当在dialog这个文件夹时。我们会发现点后面的那些数字
    会弹出一些对话框。和我们在使用软件时的一些对话框一样。当我们在209这个对话框时占击2052就会发现弹出一个我们运行软件时弹出的对话框一样。
    然后我们对着这个对话框反键点删除。确定。就会自动弹出233文件里的2052这个对话框。你会发现。这里是提示要注册软件和软件试用期的。操作一样
    删掉。然后点保存。就会在你所安装的文件夹里有两个EXE文件。这个个x-cut_original.exe的文件就是刚刚生成的。打开看看。直接就是运行时的画面了。没有注册没有
    没有提示试用期了。

    方法二:爆破。
    壳我们先前查过。所以这里就不用查了。
    W32载入程序,打开参考——串式数据参考,向下拉。我们来到“注册码不正确!”这句。双击来到代码处
    *Possible stringData Ret fron Data 0bj---*注册码不正确!“
    00401511    6858504100      push 00415058
    英文不会。只看的明白那句注册码不正确。呵呵。我们记下这里。然后关W32打开OD载入程序。反键----前住----表达,在弹出的对话框里。我们输入刚刚记下的出错的地方,
    也就是注册码不正确的地方
    00401414  |.  FF15 58044100     call dword ptr ds:[<&USER32.Kil>; \KillTimer
    0040141A  |.  8D4C24 10         lea ecx,dword ptr ss:[esp+10]
    0040141E  |.  E8 2FC00000       call <jmp.&MFC42.#540_CString::>
    00401423  |.  6A 01             push 1
    00401425  |.  B9 E85B4100       mov ecx,x-cut_or.00415BE8
    0040142A  |.  895C24 28         mov dword ptr ss:[esp+28],ebx
    0040142E  |.  E8 AFC00000       call <jmp.&MFC42.#6334_CWnd::Up>
    00401433  |.  8B0D 585C4100     mov ecx,dword ptr ds:[415C58]
    00401439  |.  BE 1E000000       mov esi,1E
    0040143E  |.  68 585C4100       push x-cut_or.00415C58
    00401443  |.  BF 01000000       mov edi,1
    00401448  |.  8B41 F8           mov eax,dword ptr ds:[ecx-8]
    0040144B  |.  8D4C24 14         lea ecx,dword ptr ss:[esp+14]
    0040144F  |.  2BF0              sub esi,eax
    00401451  |.  E8 86C00000       call <jmp.&MFC42.#858_CString::>
    00401456  |.  8B15 585C4100     mov edx,dword ptr ds:[415C58]
    0040145C  |.  8B42 F8           mov eax,dword ptr ds:[edx-8]
    0040145F  |.  83F8 1E           cmp eax,1E
    00401462  |.  7D 3A             jge short x-cut_or.0040149E
    00401464  |.  3BF3              cmp esi,ebx
    00401466  |.  7E 66             jle short x-cut_or.004014CE
    00401468  |>  68 68504100       /push x-cut_or.00415068
    0040146D  |.  8D4424 18         |lea eax,dword ptr ss:[esp+18]
    00401471  |.  68 585C4100       |push x-cut_or.00415C58
    00401476  |.  50                |push eax
    00401477  |.  E8 5AC00000       |call <jmp.&MFC42.#924_operator>
    0040147C  |.  50                |push eax
    0040147D  |.  B9 585C4100       |mov ecx,x-cut_or.00415C58
    00401482  |.  C64424 28 01      |mov byte ptr ss:[esp+28],1
    00401487  |.  E8 50C00000       |call <jmp.&MFC42.#858_CString:>
    0040148C  |.  8D4C24 14         |lea ecx,dword ptr ss:[esp+14]
    00401490  |.  885C24 24         |mov byte ptr ss:[esp+24],bl
    00401494  |.  E8 CBBF0000       |call <jmp.&MFC42.#800_CString:>
    00401499  |.  4E                |dec esi
    0040149A  |.^ 75 CC             \jnz short x-cut_or.00401468
    0040149C  |.  EB 30             jmp short x-cut_or.004014CE
    0040149E  |>  7E 2E             jle short x-cut_or.004014CE
    004014A0  |.  8D4C24 14         lea ecx,dword ptr ss:[esp+14]
    004014A4  |.  6A 1E             push 1E
    004014A6  |.  51                push ecx
    004014A7  |.  B9 585C4100       mov ecx,x-cut_or.00415C58
    004014AC  |.  E8 1FC00000       call <jmp.&MFC42.#4129_CString:>
    004014B1  |.  50                push eax
    004014B2  |.  B9 585C4100       mov ecx,x-cut_or.00415C58
    004014B7  |.  C64424 28 02      mov byte ptr ss:[esp+28],2
    004014BC  |.  E8 1BC00000       call <jmp.&MFC42.#858_CString::>
    004014C1  |.  8D4C24 14         lea ecx,dword ptr ss:[esp+14]
    004014C5  |.  885C24 24         mov byte ptr ss:[esp+24],bl
    004014C9  |.  E8 96BF0000       call <jmp.&MFC42.#800_CString::>
    004014CE  |>  55                push ebp
    004014CF  |.  8B2D 585C4100     mov ebp,dword ptr ds:[415C58]
    004014D5  |.  33C9              xor ecx,ecx
    004014D7  |>  8A0429            /mov al,byte ptr ds:[ecx+ebp]
    004014DA  |.  83E0 7F           |and eax,7F
    004014DD  |.  69C0 3B2E0800     |imul eax,eax,82E3B
    004014E3  |.  8BF0              |mov esi,eax
    004014E5  |.  B8 E10217B8       |mov eax,B81702E1
    004014EA  |.  F7EE              |imul esi
    004014EC  |.  03D6              |add edx,esi
    004014EE  |.  C1FA 06           |sar edx,6
    004014F1  |.  8BC2              |mov eax,edx
    004014F3  |.  C1E8 1F           |shr eax,1F
    004014F6  |.  03D0              |add edx,eax
    004014F8  |.  41                |inc ecx
    004014F9  |.  83F9 1E           |cmp ecx,1E
    004014FC  |.  8DBC17 7A078500   |lea edi,dword ptr ds:[edi+edx+>
    00401503  |.^ 7C D2             \jl short x-cut_or.004014D7
    00401505  |.  A1 545C4100       mov eax,dword ptr ds:[415C54]
    0040150A  |.  5D                pop ebp
    0040150B  |.  3BC7              cmp eax,edi
    0040150D  |.  74 14             je short x-cut_or.00401523           把这里je改成jnz,
    00401510  |.  53                push ebx
    00401511  |.  68 58504100       push x-cut_or.00415058        --------- 这里就是出错的地方,呵呵。我是菜鸟所以老是会把这里注解一下,
    00401516  |.  E8 AFBF0000       call <jmp.&MFC42.#1200_AfxMessa>
    0040151B  |.  393D 545C4100     cmp dword ptr ds:[415C54],edi
    00401521  |.  75 5C             jnz short x-cut_or.0040157F
    00401523  |>  8D4C24 18         lea ecx,dword ptr ss:[esp+18]
    00401527  |.  8D5424 0C         lea edx,dword ptr ss:[esp+C]
    0040152B  |.  51                push ecx                        ; /pDisposition
    我们来到00401511注册不正确的地方,向上看发现在0040150D处有一个跳转,是相等就跳到程序注册不正确下面的。不相等那么就跳转不会实现
    所以我在这里将je改成jnz不等于刚跳。然后运行。随意输入注册码。程序就运行,没有提示注册借误的对话框了。爆破成功。


    请高手们指点一下。我这个思路是否正确。请指点一下。
    方法三:只是自己构想。还未尝试。因为我不懂算法。
    根据那个相等就跳到正确地方。也就是0040150D处。我们在这里下一个断点。然后运行。在软件注册。随意的输入用户名。注册码。
    是不是会在这里断下来呢?或是向上的那些比较中。找到初比较的地方下断。然后再分析呢?呵呵。我先把这个破文写了。一会清了注册表。再来试
    试找注册码。还请高手们多多指点。
    那么肯定是不对的。是否就是在这里被断下来了呢?



    --------------------------------------------------------------------------------
    【破解总结】


    在这里我要说一下。关于ResHacker工具使用。我个人只是用来破解试用期的。对于不注册就限制一些功能的,我想因为你没有注册功能就不能用。所以用这个工具你就是去了注册框和提示。那些功能还是不能用。这只是个人认为。高手们如果对这个工具还有什么更好的使用,麻烦告诉我一下别的用处,呵呵。
    --------------------------------------------------------------------------------
    【版权声明】 本文纯属技术交流, 转载请注明作者和出处并保持文章的完整, 谢谢!
                      一切版权归PYG
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2005-9-26 21:55:54 | 显示全部楼层
    快刀斩乱麻 的算法在 PYG算法入门 中有,自己找一下~

    ResHacker 这个工具,用作DIY时,添加控件是个很好的工具!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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