gpt4 book ai didi

c - 将汇编翻译成 C 程序

转载 作者:太空宇宙 更新时间:2023-11-04 08:20:35 24 4
gpt4 key购买 nike

这是我正在查看的汇编代码:

push   %ebp
mov %esp, %epb
sub $0x18, %esp
movl $0x804a170, 0x4(%esp)
mov 0x8(%ebp), %eax
mov %eax, (%esp)
call 0x8048f9b <strings_not_equal>
test %eax, %eax
je 0x8048f78 <phase_1+34>
call 0x8049198 <failed>
leave
ret

目标是为程序集函数提供正确的输入以跳转到函数phase_1+34。 .到目前为止,这是我正在解释的内容:

前两行是函数的设置代码。第一个 'sub' 行通过向下移动 '%esp' 来分配空间以存储调用 strings_not_equal 的参数。功能。我认为这两个参数被传递给 strings_not_equal0x804a170和输入值。我假设 <strings_not_equal>如果传递的字符串 相等,将返回 0。 je然后检查是否 %eax & %eax为零,只有在 %eax = 0 时才会发生.所以基本上,似乎输入字符串必须等于 0x804a170 .

到目前为止,有人发现任何缺陷吗?

在这一点上,我卡住了,我尝试过的方法不起作用。 0x804a170十进制是 134521200。但是传递给它的函数需要 strings。所以0x804a170应该转换成字符串?那个字符串是输入应该等于什么?

我不知道。如果有人发现任何缺陷或可以给我指点,我们将不胜感激!

最佳答案

0x804a170 是指向被运行时认为是“字符串”的东西的指针。由于您没有提供有关它是什么的信息,我们只能猜测它是指向第一个字符的指针,后跟更多字符并以 0 结尾,或者它是指向第一个字符的指针,并且前面的 1/2/4/8 字节将长度描述为整数。

它本身不是一个字符串。

关于c - 将汇编翻译成 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33623004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com