【发布时间】:2019-02-12 17:15:32
【问题描述】:
我只是盯着学习组装和逆向工程。我知道这是一个非常基本的问题,但我仍然不能 100% 确定我是否得到了正确的答案。 __p___argv返回传递给程序的参数并将返回值存储在eax中。
我的问题与代码有关:
call __p___argv
mov edi, [eax]
- 据我了解
eax将包含argv[0]的内存地址,这是正确的吗? -
argv[0]其实不是用户传递的第一个参数而是别的什么,用户传递的参数是从argv[1]开始的? - 由于
[eax]将访问eax中指定位置的内存,所以argv[0]的值被移动到edi?
【问题讨论】:
-
您的所有问题都取决于调用
__p___argv在您的平台上所做的事情。据我所知,这不是标准功能,因此您必须参考任何可用的文档。否则,您必须通过检查您怀疑它返回的内存地址来推断实际返回的类型是什么。
标签: assembly visual-c++ x86 argv calling-convention