本帖最后由 云在天 于 2019-6-7 13:15 编辑
我看见论坛中有网友已发过类似教程,我重点分享思路,如果是重帖,请删除。
本教程只能用于学习研究,不可进行任何商业用途。如有使用,请购买正版,尊重他人劳动成果和知识产权! 对象:繁星代码生成器0.96 环境:Win7 x64 工具:exeinfoPE(查壳)、de4dot V3.1(反混淆)、.NETReflector 8.5(查看)、reflexil.1.8(修改)。 目标:将180天未注册改版改为已注册版本 01.搜索 查壳、反混淆,使用.NETReflector加载,F3搜索字符串“未注册”:我们搜索到一个结果,在FrmMain主窗体的构造函数(.ctor)中。 搜索是快速找到关键点比较重要的方法:快捷键是F3,很多软件中的搜索都是F3,这里的搜索功能有四个按键:Search Type(Ctrl+T)搜索类型、Search Member(Ctrl+M)搜索成员、Search String or Constant(Ctrl+S)搜索字符串或常量、exact match准确匹配。 02.分析 查看关键代码,这里只有一个搜索结果,所以,我们可以锁定它,如果有多个结果,则要根据实际情况进行分析:这里调用了注册类RegisterHelper中的GetRegisterState方法,这个方法将Out一个整型num,分析后可得到下表: 分析代码应该算是经验起主要作用,其中的技巧和思维是需要长期练习而得。这里小结一个:一般的注册都有状态,注册成功了是什么值,没成功是什么值,缺少权限是什么值,过期是什么值,可能存储在枚举值中,如下图: 03.深入 当然,这里我们可以直接修改判断条件,可能会达到我们想要的结果,但为了保险,我们得深入进去。这里,我们深入GetRegisterState方法,将state返回大于0的数值,函数返回值任意。因为RegisterHelper在MultiStar.Common.dll里,所以,我们将它另存来进行测试。 只有彻底修改注册函数,才能解决根本问题。这样,你也可以在写代码的时候不要写得很简单,别人一看就明白,至少写复杂一点,即使被破解,也要让别人看起来都头疼。 04测试 对结果进行各种测试,包括其中的功能,有必要,可以在.NET Reflector中分析关键函数使用的地方,如下图左。
本教程只能用于学习研究,不可进行任何商业用途。如有使用,请购买正版,尊重他人劳动成果和知识产权!
|