Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何通过OllyDbg查看位于DS段中的值_Assembly_X86_Reverse Engineering_Ollydbg - Fatal编程技术网

Assembly 如何通过OllyDbg查看位于DS段中的值

Assembly 如何通过OllyDbg查看位于DS段中的值,assembly,x86,reverse-engineering,ollydbg,Assembly,X86,Reverse Engineering,Ollydbg,我正在通过OllyDbg调试一个DLL,发现以下命令: LEA ECX,DWORD PTR DS:[ECX+EDX+8771F681] ECX是90C85FFF和EDX是13F5A9CE,因此最终地址是0x90C85FFF+0x13F5A9CE+0x8771F681=0x12C30004E。不幸的是,我不知道如何查看位于此地址的值。FPU窗口中的Ctrl-G表示“指定地址上没有内存” 提前感谢。请记住,LEA可用于任何计算,而不仅仅是地址(计算的实际结果永远不会被访问/取消引用)。此外,段替代

我正在通过OllyDbg调试一个DLL,发现以下命令:

LEA ECX,DWORD PTR DS:[ECX+EDX+8771F681]
ECX
90C85FFF
EDX
13F5A9CE
,因此最终地址是
0x90C85FFF+0x13F5A9CE+0x8771F681=0x12C30004E
。不幸的是,我不知道如何查看位于此地址的值。FPU窗口中的Ctrl-G表示“指定地址上没有内存”


提前感谢。

请记住,
LEA
可用于任何计算,而不仅仅是地址(计算的实际结果永远不会被访问/取消引用)。此外,段替代对计算没有影响

  • ecx=0x402000;ebx=0x20;FS段前缀覆盖(FS基=0x7FFDD000)
  • mov-ecx,[ecx+ebx-4]result=ecx=0x40201c
要快速检查地址是否映射,在OllyDbg中,您可以在一条指令处停止并检查CPU窗口和转储窗口之间的小窗口:

Address=XXXX
行表示计算结果(在实际执行指令之前)。如果右键单击此行,您可能会看到一个弹出窗口:

  • 如果地址映射到进程地址空间,则您将在弹出菜单上看到一个
    跟随转储
    条目
  • 如果地址未映射,则弹出菜单不会显示
    后续转储
    条目

<>注释:OllyDbg(至少V2)将考虑映射的内核地址映射,尽管它们显然不能从用户字段访问。因此,如果MSB被设置在一个地址中,只考虑它没有映射。

注意,你有一个环绕,32位截断的地址只是<代码> 2C3000 04E < /代码>。也许你会有更好的运气……或者你的有效地址计算。顺便说一句:如果DS不指向线性内存,那么DS寄存器的值在这种情况下对你没有帮助。@Jester谢谢你的回答,但无论如何也没有帮助——地址仍然无法计算find@Martin罗森诺你能给我更多的信息吗,请