飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7628|回复: 14

[原创] 另类爆破--通用量规辅助设计程序爆破实录

[复制链接]

该用户从未签到

发表于 2007-10-23 01:22:43 | 显示全部楼层 |阅读模式
【文章标题】: 另类爆破--通用量规辅助设计程序1.22爆破实录
【文章作者】: jjdg
【作者邮箱】: jjdgcrc@163.com
【软件名称】: 通用量规辅助设计程序
【下载地址】: http://reg.banma.com/Detail.aspx ... -a717-cc883d11bb0d/
【加壳方式】: UPX
【保护方式】: 壳+注册码
【使用工具】: OD
【操作平台】: XP
【软件介绍】: 可以进行普通螺纹、梯形螺纹、光滑极限、高度深度的
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
      今天上网逛的时候看见了这个程序,要价100RMB哦!一看大小才1M多,以为是个“软柿子”,本想搞个注册机,谁知道硬的很啊!只有爆破了!
  1.程序就一个文件,下载解压后,PEID查壳:UPX的!直接脱了!
  
  2.OD载入运行,直接进入程序注册,乱输个注册码,有错误提示:注册码错误,请重输!
    右键查找字符串,ASCII和UNICODE都找了,愣是找不到!郁闷!
    使用API断点插件,设置对话框断点也没有拦住!
  3.幸好还有VBExplorer!因为作者说了,这个软件是VB6的!
    所以打开VBExplorer,很容易地找到了“现在注册”那个按钮的地址:004EF8E6
  004EF8E6   > \55            PUSH EBP                                 ;  注册按钮
  在004EF8E6下断点,果然断下,一路F8向下,
  004EFC24   .  E8 FB29F1FF   CALL <JMP.&MSVBVM60.__vbaVarTstEq>       ;  进去看看
  004EFC29   .  66:85C0       TEST AX,AX
  004EFC2C   .  0F84 34020000 JE lg.004EFE66                           ;  跳了就注册失败
  反复几次测试后发现,004EFC2C跳了注册失败!不跳就注册成功!可惜程序重启又是未注册了!
  
  曾经在004EFC24这里F7进去,可最后跟了半天,EAX的值是通过一个内存变量赋值的,所以在004EFC24里面想办法这个方案失败!
  
  4.当光标停在下面这行的时候,
  004EF8E6   > \55            PUSH EBP                                 ;  注册按钮
  堆栈里面显示
     跳转来自 00405193
  于是猜测追过去看看!
  00405130   .  816C24 04 630>SUB DWORD PTR SS:[ESP+4],63
  00405138   .  E9 1B840E00   JMP lg.004ED558                          ;  直接结束
  0040513D   .  816C24 04 670>SUB DWORD PTR SS:[ESP+4],67
  00405145   .  E9 75840E00   JMP lg.004ED5BF
  0040514A   .  816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
  00405152   .  E9 EA840E00   JMP lg.004ED641
  00405157   .  816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
  0040515F      E9 D2950E00   JMP lg.004EE736                          ;  
  00405164   .  816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
  0040516C   .  E9 209F0E00   JMP lg.004EF091
  00405171   .  816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
  00405179   .  E9 EEA30E00   JMP lg.004EF56C
  0040517E   .  816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
  00405186   .  E9 04A50E00   JMP lg.004EF68F                          ;  提示注册成功
  0040518B   .  816C24 04 5F0>SUB DWORD PTR SS:[ESP+4],5F
  00405193   .  E9 4EA70E00   JMP lg.004EF8E6                          ;  注册名必须输入 !<--来到这里!
  00405198   .  816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
  004051A0   .  E9 69AE0E00   JMP lg.004F000E                          ;  提示运行错误
  004051A5   .  816C24 04 5B0>SUB DWORD PTR SS:[ESP+4],5B
  004051AD   .  E9 B9B90E00   JMP lg.004F0B6B                          ;  提示未注册
  004051B2   .  816C24 04 670>SUB DWORD PTR SS:[ESP+4],67
  004051BA   .  E9 9ABA0E00   JMP lg.004F0C59                          ;  程序直接结束
  004051BF   .  816C24 04 4B0>SUB DWORD PTR SS:[ESP+4],4B
  004051C7   .  E9 F4BA0E00   JMP lg.004F0CC0                          ;  提示对话框
  004051CC   .  816C24 04 770>SUB DWORD PTR SS:[ESP+4],77
  004051D4   .  E9 69BB0E00   JMP lg.004F0D42                          ;  提示对话框
  004051D9   .  816C24 04 370>SUB DWORD PTR SS:[ESP+4],37
  004051E1   .  E9 DEBB0E00   JMP lg.004F0DC4                          ;  提示对话框
  
  一看这里居然有这么多JMP,于是猜测其中会不会有一个直接跳向“已注册”呢?
  重启程序,逐一进行测试,没一个管用!
  
  怎么办呢?
  
  想起作者在软件介绍里面说软件有时间限制,于是把时间往后调了1年,结果一启动就弹出过期对话框,即使把时间改回去也照样跳出过期对话框,可以用rtcmsg断了下来,停在
  004EEEDD   .  E8 3037F1FF   CALL <JMP.&MSVBVM60.#595>                ;  对话框在这里
  004EEEE2   .  8D95 F4FEFFFF LEA EDX,DWORD PTR SS:[EBP-10C]
  
  好!
  开始向上找,看哪里可以跳过这个对话框呢?
  004EEE03   . /E9 FA010000   JMP lg.004EF002                          ;<--这里就可以!
  004EEE08   > |BA 6C9A4000   MOV EDX,lg.00409A6C                      ;  UNICODE "10/01/2107"
  但是,发现
  00409A6C=lg.00409A6C (UNICODE "10/01/2107")
  跳转来自 004EEBD9, 004EECA5
  
  继续!
  在004EEBD9, 004EECA5下断点,确保这2处不跳的确可以解决过期的问题,可是程序标题栏上面的(未注册)还是在那里,继续往上看,
  来到这一大段的起始处,
  004EE736   > \55            PUSH EBP                                 
  堆栈显示
  跳转来自 0040515F
  
  过去看看,
  竟然是刚刚的那一大片JMP啊! 感觉好像有门啊!
  在下面2行行断点
  00405157   .  816C24 04 FFF>SUB DWORD PTR SS:[ESP+4],0FFFF
  0040515F      E9 D2950E00   JMP lg.004EE736                          ;  注册
  重启程序,运行,程序断在0040515F,
  右下角有一行:0012F700   004EE60E  返回到 lg.004EE60E
  不错!
  右键点过去,
  004EE608   .  FF90 FC060000 CALL DWORD PTR DS:[EAX+6FC]    ;看来就是这个CALL了!
  004EE60E   .  3BC3          CMP EAX,EBX
  老办法!看看如何可以跳过这个CALL!
  
  找到下面地址
  004EE151   . /0F8D 0E050000 JGE lg.004EE665                          ;  go=ok
  004EE157   . |68 BC010000   PUSH 1BC
  004EE15C   . |68 30764000   PUSH lg.00407630
  004EE161   . |56            PUSH ESI
  004EE162   . |50            PUSH EAX
  004EE163   . |E8 6043F1FF   CALL <JMP.&MSVBVM60.__vbaHresultCheckObj>
  004EE168   . |E9 F8040000   JMP lg.004EE665                          ;  go=ok
  004EE16D   > |8B06          MOV EAX,DWORD PTR DS:[ESI]               ;注意这里啊!
  
  千万注意004EE16D啊!
  这个跳转来自另外3个地方(004EDCBB, 004EDD35, 004EDED2),它们可以绕过004EE151和004EE168从而保证程序运行到004EE608那个CALL那里!
  
  好!
  在004EDCBB, 004EDD35, 004EDED2下断点!
  
  重启运行!
  强制这3处都不跳!
  004EE151   . /0F8D 0E050000 JGE lg.004EE665   这个跳转自动实现了!
  而且是直接进入程序,最叫人兴奋的是标题栏上面的(未注册)变成了(已注册给:)
  把这3个跳转nop掉,保存一下,运行程序试试!
  OK!
  爆破成功了!
  
  下面来谈一下如何补充(已注册给:)这个括弧里面的空白问题!
  在强制注册成功的时候,如果大家仔细,肯定发现了lg.ini这个文件,打开rs文件夹里面的这个文件,会看到
  注册名=
  注册码=
  
  既然软件把注册信息保存在这里,那么运行的时候它就一定会来读它,所以,注册名=后面的内容应该就是会显示在(已注册给:)里面中的内容了!
  在注册名=后面写上jjdg,保存!(大家可以在注册名=那里写上自己的大名哦!)
  运行程序,果然,标题栏上面的信息变成了(已注册给:jjdg)
  
  到此,才能说这个程序完全爆破了!
  
--------------------------------------------------------------------------------
【经验总结】
  其实没什么好总结的!
  只是想说点感慨:破解是一个互相交流学习的过程,只有互相分享自己的发现才能进步地快!一个人走的再快,一次也只能走一步,如果2个人互相扶持,就迈出2步啊!所以,希望大家能够不藏私,热心地互相帮助指点!
  奉献得越多,收获得越多!
  jjdg
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于PYG论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年10月23日 01:17:03

[ 本帖最后由 jjdg 于 2007-10-23 01:28 编辑 ]
1.JPG
2.JPG

评分

参与人数 1飘云币 +20 收起 理由
tianxj + 20 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2007-10-23 10:07:39 | 显示全部楼层
谢谢分享,学习以下。
PYG19周年生日快乐!

该用户从未签到

发表于 2007-10-23 13:39:25 | 显示全部楼层
好文章 兄弟用心了 /:good
PYG19周年生日快乐!
  • TA的每日心情
    难过
    3 天前
  • 签到天数: 112 天

    [LV.6]常住居民II

    发表于 2007-10-23 22:52:52 | 显示全部楼层
    好文章啊,,有点看不懂啊
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-10-24 01:01:02 | 显示全部楼层
    破解是一个互相交流学习的过程,只有互相分享自己的发现才能进步地快!一个人走的再快,一次也只能走一步,如果2个人互相扶持,就迈出2步啊!


    感谢仔细学习中___
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-10-24 08:51:38 | 显示全部楼层
    说得很详细,认真学习了!
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2015-10-16 15:33
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2007-10-24 14:54:52 | 显示全部楼层
    谢谢!讲解的很详细。这样的教材,正是我等菜鸟学习的好教材啊!
    研究去了!
    PYG19周年生日快乐!
  • TA的每日心情
    擦汗
    7 小时前
  • 签到天数: 1667 天

    [LV.Master]伴坛终老

    发表于 2007-10-24 17:55:11 | 显示全部楼层
    我安装了
    不能使用
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-10-30 14:06:25 | 显示全部楼层
    学习一下,希望能看懂>
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-10-19 14:02
  • 签到天数: 240 天

    [LV.8]以坛为家I

    发表于 2007-10-31 15:49:40 | 显示全部楼层
    破解是一个互相交流学习的过程,只有互相分享自己的发现才能进步地快!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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