免费的64位反汇编器?

21

Visual Studio Express不包含x64工具包吗? - Cody Gray
@Cody:我不确定。我有Visual Studio 2008专业版,所以这并不是我的问题--问题在于Visual Studio需要运行代码,而我无法做到。 - user541686
嗯,为什么你不能运行这段代码呢?当然,你不必拥有源代码。你可以将调试器附加到已经运行的进程上。 - Cody Gray
3
@Cody:这是内核模式代码...而且,你并不总是希望运行代码来弄清它在做什么。如果它很危险怎么办? - user541686
1
@Mehrdad -- 在虚拟机中运行它。 - bbosak
你可以在这里找到详细的答案:http://reverseengineering.stackexchange.com/questions/1817/is-there-any-disassembler-to-rival-ida-pro - Elmue
6个回答

16

我使用objdump -d命令。 :-) 这个命令对你不起作用吗?


1
+1 哇,它确实可以反汇编。非常感谢! - user541686
@Chris:有一个小问题:是否有办法在代码中标记导出函数?没有它们,反汇编就有点难以理解了。 - user541686
@Mehrdad:哦,你是指从剥离的可执行文件中获取动态符号吗?我不是很确定。 - C. K. Young
@Mehrdad:如果它是由普通的C代码构建的,那么它们应该已经存在。仅供参考,这是我从一个非常简单的.c文件中得到的输出,其中只有foo()和main()函数(只需搜索“foo”即可:http://pastebin.com/49sYkv2q)。 - Nicholas Knight
@Mehdrad @Chris:哦,对了,如果可执行文件被剥离了,你就没有办法了(除了嵌入式工作外,我从不剥离我的二进制文件,所以我会忘记这一点:()。 - Nicholas Knight
@Nicholas:我尝试反汇编 ntoskrnl.exe,但是没有看到任何函数名称...我做错了什么吗?(我正在寻找的 导出函数 应该总是存在的,你不需要符号来识别它们...) - user541686

14
如果你正在使用Windows文件并且有Visual Studio,则可以使用dumpbin工具。
dumpbin /disasm ntoskrnl.exe /out:ntoskrnl.asm

它也不会内联显示导出项,但您可以使用 /exports 开关分别查看它们。然后,您可以编写一个小脚本来解析导出项并在汇编清单中用名称替换地址。


+1 感谢建议。虽然有点繁琐,但如果必须这样做,我想我会的,谢谢。 - user541686
顺便提一句,你也可以使用Windows调试工具中的dbh.exe来获取ntoskrnl.exe的.pdb文件,并显示其中的符号。 - Igor Skochinsky

7

GNU binutils包括objdump这个工具可以使用

-d

--disassemble

显示从objfile中读取的机器指令的汇编语言助记符。此选项仅反汇编预期包含指令的那些部分。

-D

--disassemble-all

类似于-d,但会反汇编所有部分的内容(而不仅仅是预期包含指令的部分)。如果目标是ARM架构,则此开关还会强制解码在代码节中发现的数据片段,就好像它们是指令一样。

大多数已安装GCC或其他开发工具的Linux发行版上已经安装了该工具,Windows版本可通过例如Cygwin获得。


4

ArkDasm是一款64位交互式反汇编工具。支持的文件类型为PE64和裸二进制文件。

http://www.arkdasm.com/

您可以查看导入、导出、调试符号(如果有.pdb文件),将代码翻转为数据,将数据翻转为代码(请参阅readme.pdf中的键盘快捷键),支持书签、添加注释,还可以保存数据库以便后续操作...


2
域名已不存在。 - Chris_F
它仍可在https://tuts4you.com/e107_plugins/download/download.php?view.3522下载。 - user541686

3

http://www.duxcore.com/products.html

http://www.duxcore.com/fs_files/VisualDuxDbgSetup.zip

Visual DuxDebugger是一款64位Windows调试器反汇编器。

主要特点: 完全支持64位本地进程 完全支持64位.NET进程 完整的代码分析 完整的内存分析 代码编辑 内存编辑 模块导出格式(EXE/DLL/CSV) 调试多个进程 调试多个子进程

最低要求: 操作系统:Windows 7 64位/Windows Server 2008 R2 处理器:Pentium 4 3.0 GHz

推荐要求: 操作系统:Windows 7 64位/Windows Server 2008 R2 处理器:双核2.5 GHz 显示器:1920 x 1080


很不幸,Visual DuxDebugger只能适用于64位的图像文件... - Ghita
2
域名已不存在。 - Chris_F

2

WinDbg会转储导出表并让您进行探索。

windbg.exe -z \path\to\someinteresting.exe
x someinteresting!*
uf someinteresting!AnExportedFunction

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接