frida初体验

另外可以参考一个乌云drops的安卓APP动态调试-IDA实用攻略
在看apk逆向的题时,看到这个writeup,它谈到可以用frida来动态插桩,使用Frida你能够在包括安卓在内的许多平台上使用JavaScript来 hook 代码。
参考:
http://www.jianshu.com/p/ca8381d3e094

Frida是一款基于python + javascript 的hook框架,通杀android\ios\linux\win\osx等各平台,基于脚本的交互。

先在你的主力机上安装frida

pip install frida

下载完之后,就会可以使用frida, frida-ps等命令了。
然后下载frida-server待传到android的目录下,执行服务程序
到这个页面,https://github.com/frida/frida/releases,找到frida-server相关的,比如frida-server-10.1.2-android-arm.xz,下载下来之后,解压

unxz frida-server-10.1.2-android-arm.xz

得到一个frida-server-10.1.2-android-arm,这是一个arm平台32位的ELF文件

$ file frida-server-10.1.2-android-arm                                      [3:04:01]
frida-server-10.1.2-android-arm: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /system/bin/linker, stripped

可重命名也可不,然后将其传到android的目录下

$ adb push frida-server-10.1.2-android-arm /data/local/tmp/                 [3:04:06]
[100%] /data/local/tmp/frida-server-10.1.2-android-arm

在android上添加执行权限,然后执行

root@hammerhead:/data/local/tmp # chmod 777 frida-server-10.1.2-android-arm
root@hammerhead:/data/local/tmp # ./frida-server-10.1.2-android-arm

然后转发TCP端口到本地

$ adb forward tcp:27042 tcp:27042
$ adb forward tcp:27043 tcp:27043

测试frida环境,如果出现android手机的进程列表说明搭建成功:

frida-ps -R                                                               [3:09:24]
  PID  Name
-----  ----------------------------------------------
 2140  DaemonServer
22053  adbd
22849  android.process.acore
 8574  android.process.media
  251  bridgemgrd
 1225  com.android.nfc
 1199  com.android.phone
22766  com.android.providers.calendar
20319  com.android.settings
 1042  com.android.systemui
21756  com.android.vending
 1161  com.baidu.netdisk
 1310  com.baidu.netdisk:bdmoservice
21334  com.baidu.netdisk:bdservice_v1
 4381  com.eg.android.AlipayGphone
 ...

得到android手机当前最前端Activity所在的进程

Python 2.7.12 (default, Sep 28 2016, 18:41:32)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import frida
>>> rdev = frida.get_remote_device()
>>> print rdev
Device(id="tcp", name="Local TCP", type='remote')
>>> front_app = rdev.get_frontmost_application()
>>> print front_app
Application(identifier="siir.es.adbWireless", name="adbWireless", pid=5967)

枚举android所有运行的process

>>> processes = rdev.enumerate_processes()
>>> for process in processes:
...     print process
...
Process(pid=1, name="init")
Process(pid=178, name="ueventd")
Process(pid=236, name="healthd")
Process(pid=238, name="servicemanager")
Process(pid=239, name="vold")
Process(pid=240, name="rmt_storage")
Process(pid=241, name="netd")
Process(pid=242, name="debuggerd")
Process(pid=243, name="rild")
Process(pid=244, name="surfaceflinger")
Process(pid=245, name="zygote")

//TODO hook android的native函数
//TODO hook android的java层函数

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值