Frida现在逆向领域可谓是火的不行不行的。
初次接触,感觉是Frida简直是无所不能;这么说当然是有些过分,不过其可应用的范围确实很广很广。
更关键的是上手简单。
更关键的是还跨平台。
那我们一起来学习学习。本文适合纯小白入门,大佬请绕行。
安装
0、操作系统
本系列文章演示使用的是Windows 7操作系统。其实任何支持Python的操作系统都可以。
跨平台!跨平台!跨平台!
1、安装Python
下载地址:https://www.python.org/downloads/
官方建议使用Python 3.x,下载最新的3.7.0版本即可。
安装时建议选择添加到PATH环境变量。
一般来说,安装完Python,需要升级pip。
升级命令:pip install -U pip
请注意:本系列文章使用的不是上述官方构建发行版本,建议使用官方的发行版本。
2、安装Python IDE
建议使用PyCharm Community,下载地址:https://www.jetbrains.com/pycharm/download/#section=windows
3、安装Frida
通过pip命令安装Frida。
安装命令:pip install frida
请注意:我的演示环境中,并没有把Python及相关程序添加到PATH环境变量中,所以需要进入pip.exe程序所在的目录中执行,才会出现上述警告。建议添加到PATH环境变量,在任何目录中都可以使用。
安装就是如其简单,有木有,没有办法。
使用
使用Frida实现动态插装非常容易,与Xposed相比,简直爽的不行不行的。但是需要一点点Python的基础知识。
笔者没有Python基础,可以说不会Python,但是看看官方的API,按照流程编程,是没有问题的。
按照官方的入门示例来一发,代码如下:
importfrida
#附加到记事本进程,只有附加到目标进程,才能对其进行操作,这个必须是动态插装的第一步
session = frida.attach("notepad.exe")
#获取记事本进程加载的所有模块(动态库、程序)
modules = session.enumerate_modules()
print("=========== modules ===========")
formoduleinmodules:
print(module.name)#加载的模块名称
# print(module.base_address) #模块在内存中的基址
# print(module.size) #模块占空间大小
# print(module.path) #模块文件位置
print("=========== exports ===========")
m1st = modules[1]
#模块的导出函数表
exports = m1st.enumerate_exports()
forexportinexports:
print(export)
print("=========== ranges ===========")
#模块在内存中的映射
ranges = m1st.enumerate_ranges("rwx")
fora_rangeinranges:
print(a_range)
#取消附加进程
session.detach()
以上程序源码地址:https://github.com/fooree/fooFrida/blob/master/install/inject_notepad.py。
执行以上程序的方式有两种:
(1)使用Pycharm运行
(2)使用命令行运行
请不要在意我的python.exe程序文件路径,这是无关紧要的。
运行一下看看效果吧。
如果是初次接触Frida,感觉怎么样,是不是挺无聊的。
哈哈,动手体验一把,一定会觉得真的好简单。
下一篇文章将要演示Frida在Android中的应用。
领取专属 10元无门槛券
私享最新 技术干货