android逆向__超级好用的使用frida追踪方法

栏目: IOS · Android · 发布时间: 6年前

内容简介:前提是你的电脑和手机都已经安装了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的界面如下:

android逆向__超级好用的使用frida追踪方法

当点击"测试"按钮,执行test方法,终端打印如下:

android逆向__超级好用的使用frida追踪方法

能清晰地看到方法的参数和返回值以及方法之间的嵌套关系。

结束

国外大佬的github地址 frida-scripts 。该项目中还有其他好用脚本,对用iOS和android的调试很有帮助。等待各位大佬一起探索。

如需获取本文涉及到的android工程和js文件,可关注公众号" 逆向APP ",回复"frida追踪方法01"获取下载地址。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法分析(C++版)(第3版)

数据结构与算法分析(C++版)(第3版)

Clifford A. Shaffer / 张铭、刘晓丹、等译 / 电子工业出版社 / 2013 / 59.00元

本书采用当前流行的面向对象的C++程序设计语言来描述数据结构和算法, 因为C++语言是程序员最广泛使用的语言。因此, 程序员可以把本书中的许多算法直接应用于将来的实际项目中。尽管数据结构和算法在设计本质上还是很底层的东西, 并不像大型软件工程项目开发那样, 对面向对象方法具有直接的依赖性, 因此有人会认为并不需要采用高层次的面向对象技术来描述底层算法。 但是采用C++语言能更好地体现抽象数据类型的......一起来看看 《数据结构与算法分析(C++版)(第3版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具