吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2544|回复: 40
上一主题 下一主题
收起左侧

[.NET逆向] .net程序破解实践与理解三、代码分析篇2:时间限制(写给新手,超详细)

[复制链接]
跳转到指定楼层
楼主
zhj777 发表于 2024-10-7 22:54 回帖奖励
本帖最后由 zhj777 于 2024-10-8 20:53 编辑

.net系列教程:
   .net程序的破解实践与理解一、爆力破解篇:改代码(写给新手,超详细)https://www.52pojie.cn/thread-1954009-1-1.html
  .net程序的破解实践与理解二、代码分析篇1:启动验证(写给新手,超详细)https://www.52pojie.cn/thread-1955144-1-1.html
  今天给大家带来的是第三篇:.net程序破解实践与理解三、代码分析篇:时间限制(写给新手,超详细)



  在上一篇的“代码分析篇”中,版主“爱飞的猫”提醒“文章漏掉了从序列号文字到过期时间的映射”。那这一篇咱就来聊一聊程序注册码中关于时间限制的部分。
  书接上回:程序重起后加密内容解密出来,然后把解密后的字符串切割成5段放入数组中,第三、四、五段即关于年、月、日的字符串被分别赋值给了gtyeargtmonthgtday变量。

有的小伙伴可能发现当程序走过这三行后,下面局部变量窗口中怎么没发现有这三个变量啊?而走过riht=array[0]和left=array[1]时能看到right和left里面存了第一段和第二段的字符串。


别急,我们去找到它。
在gtyear上点右键,弹出菜单,点“分析”。 
在下面分析器窗口中点读取于左边的三角。
frmMain_Load上双击
来到下面的地方,在string gtyear=RegData.gtyear;这一行下断。
点F5(继续),断下来后,点F10往下走,走过这一行后,在下面的局部变量窗口中可以看到gtyear变量被放进了“2025”,gtmonth中是“03”,gtday中是“18”,正好是前面5段字符串中的第三、四、五段。
这个年月日连起来就构成了最终的限制过期时间。
如果当前时间超过期限,则显示“本软件使用期已过。请与***联系......”。
那这个时间又是从哪来的呢?我们知道解密出来字符串
来自于mspaibzd735.dll,而这个dll文件是注册成功时建立的,dll文件中存的机器码来自注册窗口中的机器码,那时间应该来自于注册码。点停止调试,
删掉mspaibzd735.dll,点“启动”,程序运行起来,点帮助-注册-输入假码-确定,显示“注册码不对”。根据 .net程序的破解实践与理解一、爆力破解篇:改代码(写给新手,超详细)中方法找到以下位置
在bool flag3=.......这一行下断。程序运行到此处,这里判断注册码是不是15位。是15位,跳过“注册码不对”,继续往下跟,下图显示截取注册码中的第5位放到text5中,第6位放到text6中
然后通过下面的下面的判断和后面的语句转换成数字1或2,
再通过下面的语句连接成年,上面注册码中是CF,转换后就是2025年。
第7位、8位转换后连接成月,
第13位、14位,转换后连接成日,
然后,将得到的年转变成数值后放到变量num3中,月放到num4中,日放到num5中,年小于2021或大于2036或小于当前年份,或者是月小于1或大于12,或者日小于1或大于31,程序就会显示“注册码不对”。


否则会先判断从注册码(放在text3中)截取的1到4位和9到12位连成的新字符串text4长度是否是0,若不是则通过yanzheng()函数对通过机器码算出的数值和text4进行比较,


(和重启验证过程一样都是调用funcGetZhucema()函数)
结果一样就注册成功,不一样就显示注册码不对。注册成功后会把这个日期存到mspaibzd735.dll中,程序重启后进行启动验证是否过期。注册码的最后一位可以是1,也可以是2.
  至此,程序注册和重启验证过程都已经分析完毕。
  总的思路就是:
  1、先判断注册码是否是15位,否则注册码不对。
  2、若是15位,则再判断年是否是2021-2036之间(包括两端),月是否是1-12月,日是否是1-31日或年是否是小于当前年或当前年中小于当前月,否则注册码不对。
  3、若是,则从机器码中换算出字符串和注册码中截取并连接成的新字符串比较,若一样就注册成功。
  4、注册成功后,机器码、步骤3中的字符串及注册码中的年、月、日保存到dll中,程序重启时验证是否是注册版,时间则用来验证是过期。
   写在最后:
    其实分析别人的程序不只是为了破解程序,更重要的是对别人编程思路的一种学习,是一个自我提升的过程。当然提醒各位全新的小伙伴,要想能有更大的提高,还是要掌握一门编程语言,不但有利于读懂别人和程序,在探索的过程中也可以写出个注册机。程序已经分析透了,那下一篇就剩下写注册机了,大家可以自己先写个注册机试一试。

免费评分

参与人数 7威望 +1 吾爱币 +26 热心值 +6 收起 理由
chao0927 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
BayMax2911 + 1 + 1 大佬还真看得起我这个大白~ 让我写注册机。23333
CC520CC + 1 + 1 谢谢@Thanks!
纯情小变态 + 1 + 1 谢谢@Thanks!
为之奈何? + 1 + 1 我很赞同!
ZiPP + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
刘统宝 发表于 2024-10-8 10:20
非常精彩的教程,拿下边这个软件开练:

翻译软件SDL Trados Studio 2024官方版下载
https://www.52pojie.cn/thread-1959695-1-1.html
(出处: 吾爱破解论坛)
沙发
xixicoco 发表于 2024-10-7 23:02
3#
Camus2021 发表于 2024-10-7 23:32
4#
aq1232007 发表于 2024-10-8 00:19
很好的文章。
5#
13729181580 发表于 2024-10-8 05:39
支持,感谢分享
6#
Lty20000423 发表于 2024-10-8 07:37
感谢分享
7#
SONGXINGJING520 发表于 2024-10-8 08:58
一直在学习中
8#
fycdl 发表于 2024-10-8 09:12
很不错哦,终于等到你吧
9#
HuskyHappy 发表于 2024-10-8 10:04
VMProtect 加壳的咋搞
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 04:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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