吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7216|回复: 67
收起左侧

[原创] Myeclipse2022注册码逆向分析实录

  [复制链接]
denglintao 发表于 2022-12-27 19:12
Myeclipse2022注册码逆向分析实录
前言:之前为了注册52破解论坛的账号,写了一篇tongweb7容器破解的文章,结果给通报了,文章给移动了,管理员觉得怕我的小心脏受伤,还将该篇文章给了一个”精华”。随着在52破解网玩了一段时间后,发现好像精华的文章还是比较少的,忽然感觉自己被认可了,这个精华给足了我满满的虚荣心。随后我开始观察什么样的文章可以拿精华,总结发现,只有分析软件许可,最后破解的文章比较容易得精华。
随后我就一直在思考要写一篇破解什么的比较好,思考过后,我记得N久前好像安装过一个Myeclipse2022,但是启动后,许可过期了,马上2022就结束了,希望管理员能够给个精华,再次满足我小小的虚荣心!


声明:
本人对此次逆向分析只是为了分析学习软件安全是如何防范的,知道如何逆向分析软件,我们才知道如何更好的防范他人逆向破解。本文仅研究分析myeclipse的许可安全激活算法,不提供传播注册激活码生成相关脚本,包括使得他人能注册破解myeclipse的相关程序,其实文中关系到完全破解myeclipse的关键操作都已删减,希望所有同学都支持正版。
开始正题。
启动Myecipse提示已经过期53天了
image.png

接下来,我们开始找到这个校验逻辑的程序代码,可以使用jvm参数 -verbose开启日志
修改myeclipse.ini文件,新增class加载日志(目的是用于定位lic许可相关的class在哪个jar),将javaw修改为java是有个控制台,方便看见日志输出
image.png

重新启动myeclipse随便输入一个许可号
image.png

查看class加载日志,简单的搜索下lic字符,观察分析
image.png

在看一张大图,可以看见许可的弹框Dialog相关类
image.png

我们就去找这几个jar都拿出来反编译分析下(主要是这下也不知道许可相关代码在什么位置,先拿出来分析下)D:/ProgramFiles/Myeclipse/configuration/org.eclipse.osgi/35/0/.cp/libs/genuitec-gson-2.8.5.jar/D:/ProgramFiles/Myeclipse/plugins/org.eclipse.jdt.ui_3.25.0.v20211115-1252.jar/D:/ProgramFiles/Myeclipse/plugins/com.genuitec.eclipse.core_16.0.0.202203221716.jarD:/Program Files/Myeclipse/plugins/com.genuitec.eclipse.ui.common.platform_13.0.0.202203221713.jar 使用eclipse(我的eclipse有自带反编译插件JAD之类的)新建一个工程,用于破解myeclipse测试,静态分析相关代码,写测试用例
image.png

查看com.genuitec.eclipse.core_16.0.0.202203221716.jar这个jar就发现如下图所示,有混淆的代码(那些A.class之类的),还有公钥,非对称加密算法工具类RSA,看来许可控制相关程序就在整个包下了,有了这些我们就可以逆向分析注册算法了
image.png

反编译一份代码
image.png

根据弹框信息关键字搜索Invalid license, please double check your ID and code
image.png

搜索得到了一个许可验证正确与否的方法如下图:com.genuitec.eclipse.core.ui.wizard. UpdateLicenseDialog. ValIDAte()
image.png

破解的关键其实就是下断点,如在OD中调试我们都喜欢在不同的win都是弹框函数下断点,然后出栈找到调用的方法,然后就是CMP、JE、JMP等关键比较的地方进行分析,如果补丁就是等于暴力破解该程序。总的静态分析代码只能做到缩小分析范围,方便调试时候下断点,接下来,这里先反编译class代码(原本代码给混淆了,肯定是不能正确编译的),且修正java代码达到可以编译打包进行补丁原本的程序。在修正java代码需要耐心,这里还是需要一些时间的,可以使用多个反编译工具逆向的结果进行对比结合,然后修正(比较耗时,要耐心)修补后如下图所示:
image.png

其实我们只需要修正几个需要调试的class即可,然后用于替换原本jar包中的class文件,然后替换到myeclipse中开启动态调试,再次输入ID与注册码
image.png

发现我们动态调试可以查看到输入的信息了,当K是false代表s与s2都是我们输入的ID与激活码,true的时候就是公钥私钥认证机器指纹的那条线,我们开始分析
image.png

这时候感觉我们已经成功一半的感觉了,只要可以动态调试说明接下来就可以暴力破解,或者分析激活算法编写注册机了,但是会发现,几秒钟过后,myeclipse会自动关闭退出了,猜测可能是myeclipse有反调试的程序,或者是因为我们修改替换了class,myeclipse有相关完整性验证签名的机制,检测到有修改了class代码,然后就直接退出了。
image.png

手写一个findClass,使用javaAgent技术用来替换verbose检索class加载,将日志输出到文件检索日志中也有体现
image.png

接下来就是如何去除完整性校验,直接全局搜索找关键字,将所有jar解压,好多文件
image.png

利用搜索工具全局搜索class文件,properties文件、xml文件,所有文件夹都不放过,搜索” This product did not pass the MyEclipse integrity check” 好庞大的检索当然我们运气不错,搜索结果如下:
image.png

分析重点开始查看这几个类com.genuitec.eclipse.meexplorer_13.0.0.202203221713\com\genuitec\eclipse\meexplorer\filter\MEFileNameFilter$2.classcom.genuitec.eclipse.server.core_13.0.0.me202203171613\com\genuitec\eclipse\server\core\ServerLaunchClasspathProvider$2.classcom.genuitec.eclipse.ui.common_13.0.0.202202011855\com\genuitec\eclipse\core\ui\preference\MECPListContentProvider.class确定了,就是这个几个类,如下图(这里就只贴一张吧),
image.png

接下来就是利用暴力破解的那套,你CMP,我JMP,”我不管你如何比较判断,反正我强制跳转”,Java还是比汇编指令舒服的,起码指令可以随意添加,要是汇编,可能指令过长,还得另外寻找一个空的代码段用于编写补丁程序,跳过去补丁程序,然后补丁程序在跳回来。(我可能破解太激动了,走到隔壁win程序破解了,偏了,我的错,我们继续回到主线)修改好相关的类,然后补丁修改到相应的jar包,然后又可以重启myeclipse了
image.png

三个jar补丁后,我以为已经去除完整性校验了, 结果还是没完全去除,可能是没有检索完全
image.png

接下来的几个代码完整性校验的逻辑就不贴了(因为涉及是否能破解,且大致完整性校验的逻辑都是一样的)在这里可以给myeclipse公司的开发一些建议,可以将这些字符串使用加密形式存储到某个常量里面,那么在源程序中使用字符串检索就无效了,这样可以加大破解的难度,提高了破解的门槛。
同上去除完整性代码操作,补丁后,再次启动myeclipse,正常了,没有完整性校验错误提示了,这下我们可以随心所欲的动态调试分析算法了。
image.png

到这里一波三折,感觉myeclipse破解这差点把人弄劝退,不过好在坚持了,也成功了。这里题外分享以下:如果仅仅只是为了分析算法,动态调试,其实还有一种办法是可以不去除完整性.也可以让myeclipse是不会退出的,在控制台窗口,myeclipse刚好启动完毕后,鼠标点击它(win11等于阻塞该线程),那么myeclipse是不会退出的。当然我们是奔着精品贴,所以必须去除完整性校验了,否则就没意思了。再次输入激活码如下图所示:
image.png

开始动态跟踪调试,发现一个关键的算法
image.png

很遗憾,第一次跑到异常里去了,按照提示,可能是位数太少了
image.png

那这次我们加大A的值长度
image.png

结果还是不行
image.png

看来也不能太长了,因为下面代码21字节后面的要转换为int,且这个分支不能进入,我们要让他相等
image.png

到这里我们主要要分析方法如下,两个加密解密算法A()可以理解位一个亦或,明文进去变成密文,密文进去变成明文
image.png
image.png

我们手写一个测试用例(其实就是注册机,我们会一直完善该类知道生成合法的注册码),找出ID和code的关系,自动生成
image.png

进入调试,发现我们随便写的ID是不符合规程的,但是不影响我们继续分析
image.png

7-13位应该是个数字类型的,第1位的字符应该是Y或者T,我们继续生成ID与code继续调试如下:
image.png

到这里,ID还要修改
image.png

反正以上都是不断的补ID的规则一直尝试(一位一位的调试补充),直到我看见这串代码,我感觉应该是一个合法的ID,那么我就拷贝一个且生成code后
image.png

再次输入验证,忽然发现这是一个过期的,但是是一个合法的ID
image.png

简单的分析了下这个注册码格式后,14到20位应该表示的是注册码过期时间,重新生成后(是不是有丝丝的小激动了,感觉我要成功了),再次注册如下图所示:
image.png

接下来就是破解激活码了
image.png

相同方法找到激活码校验的方法,如下所示
image.png

这个方法是系统解析用户输入的激活码信息                  -RSA公钥解密激活码串,等会我们需要重新生成公私密钥对,用于加密(明文激活码)         -解析机器指纹         -解析用户code         -许可有效期
image.png

读取公钥文件
image.png

下图红色框推出激活码里面的code的位置
image.png

这里可以看出系统id的长高度和组合规则,一个共是19位
image.png

我们可以做一个假的先进行调试,用于跟踪我们输入的信息与程序获取的系统信息比较,当debug到下图方法时候,我们知道了程序获取当前系统的指纹信息是create();返回的SystemId,该方法可以用来编写注册机使用
image.png

到这里我们就开始编写注册机了脚本了,原本的RSAUtil可以直接使用,生成公钥和私钥(工程左侧的红框俩个文件)
image.png

机器指纹的算法,参考SystemIdFactory.create(),主要逻辑如下:
image.png

下图的脚本运行生成了一个注册码激活码(完整的注册激活码生成算法的细节就不展示了)
image.png

再次验证,这次的ID和code我们修改位了2099年12月31日
image.png

点击激活后,有三种验证方式,我们脚本都编写好了
image.png

输入激活码
image.png

最后看看成果,成功了
image.png

另外URL自己访问的形式注册的,可以看出注册的http服务请求url如下
image.png

我们也编写的注册脚本可以大家http服务用于其他机器安装myeclipse时候可以计算出激活码,我这里就是简单的截取url的参数生成激活码
image.png
image.png
image.png
image.png

免费评分

参与人数 23吾爱币 +22 热心值 +22 收起 理由
luolifu + 1 + 1 谢谢@Thanks!
Huang210 + 1 6啊
gjinwei + 1 + 1 用心讨论,共获提升!
wds824 + 1 用心讨论,共获提升!
morenjiu9 + 1 + 1 用心讨论,共获提升!
suko + 1 + 1 我很赞同!
yanecc + 1 + 1 我很赞同!
lingyun011 + 1 + 1 用心讨论,共获提升!
xzhtx + 1 + 1 谢谢@Thanks!
xlwllm + 1 + 1 我很赞同!
poisonbcat + 1 + 1 谢谢@Thanks!
caicaisin + 1 + 1 我很赞同!
Bluesky10 + 1 + 1 热心回复!
searchjack + 1 + 1 我很赞同!
/bq + 1 + 1 谢谢@Thanks!
jasonA + 1 + 1 用心讨论,共获提升!
iceboy800 + 1 谢谢@Thanks!
二十瞬 + 1 + 1 我很赞同!
可爱的莫曦呀 + 1 + 1 谢谢@Thanks!
byxifan + 1 + 1 我很赞同!
跟着疯去旅行 + 1 谢谢@Thanks!
peiwithhao + 3 + 1 我很赞同!
haneu + 1 + 1 用心讨论,共获提升!

查看全部评分

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

Hmily 发表于 2022-12-30 16:35
denglintao 发表于 2022-12-28 12:20
大佬费心了,这帖子的文本编辑器不太熟悉,所以从word复制过来后,就发生变形了,最后几张图可能是在中 ...

编辑贴子后点附件那,你之前上传的地方进行编辑,我不太敢给你删除,你图片名字居然都一样,我分不清怕删错了。。。
 楼主| denglintao 发表于 2022-12-28 12:20
大佬费心了,这帖子的文本编辑器不太熟悉,所以从word复制过来后,就发生变形了,最后几张图可能是在中间的,可能错版了,我这边点击编辑文章后,好像图片会消失了,如果可以的话,您在帮忙下,最后三张图 就保留代码的那张吧,另外两张就删除了。

点评

编辑贴子后点附件那,你之前上传的地方进行编辑,我不太敢给你删除,你图片名字居然都一样,我分不清怕删错了。。。  详情 回复 发表于 2022-12-30 16:35
Hmily 发表于 2022-12-28 11:47
文章我给你编辑了一下,图片文字换行了一下,去掉了不合适发的内容,最后面好像有3张图没贴入正文中,看看是不是哪漏了?
sanshenghepan 发表于 2022-12-28 14:24
这是大佬啊
wkx1975 发表于 2022-12-28 14:52
真的是看不懂
smallmin 发表于 2022-12-28 15:58
虽然很久不用myeclipse了,但也看得津津有味
baiyujianyi 发表于 2022-12-28 17:04
java破解的思路相当赞
78zhanghao87 发表于 2022-12-28 17:25
虽然现在基本不用这玩意了,但还是挺牛逼的呀
shay520 发表于 2022-12-29 08:19
Java的破解方法和Win程序破解方法不一样,思路是值得学习的。大佬写得很全,学到了。
jjghaa1234 发表于 2022-12-29 09:51
十分感谢楼主分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-23 23:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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