给我提示使用ida pro反汇编程序。
答案 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启动过程;一些调试器很难在流程初始化的早期阶段中断。