c++ - ida pro 没有显示完整的反汇编导出功能?

标签 c++ disassembly dllexport ida win32-process

请原谅我的新手问题,但是当我尝试使用

在 header 中导出函数时
__declspec(dllexport) void testfunction(double i);

并在 .cpp 文件中这样声明函数

void testfunction(double i) {
   for (int k = 0; k<10; k++) {
        double j = 0.1;
   }    
}

在使用 IDA pro 反汇编 .exe 文件后,我只看到这个函数:

.text:00401130 ; void __cdecl testfunction(double)
.text:00401130                 public ?testfunction@@YAXN@Z
.text:00401130 ?testfunction@@YAXN@Z proc near         ; DATA XREF: .rdata:off_40BE88o
.text:00401130                 jmp     dword_40C000
.text:00401130 ?testfunction@@YAXN@Z endp

下面我提供了 dword_40C000 的位置

.data:0040C000 ; Section 3. (virtual address 0000C000)
.data:0040C000 ; Virtual size                  : 000004A0 (   1184.)
.data:0040C000 ; Section size in file          : 00000200 (    512.)
.data:0040C000 ; Offset to raw data for section: 0000B200
.data:0040C000 ; Flags C0000040: Data Readable Writable
.data:0040C000 ; Alignment     : default
.data:0040C000 ; ===========================================================================
.data:0040C000
.data:0040C000 ; Segment type: Pure data
.data:0040C000 ; Segment permissions: Read/Write
.data:0040C000 _data           segment para public 'DATA' use32
.data:0040C000                 assume cs:_data
.data:0040C000                 ;org 40C000h
.data:0040C000 dword_40C000    dd 6000001h             ; DATA XREF: testfunction(double)r
.data:0040C004                 align 10h
.data:0040C010                 db    2
.data:0040C011                 db    0
.data:0040C012                 db    0
.data:0040C013                 db    0
.data:0040C014                 db    2
.data:0040C015                 db    0
.data:0040C016                 db    0
.data:0040C017                 db    0
.data:0040C018 dword_40C018    dd 6000003h             ; DATA XREF: .text:004011A0r
.data:0040C01C dword_40C01C    dd 6000004h             ; DATA XREF: .text:004011D0r
.data:0040C020 dword_40C020    dd 6000005h             ; DATA XREF: .text:00401200r
...

既然我有一个 for 循环和其他一些东西,难道不应该有更多的代码吗?实际代码在哪里?

最佳答案

看来您正在使用 C++/CLI。我认为 6000001 是托管方法的标记,它将在运行时由 JIT 代码的地址替换。

为原生 x86 编译二进制文件以查看机器代码。

关于c++ - ida pro 没有显示完整的反汇编导出功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21080069/

相关文章:

dll - 从 DLL 导出生成 header

c++ - MFC如何从另一个类获取CString到CRegSettings类

c++ - "void"c++ 之前的预期主表达式

x64 JMP 指令的汇编解码

dll - 如何查看两个 DLL 之间的差异?

assembly - MIPS堆栈帧(和 "addiu"指令混淆)

c++ - 错误 : the global scope has no GetUrl

c++ - 基于该类的特征禁用类构造函数的正确方法

c++ - 单独的类声明和方法定义文件问题

c++ - 从 DLL 导出 C++ 类