android逆向遇到的问题,请教大佬怎么解析这个smali语法
小弟是刚学的smali,语法都了解过了,对于逻辑不是很复杂的程序的smali代码都能看懂,但是很复杂的看起来有点吃力。现在遇到一个问题折腾我几天了,这个方法有几百行的代码,想请前辈给指点迷津。
主要的困惑如上图描述的,有两点:
1、当第一个红色框中的代码运行完之后,我没有看到跳转的逻辑,然后我继续往下找,所有的代码都是有:cond_xx的,没有直接可执行的,那程序是怎么继续执行的?
2、第二个框中:cond_x和:goto_0同时存在的,程序是怎么执行的? :cond_xx 只是一个标签而已,可以从别的地方跳转过来。
正常执行下去碰到:cond_xx的话,直接忽略掉,继续往下走就行 针对一个方法有几百上千行代码的,有什么办法可以快速的理解方法的逻辑吗? 本帖最后由 闷骚小贱男 于 2020-12-22 18:33 编辑
weiniuda 发表于 2020-10-31 23:01
针对一个方法有几百上千行代码的,有什么办法可以快速的理解方法的逻辑吗?
{:1_926:}NP管理器,可以将代码转成JAVA,你值得拥有,修改smali源码后能实时查看修改后的java源码 我建议你还是学点java,直接看smali也行。{:17_1089:}
cond_和goto只是个地址标签,仅供if语句和无条件跳转语句使用。没有if等语句的话这些地址你写几十几百都不影响运行。 闷骚小贱男 发表于 2020-10-31 23:03
NP管理器,可以将代码转成JAVA,你值得拥有,修改smali源码后能事实查看修改后的java源码
我是有用过jadx反编译看过java代码,但是唯独这个方法是反编译的结果是不正确的,类似下面这样:
/* Code decompiled incorrectly, please refer to instructions dump. */
public final int a(f fVar) {
....
}
我现在是不知道是什么原因导致反编译失败的,现在只能看smali源码了。
NP管理器我没有用过,针对反编译失败的情况,NP管理器能解决吗? 417788939 发表于 2020-10-31 23:31
我建议你还是学点java,直接看smali也行。
cond_和goto只是个地址标签,仅供if语句和无条件 ...
我是有java基础的,用过jadx直接反编译了apk,但是这个方法的逻辑反编译是失败的,像下面这样:
/* Code decompiled incorrectly, please refer to instructions dump. */
public final int a(f fVar) {
...
}
请问这是什么原因导致反编译失败的?
我查了一下,有说是因为代码逻辑嵌套了太多了分支跳转,层层嵌套导致反编译工具无法解析。请问真的是这样子的吗?还是说源程序做了其他加密? weiniuda 发表于 2020-11-1 08:38
我是有java基础的,用过jadx直接反编译了apk,但是这个方法的逻辑反编译是失败的,像下面这样:
/* Code ...
这个你要看一下smali,太多分支跳转有点像混淆。
就你贴出来的图来看应该没有混淆过,只是替换了类名而已。 NP管理器真是个神器啊,可以直接修改smali代码,保存后自动转dex,自动打包apk和签名。
我现在通过NP管理器去编辑那个方法的逻辑,增加log输出去调试它的逻辑,管用!
就是感觉这方法比较笨{:1_889:}需要每段逻辑都打log,很麻烦,不知道还有没有更好更快的办法?
页:
[1]