内容简介:前提是你的电脑和手机都已经安装了frida并运行正常。 如果你还没安装frida,请参考文章这里使用国外大佬写的js脚本,来追踪app的方法调用,首先看一下效果:可以看到test方法有一个参数"Jack",返回值是"OK",test内部调用了gainAge方法,gainAge方法有一个参数"16"并返回"26"。这些打印信息对于逆向app来说非常的重要。
前提是你的电脑和手机都已经安装了frida并运行正常。 如果你还没安装frida,请参考文章 Android逆向_使用frida 安装frida环境。
这里使用国外大佬写的js脚本,来追踪app的方法调用,首先看一下效果:
*** entered com.test.flyer.MainActivity.test arg[0]: Jack *** entered com.test.flyer.MainActivity.gainAge arg[0]: 16 retval: 26 *** exiting com.test.flyer.MainActivity.gainAge retval: OK *** exiting com.test.flyer.MainActivity.test [LGE Nexus 5::com.example.king.testappsflyer]-> 复制代码
可以看到test方法有一个参数"Jack",返回值是"OK",test内部调用了gainAge方法,gainAge方法有一个参数"16"并返回"26"。这些打印信息对于逆向app来说非常的重要。
创建android测试项目
我这里创建了一个简单的安卓测试项目,MainActivity.java中的主要代码如下:
public String test(String name) { Log.d("test", "do--test"); int age = gainAge( 16 ); Toast toast=Toast.makeText(MainActivity.this, "do--test--success--"+name+"--age="+age, Toast.LENGTH_LONG); //显示toast信息 toast.show(); return "OK"; } private int gainAge(int age) { Log.d("test", "do--gainAge--age= "+age); return age+10; } 复制代码
我们一会用frida追踪test和gainAge这两个方法的调用。
使用真机运行这个android项目,以便手机上安装这个app。
修改脚本
即将使用的js脚本是raptor_frida_android_trace.js如下,脚本内容较长,只展示需要我们手动修改的部分:
setTimeout(function() { Java.perform(function() { trace("com.test.flyer.MainActivity.test"); trace("com.test.flyer.MainActivity.gainAge"); }); }, 0); 复制代码
我们在js脚本的setTimeout出添加了两行代码:
trace("com.test.flyer.MainActivity.test"); trace("com.test.flyer.MainActivity.gainAge"); 复制代码
表示追踪test和gainAge这两个方法。
追踪调试
打开终端,输入如下的命令启动app并加载这个我们修改后的js脚本:
frida -U -f com.example.king.testappsflyer --no-pause -l raptor_frida_android_trace.js 复制代码
"com.example.king.testappsflyer"是我们的app包名,"raptor_frida_android_trace.js"是脚本文件。
看到终端打印信息:
$ frida -U -f com.example.king.testappsflyer --no-pause -l raptor_frida_android_trace.js ____ / _ | Frida 12.1.2 - A world-class dynamic instrumentation toolkit | (_| | > _ | Commands: /_/ |_| help -> Displays the help system . . . . object? -> Display information about 'object' . . . . exit/quit -> Exit . . . . . . . . More info at http://www.frida.re/docs/home/ Spawned `com.example.king.testappsflyer`. Resuming main thread! [LGE Nexus 5::com.example.king.testappsflyer]-> Tracing com.test.flyer.MainActivity.test [1 overload(s)] Tracing com.test.flyer.MainActivity.gainAge [1 overload(s)] 复制代码
app的界面如下:
当点击"测试"按钮,执行test方法,终端打印如下:
能清晰地看到方法的参数和返回值以及方法之间的嵌套关系。
结束
国外大佬的github地址 frida-scripts 。该项目中还有其他好用脚本,对用iOS和android的调试很有帮助。等待各位大佬一起探索。
如需获取本文涉及到的android工程和js文件,可关注公众号" 逆向APP ",回复"frida追踪方法01"获取下载地址。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。