Ida IDC 等同于 GDB /x 和 gdb /p,在地址和 IDA 语法怪癖处访问指针
Ida IDC equivalent of GDB /x and gdb /p, accessing pointer at address and IDA syntax quirks
我实在找不到这个问题的简单答案。我发现 IDC 文档令人困惑。我知道我可以调用 GetRegValue returns 一些我什至不明白的胡言乱语。例如:
36739244. 23098ACh 214114254o 000000000000000000000000000000000000010001100001001100010101100b
第一个是?!第二个是存储在寄存器中的地址,但为什么要将 h 附加到末尾?!第三个不知道是什么。第 4 个是二进制地址(哇,谢谢)。
好吧,让我们看看那个地址有什么。有 UI。
Stack[00000184]:023098AC db 8
Stack[00000184]:023098AD db 0D9h
Stack[00000184]:023098AE db 30h ; 0
Stack[00000184]:023098AF db 2
Stack[00000184]:023098B0 db 33h ; 3
Stack[00000184]:023098B1 db 4Dh ; M
Stack[00000184]:023098B2 db 0C9h
Stack[00000184]:023098B3 db 6Ch ; l
Stack[00000184]:023098B4 db 0C4h
Stack[00000184]:023098B5 db 98h
Stack[00000184]:023098B6 db 30h ; 0
同样,h 被附加到每个字节。我不明白这是什么意思。那么,为什么要在一些字节前面加上 0 呢? C4就是C4,那个0是什么意思
语法怪癖就这些了。该地址存储有一个指针。我希望能够方便地访问它,而不必复制粘贴字节并删除尾随的 h。
最后,我希望能够查看内存中任何地址的值,类似于我在 GDB 中调用 x/16bx 的方式。或者打印地址或立即值,类似于 p 在 GDB 中的工作方式。
非常感谢任何帮助。
首先,正如 Peter 所说,语法位是我的错误,大部分与 IDA 无关。
其次,函数read_dbg_byte、read_dbg_word等(以及相应的get_wide_byte等)可以return地址处的值。
return 值只是使用不同表示法编写的相同值:分别是十进制、十六进制、八进制和二进制。
最后,您可以使用类似以下内容取消引用指针:
read_dbg_dword(read_dbg_dword(0x023098AC))
我实在找不到这个问题的简单答案。我发现 IDC 文档令人困惑。我知道我可以调用 GetRegValue returns 一些我什至不明白的胡言乱语。例如:
36739244. 23098ACh 214114254o 000000000000000000000000000000000000010001100001001100010101100b
第一个是?!第二个是存储在寄存器中的地址,但为什么要将 h 附加到末尾?!第三个不知道是什么。第 4 个是二进制地址(哇,谢谢)。
好吧,让我们看看那个地址有什么。有 UI。
Stack[00000184]:023098AC db 8
Stack[00000184]:023098AD db 0D9h
Stack[00000184]:023098AE db 30h ; 0
Stack[00000184]:023098AF db 2
Stack[00000184]:023098B0 db 33h ; 3
Stack[00000184]:023098B1 db 4Dh ; M
Stack[00000184]:023098B2 db 0C9h
Stack[00000184]:023098B3 db 6Ch ; l
Stack[00000184]:023098B4 db 0C4h
Stack[00000184]:023098B5 db 98h
Stack[00000184]:023098B6 db 30h ; 0
同样,h 被附加到每个字节。我不明白这是什么意思。那么,为什么要在一些字节前面加上 0 呢? C4就是C4,那个0是什么意思
语法怪癖就这些了。该地址存储有一个指针。我希望能够方便地访问它,而不必复制粘贴字节并删除尾随的 h。
最后,我希望能够查看内存中任何地址的值,类似于我在 GDB 中调用 x/16bx 的方式。或者打印地址或立即值,类似于 p 在 GDB 中的工作方式。
非常感谢任何帮助。
首先,正如 Peter 所说,语法位是我的错误,大部分与 IDA 无关。
其次,函数read_dbg_byte、read_dbg_word等(以及相应的get_wide_byte等)可以return地址处的值。
return 值只是使用不同表示法编写的相同值:分别是十进制、十六进制、八进制和二进制。
最后,您可以使用类似以下内容取消引用指针:
read_dbg_dword(read_dbg_dword(0x023098AC))