在进行逆向分析题目或者是抓包进行协议分析时,此时在java层中,我们可能想要快速的定位到关键函数,关键代码。但是,在有些时候,当我们反编译完app,进行关键字搜索时,可能会出现搜索不到的情况。此时,原因无外乎有以下几点:这是一个H5 app,或者是由于字符串被加密了。甚至是app被加固了。
众所周知,对于常规函数被混淆后,改变为xx000这种字符,无从下手之时,我们可以另辟蹊径,从底层函数入手。
首先,第一个方法,可以打印堆栈信息。
function showStacks(){
var stack=Java.use("android.util.log").getStackTraceString(Java.use("com.long.Throwable")).$new();
console.log(stack);
我们得到log类的getStackTraceString方法,传进去的参数就是Throwable的实例,这样就可以打印出堆栈信息。
第二个方法就是常见的系统函数
HashMap ArrayList String JsonObject StringBuilder等
题外话,当使用log.d进行打印时,我们会发现程序会报错,原因就是我们会使得程序运行停止,这个时候我们就需要写一个try,catch类进行出现异常时的响应。然后打包成dex进行注入,注入的js代码为
Java.openClassFile("路径/xxx.dex").load();