NotDec
1.0.0
Webサイト
中文
notdecです
キーワード:リバースLLVM、LLVM Cバックエンド / LLVM-CBE。
Ubuntu 22.04に基づいています
aptを使用してください sudo apt install wabt python-is-python3 clang-14 cmake zlib1g-dev g++ ninja-build
wasi-sdkを/optにインストールします wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz -P /tmp
sudo tar xf /tmp/wasi-sdk-20.0-linux.tar.gz -C /opt
scripts/build-debug-llvm.shを実行して、LLVMをダウンロードおよびビルドします。リンク中にメモリがないというエラーが発生する可能性があります。並列数を1に減らすだけです。SOUFFLE_DOMAIN_64BIT=ON文档站
本项目旨在:
学习阶段:
llvm ir基础:只要达到能手写llvm ir的程度就行。即主要理解各种语言特性对应的是什么样的llvmir代码。同时理解带aloca
SSA与编译优化基础
ssa的实验
其他不错的资料:
反编译
现有的反编译器和资料
为什么要使用LLVMIR?
优先实现wasm的反编译。

compilation逆コンパイル用の静的な単一の割り当て
反编译中的关键算法:タイプリカバリー(通过指令约束推导类型)構造分析(恢复控制流)
由于基于LLVMIR、因此语言采用C++。
开发环境:vscode +cmake。将wabt、llvm
2023年9°7日注:由于对llvm的调试需求越来越多、项目转为使用本地源码编译的llvm
vscode devcontainer。出于性能考虑、在クローン时可以直接クローン到wslext4文件系统里。
Remote-Containers: Rebuild and Reopen in container 。如果出现了无法使用windows侧的ssh-agent
直接使用自带的c/c ++调试、不知道为什么会非常慢、gdb执行バックトレース要卡3秒、各种ステップ命令要卡5-6秒。因此安装使用vscode
代码补全使用Clangd插件。根据提示禁用インテリセンス、然后根据插件提示确认下载clangd。
反编译器自身:能够对「内存」中的变量也构建ssa进行优化。
最终的结果能够很好地重编译。
反编译器实现过程尽量记录完善的文档、未来考虑整理扩写为系列教程。
wasmlift到llvmir
设计一个映射、将lift之后的ir反向转回wasm