gpt4 book ai didi

c - 需要在IDA Pro中解读C代码

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:36 27 4
gpt4 key购买 nike

我正在使用 IDA Pro 反汇编以下 C 代码:但是,在我看来,看下面的反汇编似乎不完整。数据从未被初始化(根据 C 代码),即使它看起来确实被加载到堆栈中,但是位于 00401040 的过程(nullsub_1)不使用数据?我是在做出正确的评估还是遗漏了什么???我使用 Visual C++ 6/2005 编译了 C 代码。

#include <stdio.h>
#include <windows.h>

struct a
{
char s[10];
BYTE b;
int i;
};

a al;
void init(a);
void main()
{
init(al);
};

void init(a c)
{
for(int j = 0; j < 10; j++) c.s[j] = 'A';
c.b = 10;
c.i = 10000;
};


.text:00401000 ; int __cdecl main(int argc,const char **argv,const char *envp)
.text:00401000 _main proc near ; CODE XREF: start+AFp
.text:00401000
.text:00401000 argc = dword ptr 4
.text:00401000 argv = dword ptr 8
.text:00401000 envp = dword ptr 0Ch
.text:00401000
.text:00401000 mov ecx, dword_4084C0
.text:00401006 mov edx, dword_4084C4
.text:0040100C sub esp, 10h
.text:0040100F mov eax, esp
.text:00401011 mov [eax], ecx
.text:00401013 mov ecx, dword_4084C8
.text:00401019 mov [eax+4], edx
.text:0040101C mov edx, dword_4084CC
.text:00401022 mov [eax+8], ecx
.text:00401025 mov [eax+0Ch], edx
.text:00401028 call nullsub_1
.text:0040102D add esp, 10h
.text:00401030 retn
.text:00401030 _main endp
.text:00401030
.text:00401030 ;
.text:00401031 align 10h
.text:00401040
.text:00401040
.text:00401040
.text:00401040 nullsub_1 proc near ; CODE XREF: _main+28p
.text:00401040 retn
.text:00401040 nullsub_1 endp

最佳答案

除了写入内存之外,您的源代码没有任何副作用。编译器将这些写入视为无用。

如果您在 Debug 模式(而不是 Release)下编译它或关闭一些编译器优化,您可能会有更好的运气。

或者,对定义为 volatile 的变量的访问将被保留,因此您可以在代码中添加 volatile

关于c - 需要在IDA Pro中解读C代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805665/

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