exe如何工作以及如何调用dll和exe文件寻址

时间:2010-11-22 03:50:14

标签: assembly executable exe ida

  • 基于Windows的可执行文件如何工作?
  • 如何在可执行文件中找到起始地址?
  • 对于任何文件执行,存储地址的位置以及我们如何读取这些地址?
  • 任何dll或exe文件的调用和ret如何工作?

给我提示使用ida pro反汇编程序。

2 个答案:

答案 0 :(得分:1)

程序的虚拟起始地址记录在可执行文件的标题中。任何理解这些结构的标题查看器程序都可以轻松地显示它们,例如HT(http://hte.sf.net/) - 仅举几例。 IDAPro可能有类似的东西。

答案 1 :(得分:0)

  

任何dll或exe文件的调用和ret如何工作

这实际上取决于它是DLL还是EXE。

当Windows模块加载器完成加载DLL时,它使用DLL_PROCESS_ATTACH参数调用DLL的起始地址(称为“DllMain”)(参见the documentation of DllMain)。如果DllMain返回1,则加载程序继续。

但是,当您启动EXE时,系统会生成一个新进程并将 ntdll.dll 映射到该进程的地址空间,然后生成从NTDLL的起始地址运行的主线程。该线程然后执行更多初始化,加载EXE文件(加上其导入表中列出的任何DLL)并调用EXE的起始地址标识的函数。当该函数返回时,NTDLL然后调用NtTerminateProcess来杀死所有正在运行的线程并关闭该进程。

使用用户模式调试器可能难以观察到此EXE启动过程;一些调试器很难在流程初始化的早期阶段中断。