灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2643回复:0

安装时需要注册的软件破解

楼主#
更多 发布于:2011-12-19 17:58

今日破解一个在AUTO cad平台上运行的建筑类软件,通过调试跟踪,发现这个软件采用了安装注册和限制次数。
<-- articleBody start -->
  破解过程:今日破解一个在AUTO CAD平台上运行的建筑类软件,通过调试跟踪,发现这个软件采用了安装注册和限制次数。

  1、注册是在安装时进行,不同于一般安装后再注册。
  2、安装、注册次数不能大于15次,大于15次后没有任何提示拒绝运行。
  OD载入,F9运行。
  0041116B S> 55 push ebp ; 程序入口点
  0041116C 8BEC mov ebp,esp
  0041116E 6A FF push -1
  00411170 68 705D4100 push Setup.00415D70
  00411175 68 F8124100 push
  0041117A 64:A1 000000>mov eax,dword ptr fs:0
  00411180 50 push eax
  00411181 64:8925 0000>mov dword ptr fs:0,esp
  00411188 83EC 68 sub esp,68
  0041118B 53 push ebx
  0041118C 56 push esi
  0041118D 57 push edi
  0041118E 8965 E8 mov dword ptr ss:ebp-18,esp
  00411191 33DB xor ebx,ebx
  00411193 895D FC mov dword ptr ss:ebp-4,ebx
  00411196 6A 02 push 2
  00411198 FF15 7C44410>call dword ptr ds:<;MSVCRT.__set_app_>; msvcrt.__set_app_type
  ==========================================================================
  一、修改安装次数校验。
  通过跟踪,找到关键比较2处,eax里存放安装的次数,和0F进行比较,决定跳转。
  -----------------------------------------------------------------------------------------------------------
  原程序校验代码1:
  004041FB 83F8 0F cmp eax,0F ; 允许安装次数 F=15
  004041FE 0F8F 8104000>jg Setup.00404685 ; 大于/不小于等于时转移
  00404204 8D5424 28 lea edx,dword ptr ss:esp+28
  修改程序校验代码1:
  004041FB 83F8 10 cmp eax,0F ; 安装次数小于 F=15
  004041FE 0F84 8104000>je Setup.00404685 ; 修改 jg-->je
  -----------------------------------------------------------------------------------------------------------
  原程序校验代码2:
  00404B77 83F8 0F cmp eax,0F
  00404B7A 7E 49 jle short Setup.00404BC5 ; 小于等于/不大于时转移
  00404B7C 8DB7 0407000>lea esi,dword ptr ds:edi+704
  修改程序校验代码2:
  00404B77 83F8 10 cmp eax,0F
  00404B7A EB 49 jmp short Setup.00404BC5 ; 修改 je-->jmp
  =============================================================================
  二、注册码算法跟踪。
  上面解决了安装次数校验,现在可以进行注册码算法跟踪了,否则,在跟踪15次后就不能运行无法跟踪。
  通过跟踪可以看到,程序采用了浮点算法,但最后真注册码分4组在堆栈中以明码出现,完全失去了继续跟踪的兴趣,抄录如下。
  -----------------------------------------------------------------------------------------------------------
  00404D28 E8 FBBF0000 call
  00404D2D 8D4C24 28 lea ecx,dword ptr ss:esp+28 ; 真注册sn1=8961
  00404D31 C64424 40 09 mov byte ptr ss:esp+40,9
  00404D36 E8 25BE0000 call
  。。。。。。
  00404E34 E8 73BF0000 call
  00404E39 8D4C24 28 lea ecx,dword ptr ss:esp+28 ; 真注册sn2=1154
  00404E3D 885C24 40 mov byte ptr ss:esp+40,bl
  00404E41 E8 1ABD0000 call
  。。。。。。
  00404F40 E8 67BE0000 call
  00404F45 8D4C24 28 lea ecx,dword ptr ss:esp+28 ; 真注册sn3=4371
  00404F49 885C24 40 mov byte ptr ss:esp+40,bl
  00404F4D E8 0EBC0000 call
  。。。。。。
  0040504C E8 5BBD0000 call
  00405051 8D4C24 28 lea ecx,dword ptr ss:esp+28 ; 真注册sn4=8050
  00405055 885C24 40 mov byte ptr ss:esp+40,bl
  00405059 E8 02BB0000 call
  真注册=sn1+sn2+sn3+sn4=8961 1154 4371 8050 //中间用空格隔开
  ==================================================
  三、内存注册机设置。
  中断地址:00404D20 00404E39 00404F45 00405051
  次数:1
  指令:8D
  长度:4
  注册码:内存方式
  地址:ESP
  偏移:28
  指针:1
  在结尾处插入:空格1个
  =========================================================================
  破解心得:
  这个软件写的很不错,很实用。用浮点算法为加大破解难度,可最后明码在堆栈中出现是一个很大的漏洞!希望软件作者能修正。

喜欢0 评分0
游客

返回顶部