0x00 frida简介
frida是近几年才推出的一款全平台的逆向神器。功能上主要采用动态hook的方式,加入log,修改逻辑等。可以对java,native等hook。
具体使用情况,谁用谁知道。废话不多说,直接上干货。
这里仅仅讨论安卓上面的情况,其他平台的咱不做研究
0x01 在java中的一些应用
1、延时Hook
安卓有一些多包的问题,另外有一些类是通过动态加载的方式来加载的。可能在hook触发的那个时间点,不会找到未加载的代码。
这个时候,可以通过在class loader上面加hook的方式,在hook的代码下进行二次绑定加载。
这里没有代码,需要各位同学自己尝试一下。
2、打印调用栈
调用栈,这个很有用。在分析的过程中,不一定会一定找到需要分析或者hook的函数。可能根据字符串等蛛丝马迹,仅仅找到一部分信息。
使用java调用栈,就可以找到方法的调用关系。
代码如下
如上所示,可以把所用调用了ConnectionErrorMessages.getErrorMessage这个方法的栈给打印出来。
3、关于java的重载
这个载frida中设计比较友好,如果不知道重载方法如何写。只需要写上方法名,运行一次,frida就会把所有的方法,通过错误日志的形式给打印出来。照抄即可。
如上图所示,就是AssetManager 的 open方法的各种方法。
0x02 在C语言中的Hook
1、同样的延时Hook
这里的Hook可以绑定到程序启动时,这个时候可以针对脱壳以及一些其他只有在启动时才会触发的逻辑起作用。如下面的代码所示,可以先把hook的代码,放在libc.so 的open方法上面,等到指定的so加载的时刻,在触发自需要hook的逻辑。
2、C语言中打印调用关系
c中可以打印到该方法,是由那个so调用的。如open函数,在这里就可以知道是由那个so调用了,然后打印出该so具体的打开了那几个文件。根据打开的文件,进而可以猜测出使用了那些设备的信息以及一些其他操作。
关键的打印调用 就是这一行代码:Thread.backtrace
以后会持续为大家更新关于安卓逆向的知识,希望大家喜欢的给个关注
如果纰漏,请各位同学加以指出。
最后放上脚本的git地址 /lykmoon/frida-tools.git
声明:本文转自/thread-248848.htm如有侵权请联系删除
如果觉得《c语言延时函数_介召几个frida在安卓逆向中使用的脚本以及延时Hook手法》对你有帮助,请点赞、收藏,并留下你的观点哦!