365网站游戏

BC文件逆向

📅 2026-02-03 13:54:30 👤 admin 👁️ 9741 ❤️ 461
BC文件逆向

参考链接:https://blog.csdn.net/weixin_47778392/article/details/141107768

https://www.cnblogs.com/Q7h2q9/p/18590724

LLVM

BC(bitcode)逆向

clang llc llvm 常用编译指令-CSDN博客

将C文件编译为LLVM bitcode 文件

1clang -o3 -emit-llvm hello.c -c -o hello.bc

由于.bc 是bitcode的二进制格式,.ll 文件 llvm bitcode 的可读文本

1clang -o3 -emit-llvm hello.c -S -o hello.ll

llvm-dis 工具反汇编llvm bitcode 文件, 可以将bc文件转为.ll文件

1llvm-dis hello.bc

用 llvm-as 工具通过汇编文件(.ll 文件)得到字节码文件(.bc 文件)

1llvm-as hello.ll hello.bc

.bc编译成.o第一种方法:用clang直接将其编译为可执行文件

1clang a.o.bc -o struct

1第二种方法:用llc先将bc编译为汇编,再用本地的gcc将其编译为可执行文件。

12llc a.o.bc -o hello.sgcc hello.s -o hello

编译生成可执行文件

1clang hello.c -o hello

或者

1clang -emit-llvm -c hello.c

.bc到.s编译指令

1clang -S -fobjc-arc struct.bc -o struct.s

工具clang llvm

12sudo apt updatesudo apt install llvm clang llvm-dev llvm-runtime lldb

检查版本

12llvm-config --versionclang --version

1. 处理.bc文件.bc文件是 LLVM 中间表示(IR)的二进制格式。要逆向分析它,需将其转换为可读的文本格式(.ll)。

a. 转换为 LLVM IR 文本格式使用llvm-dis工具(LLVM 反汇编器):

1llvm-dis input.bc -o output.ll

生成的output.ll是文本形式的 LLVM IR,可用文本编辑器查看。

b. 直接查看.bc文件信息分析.bc文件结构:

1llvm-bcanalyzer input.bc

2. 使用 Clang 编译/反编译a. 将 .bc 编译为可执行文件1clang input.bc -o output

生成的可执行文件output可用逆向工具(如 Ghidra、IDA Pro)分析。

b. 反编译为 C 代码(需额外工具)直接反编译 LLVM IR 到 C 代码需要第三方工具,例如:

RetDec:支持 LLVM IR 反编译。

12345678910# 安装 RetDecgit clone https://github.com/avast/retdec.gitcd retdec./retdec-support.shmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=/path/to/installmake && make install# 使用 RetDec 反编译retdec-decompiler.py input.bc

3. 动态分析(调试)使用lli( LLVM 解释器)直接运行.bc文件:

1lli input.bc

结合调试器(如 gdb 或 lldb)跟踪执行流程:

1lldb -- lli input.bc

bc版本兼容问题最好根据原生编译平台去下载

个人做法是查看内容安装对应版本

将 .bc 转换为 .ll(LLVM IR 文本格式),查看头部信息:

12llvm-dis Dragon.bc -o Dragon.llhead -n 20 Dragon.ll

关键信息:

target triple:目标平台(可推断兼容的 LLVM 版本)。

如果文件包含 llvm.ident,会显示 Clang 版本:

是windows下vs生成的,但版本切换麻烦,直接kali安装了

1234wget https://apt.llvm.org/llvm.shchmod +x llvm.shsudo ./llvm.sh 17sudo apt install clang-17

编译时指定目标三元组

1clang-17 -target x86_64-pc-windows-msvc19.39.33522 Dragon.bc -o output

切换版本可以参考这个:https://blog.csdn.net/weixin_45100742/article/details/139897786

遭遇该报错

错误原因

你正在 Linux(Kali)上编译一个面向 Windows(x86_64-pc-windows-msvc)的 LLVM Bitcode 文件。

Clang 默认会尝试调用 Linux 的链接器 ld ,但 .bc 文件包含 MSVC 特有的库依赖(如 libcmt,Windows 的 C 运行时库)。

用vscode配置环境:https://zhuanlan.zhihu.com/p/613922486

llvm下载网址:https://releases.llvm.org/download.html

安装llvm配置环境变量,将mingw64 文件夹中的所有文件拷贝到 LLVM

正式逆向Dragon.bc文件(XYCTF2025–Re)

–target=x86_64-w64-windows-gnu 或 –target=x86_64-w64-mingw

可以vs下载msvc库,但不影响,exe已生成,可以逆向了

上一则传输
美丽的贝壳从古至今各大用途 你了解多少
下一则传输
蜀山区长腿妹妹

相关星图