步骤 1:建立Makefile
- 选择编译器:选择合适的编译器,例如CMake。
- 构建Makefile:根据目标项目的结构,创建一个Makefile文件,确保Makefile包含编译器的依赖项和目标。
- 示例:
build: ./ (target): $(target) (cc): $(target).c (cc.o): $(target).o $(cc) $(cc.o) -c . (makefile): $(target) make: $(makefile).out $(makefile).out: $(makefile).out -m $(target)
- 示例:
步骤 2:编译目标项目
- 运行编译:使用编译器编译目标项目。
$CMAKE_ECHO=$(find . -type d -name "$1")make echo "echo" $CMAKE_ECHO=$(find . -type d -name "$1")make clean
- 生成编译后的文件:编译完成后,生成编译后的文件,如
build.c.exe。
步骤 3:使用反编译器解压和重编译
- 解压编译后的文件:运行反编译器,解压生成的编译后的文件。
./trojan build.c.exe
- 重新编译:使用反编译器重新编译目标项目。
./trojan build.c.exe
步骤 4:验证反编译器工作
- 运行Make:运行简单的Make命令,检查是否成功。
$CMAKE_ECHO=$(find . -type d -name "$1")make echo "echo"
- 输出结果:运行命令后,观察编译结果,确认反编译器成功恢复了原始编译器。
步骤 5:处理错误信息
- 检查错误提示:反编译器生成的输出中可能包含错误提示,如
error: ...,需要仔细处理。 - 调整反编译器选项:根据错误提示调整反编译器的依赖项,例如增加
--enable-cc或--enable-cc-strict选项。 - 检查Makefile:确保Makefile无误,可能需要调整目标项目的定义或依赖项。
步骤 6:处理额外输出
- 查看生成文件:反编译器可能生成额外的输出文件(如
makefile).out),检查这些文件以确保正确解压和重组代码。
步骤 7:处理依赖项
- 检查Morel依赖:确保使用了正确的Morel依赖,如
cc、make等。 - 安装编译器工具包:如果反编译器依赖编译器工具包,安装它们。
步骤 8:处理反编译器输出
- 查看输出文件:生成的文件中可能包含反编译器的输出,如
makefile.out),检查这些输出以确认恢复成功。 - 重新编译:使用反编译器生成的文件重新编译,确保恢复了原始编译器的代码。
使用反编译器(Trojan)需要以下步骤:
- 建立并构建目标项目的Makefile。
- 编译目标项目,生成编译后的文件。
- 使用反编译器解压和重新编译目标项目。
- 验证反编译器的工作,处理任何错误信息和额外输出。
- 调整Makefile、反编译器选项和依赖项以确保正确恢复。
通过以上步骤,反编译器可以帮助恢复和重置编译器,用于调试、测试或重装系统。




