【发布时间】:2021-01-09 08:37:18
【问题描述】:
我正在尝试对 ELF 64 位程序进行逆向工程。
我在<strcmp@plt> 的指针上设置了一个断点。我读到here,正在比较的值存储在rax 和rbx 中。当我使用x 命令时(这里我使用x/s 命令来获取字符串输出,但我也尝试使用x)我收到错误消息<error: Cannont access memory at address *some address*>,确切的命令是@987654335 @。 print 函数确实有效,但这给了我原始数据(我认为是十六进制?)并且我需要字符串,有没有办法将值转换为字符串?
我的系统是 64 位 Windows 10,我m 在windows的linux子系统中使用gdb。
编辑
我使用gdb R(程序名称)开始我的 GDB 会话
节目信息:
然后我运行disass main 来查找与我的输入进行比较的地址,这就是strcmp@plt 所在的位置。
我复制地址并使用b * 0x8001168 设置断点。
插入断点后,我运行run TestArg。
现在程序在我的断点处停止。
我运行info registers 看看里面是否有东西,有。
当我尝试x/s $rax 时,我得到以下输出。
print 命令确实有效,但我需要字符串值。
【问题讨论】:
-
不是描述你做了什么,而是显示它(作为一个完整的GDB会话)。 “原样”的问题等同于“某些事情不起作用”。如果您希望有人帮助您,您需要更加精确。
-
我已经包含了一些输出截图和我使用的命令。
标签: linux gdb windows-subsystem-for-linux