惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
V
V2EX
博客园_首页
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
H
Help Net Security
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Blog — PlanetScale
Blog — PlanetScale
W
WeLiveSecurity
云风的 BLOG
云风的 BLOG
D
Docker
Security Archives - TechRepublic
Security Archives - TechRepublic
Help Net Security
Help Net Security
N
News and Events Feed by Topic
Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
博客园 - 三生石上(FineUI控件)
aimingoo的专栏
aimingoo的专栏
Hacker News: Ask HN
Hacker News: Ask HN
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy International News Feed
T
Troy Hunt's Blog
T
Tenable Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Recorded Future
Recorded Future
F
Fortinet All Blogs
D
DataBreaches.Net
B
Blog
T
Threat Research - Cisco Blogs
MyScale Blog
MyScale Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
The GitHub Blog
The GitHub Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence

博客园 - GKLBB

软件研发 --- AI模型 之 图片转xlsx 软件神器 --- ctf靶场 之 pwn.college 术语俗话 --- 什么是加密狗 软件神器 --- 自动电脑锁屏软件 软件研发 --- 网络安全 之 putty生成无密码登录密钥 软件神器 --- 视频剪辑 之 Avidemux MP4Joiner Shotcut 软件神器 --- 视频格式转化 之 handbrake 软件研发 --- 经验之谈 这个是什么图标,经常看到 软件研发 --- 术语俗话 之 多模态 术语俗话 --- 什么是大数据开发 软件研发 --- 术语俗话 之 什么是边缘计算 软件研发 --- 应知应会 之 什么是云计算开发 应知应会 --- 如何不装软件查看网速 常见问题解决 --- 360拦截接触 常见问题解决 --- 加入会议摄像头无法打开 网络安全 --- CTF打靶 之 ZIP伪加密 → Robot36慢扫电视 → 二维码补齐 → DeepSound隐写 → GPG解密 → Base64图片 → SilentEye隐写 软件研发 --- 应知应会 之 无错误的闪退如何解决 软件研发 --- 应知应会 之 为什么别人的软件如此复杂我的如此简单 网络安全 --- 应知应会 之 什么是旁站 应知应会 --- 如何查询备案 软件神器 --- 格式转化 之 jpg 2 svg 网络安全 --- CTF打靶 之 flag搜索 软件神器 --- 互联网测速 之 软件神器 --- 局域网测速 之 iperf 常见问题解决 --- 模拟器USG6000打开后,启动设备失败,错误40 软件研发 --- AI网络 之 ensp配置生成 软件研发 --- AI编程 之 极简流程 软件研发 --- AI生图产品比较 常见问题解答 --- 为什么我的服务一直被人DDOS 软件研发 --- 开发万能格式转化工具 网站神器 --- 在线格式转化 之 文档转md 术语俗话 --- 什么是云电脑 常见问题解决 --- 如何在没有安装杀毒软件的情况下知道这个文件是不是牧马 常见问题解决 --- Win10下VMware 17安装VMware Tools选项灰色/失效解决办法 常见问题解决 --- 云电脑报错 :PAGE FAULT IN NONPAGED AREA 记一次牧马的发现 人生感悟 --- 为什么我们生活中同一件事有多个品牌,他们到底有什么区别 软件运维 --- 云电脑安装打印机 常见问题解决 --- 网络打印默认端口 常见问题解决 --- 京瓷打印云电脑无法设置双面打印 软件研发 --- 网络安全 之 brupsuite如何设置上游袋里 术语俗话 --- 什么是同步和异步 我的目标 软件研发 --- dify配置 之 markword转word带有简单样式的方法 软件研发 --- 接口文档格式 常见问题 --- dify 的 deepseek是旧模型版本 OWASP 非营利性开源社区 计算机标准化组织 术语俗话 --- POSIX 就是 Unix 世界的"普通话",大家说同一种语言就能互相理解。 我的数字生活唯一选择 软件开发 --- 安卓开发 之 命名空间隔离 术语俗话 --- 页面对齐、 跨页 计算机的哪些人 --- 社交之王 马克·扎克伯格 计算机的哪些人 --- 重新定义新能源 之 埃隆·马斯克 软件研发 --- AI生成ppt word excel pdf的开发关键 软件研发 --- AI应用开发 之 AI生成Word 人生感悟 --- 致可悲的人 软件研发 --- pdf 表格图片 转 excel 常见问题解决 --- 装有系统的固态硬盘错误 人生感悟 --- 什么是行业黑话 术语俗话 --- Kubernetes 术语俗话 --- 什么是DBI,和hook什么区别 答疑解惑 --- 为什么苹果手机电池不允许拆卸 代码可视化技术 术语俗话 --- Wrap 函数 人生感悟 --- 逆向工程为什么十分枯燥且无聊 --- 这里引用一句逆向工程核心原理的话 人生感悟 --- 为什么干活时不见同事,活干完了就来了 软件研发 --- AI应用研发 之 提炼提示词 软件研发 --- AI应用开发 之 AI生成PPT最佳方案 基于屏幕-摄像头的单向数据传输方案设计 俗语俗话 --- 纯虚函数 硬件研发 --- 产品介绍 之 AX6 硬件研发 --- 产品大全 之 SUMAVISION CM50X 应知应会 --- 为什么U盘不识别但是还是可以数据恢复回来 应知应会 --- 为什么我删除了一个文件但是还是可以恢复回来 软件研发 --- AI UI设计 之 PC端效果比对 常见问题修复 --- chrome浏览器白屏 应用安全 --- 逆向工程 之 C++类的本质 软件研发 --- AI提示词开发 之 代码注释提示词 dobby反编译 https://www.cnblogs.com/Un1corn/p/18615567 应知应会 --- 手机作为热点,windows电脑临时作为网关,给其他电脑上网 应知应会 --- 大量小文件如何快速迁移 常见问题解决 --- apk安装过程中闪退 应用安全 --- 安卓逆向 之 dobby框架 在线生成 APK 图标工具推荐 一个开源库 术语俗话 --- 什么是软件即服务 软件神器 --- 常用谷歌插件 人生感悟 --- 为什么两句话可以说明白的事情要500字说明 软件研发 --- Dify 生成 PPT 方案分析 应用安全 --- 逆向技巧 之 IDA未知函数如何识别 https://yuuki.cool/ 应用安全 --- 逆向技巧 之 ELF节(Section) 与 段(Segment) 硬件研发 --- 接口 人生感悟 --- 为什么ld一直爱开会 应用安全 --- 逆向技巧 之 IDA和claude反编译缺陷 应用安全 --- 逆向技巧 之 ida反编译yahfa的so和源码的差异化比对
应用安全 --- 逆向技巧 之 识别未知函数
GKLBB · 2026-04-11 · via 博客园 - GKLBB

应用安全 --- 逆向技巧 之 识别未知函数

生成 ARM64 FLIRT SIG 文件完整流程

环境说明

text

工具: IDA Professional 9.3 (Windows)
目标: libc++_shared.so (ARM64)
问题: pelf.exe 不支持ARM64
解决: 用IDA打开so后用idb2pat.py导出pat

第一步:准备工作目录

PowerShell

# 创建工作目录
New-Item -ItemType Directory -Force -Path C:\sig_work
cd C:\sig_work

# 复制sigmake工具
Copy-Item "C:\Program Files\IDA Professional 9.3\tools\flair\sigmake.exe" C:\sig_work\

第二步:获取目标so文件

PowerShell

# 方法1: 从NDK目录获取
$ndkBase = "$env:LOCALAPPDATA\Android\Sdk\ndk"
$ndkVer = (ls $ndkBase | Select-Object -Last 1).FullName

$soPath = "$ndkVer\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\lib\aarch64-linux-android\libc++_shared.so"
Copy-Item $soPath C:\sig_work\

# 方法2: 从APK提取
# 把APK改名为zip解压
# 取 lib\arm64-v8a\libc++_shared.so

# 方法3: adb从设备提取
# adb pull /system/lib64/libc++_shared.so C:\sig_work\

PowerShell

# 验证so文件有效性
$bytes = [System.IO.File]::ReadAllBytes("C:\sig_work\libc++_shared.so")
$bytes[0..19] | ForEach-Object { "{0:X2}" -f $_ }

# 正确输出:
# 7F 45 4C 46  → ELF魔数 ✓
# 02           → 64位    ✓
# B7           → ARM64   ✓

第三步:用IDA打开so生成IDB

text

1. IDA打开 libc++_shared.so
2. 等待自动分析完成(进度条消失)
3. File → Save 保存IDB文件

第四步:下载安装 idb2pat.py

text

浏览器打开:
https://github.com/fireeye/flare-ida/blob/master/python/flare/idb2pat.py

下载后复制到:
C:\Program Files\IDA Professional 9.3\plugins\idb2pat.py

第五步:导出PAT文件

text

IDA中操作:
1. File → Script file
2. 选择 idb2pat.py
3. 弹出对话框选择保存位置:
   C:\sig_work\libcxx.pat
4. 等待导出完成

第六步:生成SIG文件

PowerShell

cd C:\sig_work

# 注意: 文件名不能含++号
# libc++_shared.pat → 重命名为 libcxx.pat

.\sigmake.exe libcxx.pat libcxx.sig

text

第一次运行输出:
libcxx.sig: modules/leaves: 1670/3039, COLLISIONS: 129
同时生成 libcxx.exc 冲突文件

第七步:处理EXC冲突文件

PowerShell

# 正确处理方式: 只删除开头4行注释
$content = Get-Content "C:\sig_work\libcxx.exc" -Encoding UTF8 -Raw

# 删除开头注释行
$newContent = $content -replace '(?s)^(;[^\r\n]*[\r\n]+){1,4}', ''

# 保存
[System.IO.File]::WriteAllText("C:\sig_work\libcxx.exc", $newContent)

# 验证格式(前5行应该是空行或函数名)
Get-Content "C:\sig_work\libcxx.exc" | Select-Object -First 5

text

正确的EXC文件格式:
(空行)
函数名A    00 0000 AABBCC...
函数名B    00 0000 AABBCC...
(空行)
函数名C    08 FC78 DDEEFF...
函数名D    08 FC78 DDEEFF...

第八步:重新生成SIG

PowerShell

# 删除旧sig
Remove-Item "C:\sig_work\libcxx.sig" -ErrorAction SilentlyContinue

# 重新生成
.\sigmake.exe libcxx.pat libcxx.sig

# 成功输出(无COLLISIONS):
# libcxx.sig: modules/leaves: XXXX/XXXX

第九步:安装SIG到IDA

PowerShell

# 复制到IDA sig目录
Copy-Item "C:\sig_work\libcxx.sig" `
    "C:\Program Files\IDA Professional 9.3\sig\arm\libcxx.sig"

Write-Host "安装完成!"

第十步:IDA中应用签名

text

1. 用IDA打开目标so文件
2. Shift+F5 打开Signatures窗口
3. 右键 → Apply new signature(Ins)
4. 找到并选择 libcxx
5. 点击OK等待识别

识别结果:
sub_1EE5C → std::string::c_str    ✓
sub_3F890 → _Unwind_Resume        ✓

完整流程图

text

libc++_shared.so (ARM64)
  IDA打开分析
  idb2pat.py导出
   libcxx.pat
  sigmake.exe
   ┌────┴────┐
   │         │
成功       有冲突
   │         │
   │    处理libcxx.exc
   │    删除前4行注释
   │         │
   │    重新sigmake
   │         │
   └────┬────┘
   libcxx.sig
  复制到sig\arm\
  IDA应用签名
  sub_xxx → 真实函数名 ✓

关键注意事项

text

1. pelf.exe 不支持ARM64
   → 必须用IDA+idb2pat.py方案

2. 文件名不能含++
   → libc++_shared.pat 改名为 libcxx.pat

3. 处理EXC文件
   → 只删除前4行注释
   → 保留所有空行和函数名行
   → 用Raw模式读写避免格式损坏

4. so版本要匹配
   → 目标APK用哪个NDK版本
   → 就用对应版本的libc++_shared.so

5. 签名放置位置
   → ARM64 放 sig\arm\ 目录

我们如何flart分析一个安卓so,用ida打开后发现依赖的so文件和ndk版本号,找到对应版本号的这些so文件,用ph制作sig文件

免责声明 本文档所有内容仅供安全研究、学术交流与技术学习使用,严禁用于任何未经授权的逆向破解、网络攻击、隐私窃取、恶意软件开发及其他违反《中华人民共和国网络安全法》《数据安全法》等法律法规的行为,使用者应确保已获得目标软件权利人的合法授权并自行承担因使用本文档内容所产生的一切法律责任与后果,作者不对任何直接或间接损害承担任何责任,继续阅读即视为您已知悉并同意上述全部条款。

posted on 2026-04-11 05:37  GKLBB  阅读(3)  评论()    收藏  举报