LXS*_*oft -5 assembly winapi mingw ida portable-executable
今天,仅出于测试目的,我提出了以下想法,在CodeBlocks中创建和编译一个天真的源代码,使用Release目标来删除不必要的调试代码,一个带有三个nop操作的主函数只能找到更快的条目点的主要功能是.
CodeBlocks样本天真程序:
使用IDA反汇编程序,我看到一些奇怪的东西,OS实际上可以在main函数中添加aditional机器代码调用(隐式添加),调用系统函数,它驻留在kernel32.dll中,用于OS线程处理.
IDA计划视图:
在机器代码中仅出于测试原因将三个"nop"(90)替换为"和esp,0FFFFFFF0h",程序再次被重新缓存,这就是为什么"无操作"操作码在视图中不可取消的原因.
观察到的行为:
为每个进程创建一个新线程是逻辑,因为我们可以在TaskManager中探索它,这是一个在它自己的线程中运行的进程,这就是编译器添加此代码的原因(隐式默认线程).
我的问题:
编译器如何知道自动"注入"此调用代码的位置?
为什么之前没有在上层函数(sub_401B8C)中进行此调用,该函数将路由到主函数入口点?
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |