我正在使用WinDbg(AMD64)检查64位可执行文件。 这是我使用ML64进行汇编以创建可执行文件的汇编代码:
_data SEGMENT
b DWORD 0
DWORD 0
_data ENDS
_text SEGMENT
主程序
lea rax, a
mov dword ptr [rax], 1
lea rbx, b
mov dword ptr [rbx], 1
mov eax, dword ptr [rax]
add dword ptr [rbx], eax
inc eax
imul eax, dword ptr [rbx]
mov dword ptr [rbx], eax
ret
主要ENDP
_text ENDS
END
这是我的ML64命令:
ml64.exe e:\ Assembly \ WindowsDebugging \ PointersProject \ PointersProject.asm / link / SUBSYSTEM:CONSOLE / ENTRY:main / DEBUG / OPT:NOREF,NOICF,NOLBR
到目前为止,一切都很好。但是,当我加载此可执行文件并反汇编主要功能时,标识符(a和b)丢失了,而是看到了
0:000> uf main
PointersProject!main:
00007ff7`b6211010 lea rax,[PointersProject!main <PERF> (PointersProject+0x4004) (00007ff7`b6214004)]
00007ff7`b6211017 mov dword ptr [rax],1
00007ff7`b621101d lea rbx,[PointersProject!main <PERF> (PointersProject+0x4000) (00007ff7`b6214000)]
00007ff7`b6211024 mov dword ptr [rbx],1
00007ff7`b621102a mov eax,dword ptr [rax]
00007ff7`b621102c add dword ptr [rbx],eax
00007ff7`b621102e inc eax
00007ff7`b6211030 imul eax,dword ptr [rbx]
00007ff7`b6211033 mov dword ptr [rbx],eax
00007ff7`b6211035 ret
我原本希望在LEA行中看到这样的内容:
00000001`40001010 488d05ed2f0000 lea rax,[PointersProject!a (00000001`40004004)]
00000001`4000101d 488d1ddc2f0000 lea rbx,[PointersProject!b (00000001`40004000)]