首页
社区
课程
招聘
[原创]Frida编译2022
2022-10-20 21:10 10265

[原创]Frida编译2022

2022-10-20 21:10
10265

摘要:本文记录目前新版Frida在Window下四个版本Release|Debug and win32|x64 编译

 

编译测试平台:【Windows 11】、【Visual Studio 2022】

 

之前在【Frida编译】中描述的问题这里不再重述

 

一、【Window】
准备工具:VS2022、Git、Python3.10、Node.js、nasm

 

如下图的官方说明,
(1)VS2022社区版对个人而言就远远够用;
(2)Git,都懂的;
(3)最好还是用官方推荐的Python3.10,否则一些python脚本执行可能会有问题;
(4)Node.js,地球自转需要;
(5)nasm 汇编编译器,下图没有提,但是在构建SDK工具链时需要。
(6)7-Zip 怎么还有?这里提一下,这是我常用的cmd工具,path会存在,实际在编译SDK工具链中也发现其使用了7z对编译结果进行最后封装,安装与否自己判断,可能没有的情况下,也会自动下载个7z。

 

要完美构建四个版本,我们如果先构建SDK工具链(本文也是先构建SDK工具链),会省去很多麻烦,也能有效避免各种错误缺失代价。当然,如果不预先构建SDK工具链,在四个版本[Release,Debug]X[win32,x64]的构建中,也可能会有漫长的网络下载工具链动作,如果下载过程中有错误或缺失,异常定位将带领我们进入迷失世界。

 

图片描述

 

启动命令行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@rem 设置python环境
@set PYTHONHOME=D:\Python310_64
@set PYTHONPATH=%PYTHONHOME%\Lib\idlelib;%PYTHONHOME%\DLLs;%PYTHONHOME%\lib;%PYTHONHOME%;%PYTHONHOME%\lib\site-packages
@set PATH=%PYTHONHOME%;%PYTHONHOME%\Scripts;%PATH%
 
@rem 设置git\nodejs\nasm\7Z路径
@set PATH=C:\Program Files\Git\cmd;%PATH%
@set PATH=d:\nodejs;%PATH%
@set PATH=d:\nasm;%PATH%
@set PATH=d:\7-Zip;%PATH%
 
@rem vs2022 x64 cmd 环境初始化
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
 
@REM 取代码,漫长的下载,漫长的构建SDK工具链
git clone --recurse-submodules https://github.com/frida/frida
cd frida
python releng\build-deps-windows.py
 
@rem 最终会生成 build\toolchain-windows-x86.exe 和build\sdk-windows-any.exe 工具链及SDK自解压包
@rem 我们通过7z直接解压到当前目录,注意[-o.]紧跟当前目录点
@rem 这样我们就得到了四个版本需要的相关文件
cd build
7z x sdk-windows-any.exe -o.
7z x toolchain-windows-x86.exe -o.
 
得到以下编译所需SDK和工具链目录,目录包含四个版本所需头文件和库等内容
build\sdk-windows
build\toolchain-windows
 
 
在打开vs2022前,我们先修正【frida\releng\frida.props】文件中的Python路径,如下
    <PythonLocation Condition="'$(PythonLocation)'=='' AND '$(Platform)'=='x64'">$(ProgramFiles)\Python310</PythonLocation>
    <PythonLocation Condition="'$(PythonLocation)'=='' AND '$(Platform)'=='Win32'">$(MSBuildProgramFiles32)\Python310</PythonLocation>
 
修改为自己Pyhont310的3264位版本
 
    <PythonLocation Condition="'$(PythonLocation)'=='' AND '$(Platform)'=='x64'">D:\Python310_64</PythonLocation>
    <PythonLocation Condition="'$(PythonLocation)'=='' AND '$(Platform)'=='Win32'">D:\Python310_32</PythonLocation>
 
当然,到这里,在命令行输入快捷链接启动前,可以参考之前的文章修正vala相关文件的【“%s”】修改为【\"%s\"】,或等到编译出错再找相关c文件同名vala文件修改。
 
最后命令行通过快捷方式启动vs2022(为了继承上述配置的环境变量),打开frida.sln进行愉快的编译
"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022.lnk"

如果是Unicode和%s字符相关问题,参考之前的文章修正。
如果是 WindowsPath 问题
把【frida\releng\deps.py】或相关错误文件的参数【path_var】变换为【str(path_var.absolute())】,如下异常代码

1
2
for file in (target_dir / "sdk-windows" / subdir_name).iterdir():
    shutil.move(file, location)

改为

1
2
for file in (target_dir / "sdk-windows" / subdir_name).iterdir():
    shutil.move(str(file.absolute()), str(location.absolute()))#shutil.move(file, location)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-10-21 08:50 被tritium编辑 ,原因:
收藏
点赞4
打赏
分享
最新回复 (5)
雪    币: 61
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fkueihcy 2022-10-21 10:39
2
0
大佬 怎么用vs2022 编译安卓端的frida server,现在编译出来的是windows端的
雪    币: 2112
活跃值: (5642)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
微启宇 2022-10-21 13:18
3
0
fkueihcy 大佬 怎么用vs2022 编译安卓端的frida server,现在编译出来的是windows端的
要用ndk编译
雪    币: 61
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fkueihcy 2022-10-21 14:22
4
0
爱我佳鑫 要用ndk编译
大佬 有没有详细的教程?
雪    币: 235
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
descosmos 2022-10-26 10:52
5
0
fkueihcy 大佬 有没有详细的教程?
$ sudo npm install -g n
$ sudo n stable
$ node -v

$ sudo apt-get install build-essential curl git lib32stdc++-9-dev \
    libc6-dev-i386 nodejs npm python3-dev python3-pip
$ apt-get install gcc-multilib g++-multilib.      // see: Missing include "bits/c++config.h" 
$ export ANDROID_NDK_ROOT=/your_path/ndk_r25

$ git clone --recurse-submodules https://github.com/frida/frida.git
$ cd frida
$ git checkout 16.0.2
$ make core-android-arm64f

$ #make tools-linux-x86_64
$ make python-linux-x86_64

这样就能编出来 frida-server, 顺便问一下,大佬在win10 上咋编过的? 可以分享一下吗?
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_uoucbtse 2022-11-30 19:13
6
0
有点坑啊,有的地方编码不改成utf16会报错,有的地方改成utf16会报错,在%s周围的如果是汉语的“”需要改成英文的'',但还是感谢大佬
游客
登录 | 注册 方可回帖
返回