飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6076|回复: 1

[原创] 文件*** 爆破和做注册机的过程

[复制链接]
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2008-1-11 08:17:50 | 显示全部楼层 |阅读模式
    【破文标题】文件*** 爆破和做注册机的过程
    【破文作者】GGLHY
    破解工具】PEID看雪版、OD、W32Dasm v10.0 汉化增强版、keymake1.73.exe
    【破解平台】Winxp-sp2
    【软件名称】文件***
    【软件简介】最大限度的保护您的文件不被非法浏览,阅读,复制,更改和删除
    【破解声明】只为了解软件的保护技术、顺便看看非计算机专业的自己水平有多菜。时刻谨记:追码不为利只为艺!
    ------------------------------------------------------------------------
    【破解过程】为尊重软件作者,特将该程序名以A.EXE代替。

    1.运行A.EXE,点“帮助”--》“注册”,填入假码用户名:gglhy   注册码15987530,点确定,弹出“注册码不正确”的对话框。好,退出。

    2.PEID看雪版出马,看到“Microsoft Visual C++ 6.0”,呵呵,无壳,我喜欢。

    3。OD出马,载入,运行,呵呵,EXPLORER消失了。调出任务管理器也没看见OD的影子,看来可能是该软件在运行时有缺陷吧。不管它,请出W32Dasm v10.0 汉化增强版。

    4。W32Dasm v10.0 汉化增强版载入A.EXE,通过字符串参考,找到以下的几个信息:
    (这部分省略)
    "已经注册,您有任何问题请与作者联系:
    clientinfo"
    "億$"
    "隐藏的文件/夹在退出文件***后仍要隐藏吗?
    要?
    "隐藏文件***"
    "***"
    "找不到文件***正常启动所需的文件:
    %s"
    "这将卸载文件***,你确定吗?"
    "注册成功"
    "注册给:"
    "注册码:                        XXXXXXXXXX"
    "注册码:                        尚未注册"
    "注册码不正确"
    "注册码或用户名不能为空"
    "注册信息已经成功复制到剪贴板,请在其他编辑软件?
    (这部分省略)

    反复双击"注册码不正确",看到只有一处调用,即:00410819 ,
    反复双击"注册成功",看到也只有一处调用,  即:0041082E ,
    (这部分省略)。。。。
    ::004107F8::  E8 BBAC0100              CALL 0042B4B8                           
    ::004107FD::  83C4 0C                  ADD ESP,C                              
    ::00410800::  8D4C24 10                LEA ECX,[ESP+10]                        
    ::00410804::  8BF8                     MOV EDI,EAX                             
    ::00410806::  6A FF                    PUSH -1                     //这里估计可以作点文章的!!!      
    ::00410808::  E8 11010300              CALL 0044091E                           
    ::0041080D::  3BF7                     CMP ESI,EDI                             
    ::0041080F::  5F                       POP EDI                                 
    ::00410810::  6A 40                    PUSH 40

    *possible stringdata Ref from Data obj-> “文件***”
                                  
    ::00410812::  68 70B94600              PUSH 46B970                                 
    ::00410817::  74 15                    JE SHORT 0041082E                 //不跳就挂了,因此必须跳!

    *possible stringdata Ref from Data obj->" 注册码不正确"

    ::00410819::  68 60B94600              PUSH 46B960                                 
    ::0041081E::  8BCD                     MOV ECX,EBP                             
    ::00410820::  E8 6E1F0300              CALL 00442793                           
    ::00410825::  8BCD                     MOV ECX,EBP                             
    ::00410827::  E8 8B490300              CALL 004451B7                           
    ::0041082C::  EB 48                    JMP SHORT 00410876

    *Referenced by a (U)nconditional or (C)onditional Jump at Address:
    |:00410817(C)
    |                    
    *possible stringdata Ref from Data obj->" 注册成功"

    ::0041082E::  68 54B94600              PUSH 46B954
    (这部分省略)。。。。                           

       显然,关键跳在00410817,爆破的话,用UE改成JNE或者JMP试试。既:
       ::00410817::  74 15   改为
       ::00410817::  75 15   或
       ::00410817::  EB 15        
    另存为BP.EXE,试一下看看。
        TMD,一运行BP.EXE,弹出"文件***引擎初始化失败,请重新启动后再试"的提示,点确定后就退出了。好吧,看看KILL掉这个提示有什么情况发生?

    W32Dasm v10.0 汉化增强版载入BP.EXE,反复双击 "文件防火墙引擎初始化失败,请重新启动后再试"字符串,发现只有一处调用:
    ::00417108::  E8 73A0FEFF              CALL 00401180                           
    ::0041710D::  3BC7                     CMP EAX,EDI                             
    ::0041710F::  8985 802B0000            MOV [EBP+2B80],EAX                     
    ::00417115::  0F85 CA000000            JNZ 004171E5                          //把它改成JZ或JMP看看?
    ::0041711B::  6A 10                    PUSH 10

    *possible stringdata Ref from Data obj->“ 文件*** ”                           
    ::0041711D::  68 70B94600              PUSH 46B970                                 

    *possible stringdata Ref from Data obj->" 文件***引擎初始化失败,请重新启动后再试"

    ::00417122::  68 80C54600              PUSH 46C580                                 

    用UE把::00417115::处的 JNZ 004171E5 改成JZ看看?另存为OKBP.EXE。运行一下。呵呵,除了提示有个什么文件找不到外(后来看到是找不到对应的OKBP.DLL,才判断程序名称由A.EXE改名为BPOK.EXE后的结果,但好像不影响使用)能正常运行,输入假码注册,呵呵,居然注册成功了。退出后重新运行OKBP.EXE,点注册弹出"已经注册,您有任何问题请与作者联系:
    clientinfo"的对话框。
        爆破成功!

    爆破成功总觉得应该可以找出注册码来的。好Try it again!
    回到这里:
    (这部分省略)。。。。
    ::004107F8::  E8 BBAC0100              CALL 0042B4B8                           
    ::004107FD::  83C4 0C                  ADD ESP,C                              
    ::00410800::  8D4C24 10                LEA ECX,[ESP+10]                        
    ::00410804::  8BF8                     MOV EDI,EAX                             
    ::00410806::  6A FF                    PUSH -1                                 
    ::00410808::  E8 11010300              CALL 0044091E                           
    ::0041080D::  3BF7                     CMP ESI,EDI                             
    ::0041080F::  5F                       POP EDI                                 
    ::00410810::  6A 40                    PUSH 40

    *possible stringdata Ref from Data obj-> “文件***”
                                  
    ::00410812::  68 70B94600              PUSH 46B970                                 
    ::00410817::  74 15                    JE SHORT 0041082E                 //不跳就挂了,因此必须跳!

    *possible stringdata Ref from Data obj->" 注册码不正确"

    ::00410819::  68 60B94600              PUSH 46B960                                 
    ::0041081E::  8BCD                     MOV ECX,EBP                             
    ::00410820::  E8 6E1F0300              CALL 00442793                           
    ::00410825::  8BCD                     MOV ECX,EBP                             
    ::00410827::  E8 8B490300              CALL 004451B7                           
    ::0041082C::  EB 48                    JMP SHORT 00410876

    *Referenced by a (U)nconditional or (C)onditional Jump at Address:
    |:00410817(C)
    |                    
    *possible stringdata Ref from Data obj->" 注册成功"

    ::0041082E::  68 54B94600              PUSH 46B954
    (这部分省略)。。。。                           

    这里的::00410817::  74 15   JE SHORT 0041082E跳向了死亡,显然真码与假码的比较应该在前面完成了。那么,哪个地方进行了比较呢?

    ::00410808处的 CALL 0044091E很可疑,请出keymake1.73.exe,填入如下地址:
    中断地址:00410808
    中断次数:1
    第一字节:E8
    指令长度:5
    选择“寄存器方式----》ESI———》十进制”
    另存为CR.EXE。
        但是,为什么是ESI呢?呵呵,我是进入到::00410808处的 CALL里面,看到第一行就是
    ::0044091E::  56     PUSH ESI   
    我不选它我选谁?        
    运行CR.EXE,填入假码用户名:gglhy   注册码15987530,点注册,弹出“427862873”。退出。
    运行A.EXE,输入用户名:gglhy   注册码427862873  注册成功!

    爽!






               

    ------------------------------------------------------------------------
    【破解总结】    没管它什么算法,因为它再怎么算它最后都要给出一个判断结果,绕过这个头痛的算法,爆破是很有效的。
    呵呵,注册机完全靠自己的判断作出来的,如果不懂算法,下次可能就没这样的运气了!
    说点题外话,这个软件每次运行后我的EXPLORER就消失了,只能通过任务管理器调出来!可能是软件的功能运行的需要吧。这软件还可以的。

    ------------------------------------------------------------------------
    【版权声明】请尊重软件作者的辛勤劳动,破解只为艺不为利!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-1-11 09:17:49 | 显示全部楼层
    显然,关键跳在00410817,爆破的话,用UE改成JNE或者JMP试试。既:


    -------- /:014   笔误  ?


    00410808处的 CALL 0044091E很可疑,请出keymake1.73.exe,填入如下地址:
    中断地址:00410808
    中断次数:1
    第一字节:E8
    指令长度:5
    选择“寄存器方式----》ESI———》十进制”

    ------------- /:001 对偶来说很新鲜
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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