模块名称与其镜像文件名称不同

2022-01-23 12:03:39 标签 windowswindbgportable-executable

因此,在windbg上调试可执行文件后,我注意到模块名与映像名不同。

在第一次加载可执行文件并在入口点之前设置断点时,lm vm/!For_each_module命令显示了这一点。

start    end        module name
00a30000 00a38000   Injection C (no symbols)           
    Loaded symbol image file: C:\Users\user\Downloads\Bird.exe
    Image path: Injection.exe
    Image name: Injection.exe
    Browse all global symbols  functions  data
    Timestamp:        Mon May 24 22:30:53 2021 (60AC0CFD)
    CheckSum:         00000000
    ImageSize:        00008000

正如你可以看到上面的图像名称字段不对应于加载的符号图像文件名。

知道为什么吗?是否与。pdb文件路径有关?

我在体育课上找不到这方面的相关信息。

怎样才能做到这一点呢?

###提到的是,在lm的文档中,这两个模块可能会有很大的不同,还有_each_module的

for_each_module有两个命令字符串,一个是@#ModuleName,另一个是@#ImageName

我没有看太多,但有时我看到像foo_1480xxx等替换

你有一个可共享的二进制显示这种行为吗

编辑

刚才浏览了一下文件,它显示的是二进制文件中的PDB文件的名称

是Injection。pdb

并且可执行文件在编译后已被重命名

F:\Latebird>ls
LateBird.exe
F:\Latebird>file LateBird.exe
LateBird.exe: PE32 executable (console) Intel 80386, for MS Windows
F:\Latebird>certutil -hashfile LateBird.exe sha1
943710a2a04caeae3ab21cc8be83ebc1d556e127
   
F:\Latebird>certutil -hashfile LateBird.exe md5
c8e3b7b9dc2541574335f9141e3ca4bf
   
F:\Latebird>dbh LateBird.exe
LateBird [1000000]: i
      ModuleName : LateBird
       ImageName : LateBird.exe
 LoadedImageName : F:\Latebird\LateBird.exe
   LoadedPdbName :
           CVSig : 0x53445352
          CVData : C:\Users\Dynamic\source\repos\Injection\Release\Injection.pdb
          PdbAge : 0xa
    PdbUnmatched : false
     MachineType : I386
LateBird [1000000]:

只是为了再次确认我编译了一个消息框,并在编译后重新命名它

windbg加载并检查LMVM

下面的结果

ls -lg
total 17
-rwxr-xr-x 1 12800  LateBird.exe
-rw-r--r-- 1   165  LateBirdie.cpp
cat LateBirdie.cpp
#include <windows.h>
int WINAPI WinMain (_In_ HINSTANCE,_In_opt_ HINSTANCE,_In_ LPSTR,_In_ int ){
    return MessageBoxA(NULL, "LateBirdie", "Early Birdie", 0);
}
cl /Zi /W4 /analyze /Od /nologo LateBirdie.cpp /link /release user32.lib /entry:WinMain
LateBirdie.cpp
file LateBirdie.exe
LateBirdie.exe: PE32+ executable (GUI) x86-64, for MS Windows
ren LateBirdie.exe EarlyBirdie.exe
cdb -c ".reload /f; lmvm *bird*;q" EarlyBirdie.exe | awk "/Reading/,/quit/"
0:000> cdb: Reading initial command '.reload /f; lmvm *bird*;q'
Reloading current modules
start             end                 module name
00007ff6`87e50000 00007ff6`87e54000   LateBirdie     F:\Latebird\LateBirdie.pdb
    Loaded symbol image file: F:\Latebird\EarlyBirdie.exe
    Image path: LateBirdie.exe
    Image name: LateBirdie.exe
    Timestamp:        Tue Jun  1 02:56:35 2021 (60B5548B)
    CheckSum:         0000FCA9
    ImageSize:        00004000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:
quit:
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码