该地址可以用来进一步分析当前的问题吗?
c484f\mscorlib.ni.dll) mscorlib.ni.dll
(14116) loading library at 77130000 (C:\Windows\SysWOW64\ole32.dll) ole32.dll
(14116) loading library at 70100000 (C:\Windows\SysWOW64\uxtheme.dll) uxtheme.dll
(14116) loading library at 700A0000 (C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll) mscorjit.dll
(14116) loading library at 6C3C0000 (C:\Windows\Microsoft.NET\Framework\v2.0.50727\Culture.dll) Culture.dll
(14116) unloading library at 6C3C0000 (C:\Windows\Microsoft.NET\Framework\v2.0.50727\Culture.dll) Culture.dll
(14116) Unknown exception e06d7363 in thread 10352
#1 楼
由于主题中的问题与问题正文中的问题略有不同,因此我将重点介绍第一个问题。在特定地址处反汇编
为了使用radare2在特定存储器地址处反汇编代码,应使用
pd @ <address>
命令。 pd [?] [sz] [a] [b] —反汇编N个操作码(pd)或N个字节
(pD)
将雷达连接到程序后,您应该能够在此特定地址打印反汇编。假定程序的
pid
是317:$ radare2 -d 317
= attach 317 317
bin.baddr 0x00400000
Using 0x400000
asm.bits 64
[0x7f2e51727230]> pd @ <address>
pd
是p
的子命令,代表打印反汇编。您可以检查p?
,尤其是pd?
以获得更多相关的子命令。在radare中大多数命令的末尾添加?
,将打印其帮助及其子命令。默认情况下,pd
从指定的地址打印b条指令,其中b是默认的基本块大小。 b的默认大小为0x100,但您可以使用b <size>
轻松更改它。@
符号是rade的临时查找地址,因此,每当您要在特定地址中打印反汇编时,都应使用它。在@
符号前指定的编号是要打印的指令数量。一个常见的错误是使用pd
之前的地址执行@
。因此,执行pd 0x400000
将从当前搜索中打印0x400000指令。异常
您收到了“未知异常e06d7363”,这是Microsoft Visual生成的异常C ++编译器。
如Microsoft支持页面所述:
原因
Microsoft Visual C ++编译器生成的代码引发的所有Visual C ++异常包含此错误代码。因为这是
编译器生成的错误,所以该代码未在Win32 API中列出
头文件。该代码实际上是一个加密助记符设备,
首字母“ E”表示“ exception”,后3个字节(0x6D7363)
表示ASCII值“ msc”。
要继续进行分析,建议您阅读解码抛出的C ++异常(0xE06D7363)的参数及其相关文章。
请注意,可执行文件的地址位于每次运行时内存可能会改变,这取决于您的系统和程序本身。因此,有时您将无法预测导致异常的地址。
从radare2的书中检查从ida,GDB或WinDBG的移植,以查看radare的相应命令到WinDBG。
#2 楼
在手册中:'p'表示打印。
'd'表示反汇编(通常为原始)
尝试:
pd @ 0xYourAddress
注意:我不确定在发生异常的情况下是否可以使用。
评论
您有一个错误,应该是pd @ 0xYourAddress。否则,它将打印0xYourAddress指令。
–巨型甜菜
17-10-16在18:35
哦,我不好,我会更正以供将来参考。谢谢
– Alpha
17-10-16在18:36
评论
您使用的是哪个版本的r2?进入网站并下载了最新的
您正在使用哪个调试器?您是否尝试过使用radare2调试它? r2 -d program.exe
是的,这正是我运行的命令