Android逆向反编译Lambda代码还原以及查看

前言:昨天在逆向一个项目的时候,发现使用了Java1.8特效Lambda表达式,如果没用过Lambda表达式确实对逆向查看代码造成了一定难度,如下图所示。


7809493-6f81c6734387d0c8.png

1.查看一个Activity

7809493-4ec34f77b0226982.png

可以看到当前页面添加了点击事件,但是使用Lambda表达式之后就有点看不清楚逻辑了,首先我们点击第一个AgentActivity$$Lambda$1类,

7809493-a93ce68fb97b652e.png

如图所示在点击OnClick点击事件里面又回调了AgentActivity.lambda$addListner$0这个方法

7809493-bf10eae9e027eb26.png

然后点击查看下面AgentActivity.lambda$addListner$0的方法

7809493-0e9a510c99c67585.png

然后就能判断出这个就是 tvAgent.setOnClickListener点击事件执行的方法了,而且目前发现了一个规律就是

Lambda$1.lambdaFactory$对应的就是 lambda$addListner$0

lambdaFactory是从1开始的,addListner是从0开始的,所以当反编译查看代码的时候碰到

Lambda$1.lambdaFactory$就可以直接找到当前页面lambda$addListner$0来查看点击事件做了什么操作

Lambda$1.lambdaFactory   >>> lambda$addListner$0

Lambda$2.lambdaFactory   >>> lambda$addListner$1

Lambda$3.lambdaFactory   >>> lambda$addListner$2

Lambda$4.lambdaFactory   >>> lambda$addListner$3

就可以知道其他的点击事件那就全部都是对应的,分析完毕,可以开始逆向工程了。

7809493-e9884e3641982063.png
展开阅读全文

没有更多推荐了,返回首页