一.前言
frida是一个款优秀的hook框架。本篇文章是对自己根据frida编译手册在编译frida源码过程中的回顾总结以及遇到的问题如何解决的,分享给在编译frida源码过程遇到问题的坛友。
下面我们就根据来进行编译
二.win编译
2.1.编译环境
首先要确认编译前的环境:
1,VS2022
2,Git
3,python
4,NodeJs
关于python环境和Nodejs要注意的是:python环境必须安装在这个目录下C:\Program Files\Python310\,否则会无法编译。
2.2.自定义python路径
由于python的默认安装路径在appdata路径下,也可以修改releng/frida.props文件中的<PythonLoacation>标签来修改python的加载路径。
<PythonLocation Condition="'$(PythonLocation)'=='' AND '$(Platform)'=='x64'">你的python路径</PythonLocation>
<PythonLocation Condition="'$(PythonLocation)'=='' AND '$(Platform)'=='Win32'">你的python路径</PythonLocation>
2.3.nodej版本的选择
编译手册并未对nodejs的版本要求有说明,并不是你可以使用任意你喜欢的nodejs版本进行编译。这里我们参考来选择nodejs的版本。
其中V83,V93就是nodejs的版本。
我们可以对比nodejs的版本号来选择安装nodejs的版本,我这里选择的是V93。
至此我们需要的环境就已经准备好了,下面开始clone源码。命令:git clone --recurse-submodules https://github.com/frida/frida
2.4.编译windows Toolchain and SDK
执行releng/build-deps-windows.py全自动编译。脚本执行成功后你可以下楼去打篮球,跑步,玩累了回来你会发现已经编译好了。这个过程是非常耗时的,因为会编译各种版本的SDK,我的自己12核3.7G频率的CPU编译了约70分钟左右。生成目录在build/
2.5.开始编译
如果已经进行到了这一步,所有的准备工作我们已经完成了。用VS2022打开frida目录下的frida.sln。选择你喜欢的版本,win32/x64/Debug/Release。右键frida-core这个工程,选择生成。如果不出意外的话,要出意外了。在下方的输出目录会输出许多警告日志信息,它会遮挡出现的错误日志,我们可在工程属性编辑禁用特定警告。
全角中文引号导致的错误
解决办法就是在VS中剔除掉所有报错使用全角中文字符的位置。接下来frida-core应该不会遇到什么问题了。
接下来编译全部工程生成frida.dll,只要是frida.dll编译出来后,再出现error一律无视。
生成目录在build/frida-windows/版本/bin。再window上编译frida除了再编译toolchain比较耗时外,其他还是很快的。编译出来的dll我们也只能再windows上使用,如果需要在android平台使用,我们需要在ubuntu下编译。
三.ubuntu20.4编译
关于ubuntu如何安装在本小节中不在赘述,我们除了可以在vmware通过安装ubuntu来进行源码编译这种方式之外,还可以通过wsl安装ubuntu来进行编译。。使用WSL进行编译产生的错误请自行解决,不在本章讨论范围内。
3.1.编译环境
编译前确认的环境
1,ndkr25-linux版本
2,nodejs
3,python3.8
先执行编译手册提供给我们的安装环境命令:sudo apt-get install build-essential curl git lib32stdc++-9-dev \ libc6-dev-i386 nodejs npm python3-dev python3-pip
然后clone frida源码:git clone --recurse-submodules https://github.com/frida/frida.git
3.2.开始编译
通过make命令来获取可编译版本的参数
例如,如果要编译在64位android平台下运行:make frida-android-arm64
ubuntu下编译frida不用预先编译toolchain和SDK。因为make执行的脚本会从网络上下载已经编译好的的toolchain和SDK。
我在ubuntu下只遇到这个错误,Cannot load plugin "typescript": Not supported
解决办法是更换nodejs版本(和win一致)来解决,也许是通过apt-get安装的nodejs版本较低的原因。
生成目录:frida/build/frida-android-arm64/bin
四.frida-tools安装
frida-tools是安装frida在windows上执行的pyhon环境。如果你已经完成第二节win编译,那么你需要在frida-tools/agents/fs目录下执行npm install 和 npm run build两条命令,然后再frida-tools目录下执行python setup.py install。通过pip list命令检查是否安装成功。