找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 125|回复: 0

Java反编译_class爆破与javaagent

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105860
发表于 2021-12-29 15:07:11 | 显示全部楼层 |阅读模式 IP:山东省 移动/数据上网公共出口

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Java反编译_class爆破与javaagent


总述
对于java破解,直接反编译出java代码,然后改代码逻辑,再重新打包,这套流程固然清晰直接,但常常会遇到缺少依赖库、编译环境复杂等问题。还有两个思路可以处理这个问题,1.class文件爆破;2.javaagent
java反编译
使用jd-gui、IDEA 等工具可以反编译jar包或者class文件。
2.png
jar包解压
jar包本身就是个zip文件,这里直接用7zip解压。
同样的,直接用7zip打包成zip即可完成打包,只要注意目录结构即可。
3.png
4.png
爆破class文件
使用JavaByte.exe工具爆破class文件
爆破点一:改check函数的返回值
添加class文件
5.png
选中Methods里的check方法
6.png
双击iconst_0,将其改为iconst_1,并保存class文件。
7.png
测试效果,You win!
8.png
使用jd-gui验证爆破效果
9.png
爆破点二:改if判断
10.png
把0008到0016的代码直接nop掉。
(注意:使用JavaByte.exe进行nop的时候可能会使字节码变短,比如3个字节的“B8001E”变成一个字节的“00”,这里没有自动填充剩余的nop指令,有点不方便。可以通过“Add Instruction”补足剩余的nop,也可以直接通过WinHex等二进制编辑工具进行修改。)
11.png
测试效果,You win!
12.png
使用jd-gui验证爆破效果
13.png
重新打包
jar包就是个zip文件,爆破class文件之后,直接使用7zip压缩成zip文件,只要保证目录结构正确即可。是否把后缀名.zip改成.jar也不会影响jar包的执行,为了保持习惯上的一致性,可以改一下。
14.png
测试打包效果
15.png
其他说明1.爆破的地方不要改变其余原始字节码的偏移
如果修改后字节码长度变短,会导致报错,所以要保证修改后的字节码长度不变,以使其余的原始字节码不发生偏移,避免报错。
16.png
2.注意栈参数的平衡参考----------------利用javaagent动态修改方法Main.check
利用javaagent动态修改方法Main.check,直接返回true


打包
vim MANIFEST.MF
Manifest-Version: 1.0
Can-Redefine-Classes: true
Can-Retransform-Classes: true
Premain-Class: PreMainAgent

需要注意的就一个MANIFEST.MF,然后仿照一个jar包结构用7zip压缩即可(可以直接通过拖拽的方式替换zip包里的内容)。或者直接使用maven、gradle对工程进行管理。

测试效果,You win!

17.png
参考
工具下载:链接:https://pan.baidu.com/s/16Pl1YdSx5g-5pQEEeJuGEQ
提取码:xnxt

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-18 19:49

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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