2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

某数据库同步工具开源教程 discuz 教程

游客 游客组

本帖最后由 新版本 于 2017-5-17 13:49 编辑

因原程序官方已经不销售,而网上的开源 有点儿略贵,所以自己尝试开源了。方法如下。
软件是这个。


我的方法是开源8.4.1的,下载地址找百度。


开源过程:
根据最终结果来看,破客户端或是服务端都无所谓,因为最终算法都一样。我这里是拿客户端来分析的。
1、因为程序要求.NET环境,所以应该是.NET开发的,使用detect it easy查壳,发现加了两层壳reactor 4.8-4.9和xenocode postbuild(2.x-3.x)
2、祭出de4dot脱壳,开始这里绕了很多弯路(第一次用),比如会把资源文件解压出来,包括最后开源成功了,会报错这些问题,
直接使用命令行脱壳附参数
de4dot.exe XXX.exe -p dr4 --dont-rename --keep-types --dr4-embedded false
参数说明:
-p dr4是脱壳类型为reactor 4.8-4.9
--dont-rename是不重命名方法名 --keep-types保留混淆类型,字段,方法 这两个放在一排是因为我不确定这两个哪个具体影响的之前的报错,高手出来解答一下。
--dr4-embedded false //不转储嵌入式组件(不解压资源文件)


这一步的脱壳只是为了程序不报错,留着备用,复制一份。


3、要另存源码需要完全脱壳,即还需要输入命令de4dot.exe XXX.exe -p xc,
脱壳完成之后就是另存源码了,这个可选工具有.NET Reflector/ILSpy/Telerik JustDecompile
我当时是用的.NET Reflector,不管使用哪种工具都记得要装Reflexil插件

4、关键代码分析:
打开另存的源码,搜索字符串无果,查看窗体文件发现有一个frmLicenseManager,看着像是输入注册码的窗体
查看代码里的窗体元素,基本确定就是输入验证码的窗体,
在这里也发现程序字符串都是放在资源文件里的,所以搜索字符串是搜索不出来结果的。
在代码里看一个事件btnApply_Click,这个就是应用按钮的事件。
跟进代码会发现,里面有调用两个方法,一个方法是验证,另外一个方法是写验证码文件
直接进入验证方法(f12)

这一步里发现是RSA验证,直接写注册机是不现实了。要写也需要修改RSA公钥。
这里也明显看出验证码是XML字符串,至于具体有哪些字段,属性都未知。
查看引用此方法的方法还有另一个,跟过去会发现最终会将我们提交的验证码反序列化为一个对象,跟进去之后
这就是注册验证码的XML字段及属性了,涉及 { get; set; } 都是。
至于哪些是属性,哪些是字段,自己写一个程序,生成一下XML结构就出来了。

结构出来了就是根据上面的RSA加密顺序写解密代码,至于怎么写,百度有现成的。
生成前先要生成自己的RSA公钥和私钥,因为我们没有原程序的私钥,所以无法解密。
这里有一个干扰因素,机器码
string.Equals(document.DocumentElement["MachineUID"].InnerText, str4)
这一串是验证机器码是否与XML里一致的,根据str4的赋值去追踪。

5、能生成注册码了之后,接下来就是修改RSA公钥了。我用的是ILSpy
打开程序,搜索<RSAKeyValue
找到第4步验证的地方,开启Reflexil插件。右键编辑相应的值,另存为,会弹出强名称,我直接选的的第一个。
相同方法把服务端也修改了。
补充说明一下,生成的验证码文件目录及文件名在第4步的写入验证码文件那里有。然后把你第4步生成的验证码放在相应的目录里,重启服务,发现开源成功。

站长窝论坛版权声明 1、本帖标题:某数据库同步工具开源教程
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由游客在站长窝论坛《程序综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (0)
返回