反编译工具篇 2.1) jeb 爆锤 jadx 和 GDA

反编译工具篇 2.1) jeb 爆锤 jadx 和 GDA

1.反混淆优化 字符串解密(jeb的灵魂能力)

这里什么是灵魂能力。

我想起一句很有逼格的话

当你出场的时候,所有人都显得不过如此。


正文开始:

视频演示:https://space.bilibili.com/430241559

很多时候我用jeb分析apk的代码,就是为了jeb的反混淆优化。

这里,正常有字符串的代码是这样的

A方法(明文字符串,其他参数)

被加固壳或者其他源码混淆工具,混淆过的代码就是这样

A方法(字符串解密方法(密文字符串),其他参数)

普通反编译工具在字符串反混淆这块,不咋行。

普通反编译工具遇到字符串加密后,是这样的

原方法   : A方法(字符串解密方法(密文字符串),其他参数) 
反编译后 : A方法(字符串解密方法(密文字符串),其他参数)

吊打友商的优秀反编译工具是这样的

原方法   : A方法(字符串解密方法(密文字符串),其他参数) 
反编译后 : A方法(明文字符串,其他参数)

当然这里大佬们直接去 hook A方法,直接查看函数参数也是可以的。

但是,如果一眼看过去,都是这种函数,你也一个一个hook查看参数吗,不累吗

jeb吊打友商的反混淆优化
image-20210718035610179
image-20210718040349857

这里既然是JEB的灵魂能力,那当然是来几个友商,锤几个友商


这里为了更好的展示 jeb的灵魂反混淆能力,我还专门写了个apk 给大佬们看的更清楚些

image

下图这样的场景 你想不想 编译器优化成这个样子哪

image-20210718150901235

这个场景,一般情况下,上JEB就可了。

来看一下jeb反混淆后的效果

image-20210718152325132

下图是jeb的命令行输出,可以看到这里jeb成功解密了3个字符串

jeb命令行输出的相关解密日志

image-20210718162541068

开不开心,惊不惊喜。

在看看另外两个友商:

GDA出来被锤
image-20210718152404149

这里我很好奇 str_wang 原来的字符串在哪里, 看这个反编译把我搞懵了

我不仅不能一眼看出,被加密的字符串,解密之后是个啥。

我连开发者咋写的源码我都不知道了。。。

这里 猜测是作者做新版本太累了,GDA 3.85就没有这些错误,反编译后可读性很强

image-20210801223818574

不过依然没有解决核心问题,还是不能一眼看出解密后的明文是啥


不同于 jadx , GDA这里对解密字符串还是提供了支持的。

网址:https://zhuanlan.zhihu.com/p/250771438

image-20210801223436218

但是,这里搞起来有点麻烦,要手动定位解密函数和引用的密文,

我这种能躺着绝对不坐着的人,当然是懒的搞。

在遇到统一的字符串解密函数,就是一个apk里面,一个统一的方法,负责字符串的解密,这样的情况下,GDA这种方式还是蛮好用的。

但是如果碰到dexguard那种,一个类一个字符串解密函数,整个apk可能有几百个,几千个字符串解密函数。

这种情况下,如果写GDA字符串解密脚本,时间成本就会变的非常大。

遇到这种情况,强烈建议大佬们直接上 jeb 或者 simplify这种反混淆工具。

jadx-gui出来被锤
image-20210718152804590

jadx-gui这里把中间变量搞没了,链式调用让代码看起来更精炼,紧凑,但是并没有解决核心问题。

我还是不能一眼看出,被加密的字符串,解密之后是个啥。

你可能感兴趣的:(反编译工具篇 2.1) jeb 爆锤 jadx 和 GDA)