您的位置:首页 > 其它

170826 逆向-段寄存器和调用约定的补充知识点

2017-08-28 08:56 981 查看
1625-5 王子昂 总结《2017年8月26日》 【连续第327天总结】

A.逆向知识复习的新知识点

B.

段寄存器

段是一种内存保护技术,他把内存划分为多个区段,并为每个区段赋予起始地址,范围,访问权限等,以保护内存。此外,他还同分页技术(Paging)一起用于将虚拟内存变更为实际物理内存。段内存记录在SDT(段描述符表)中,而段寄存器就持有这些SDT的索引

每个段寄存器指向的段描述符与虚拟内存结合,形成一个线性地址,借助分页技术,线性地址最终被转化为实际的物理地址。

调用约定

cdecl和stdcall的区别只有清理堆栈的执行者的区别:cdecl通过调用者在call后执行add esp,x来实现;而stdcall通过被调用者在函数末尾执行retn x来实现(效果相同)

相比之下stdcall的代码尺寸会更小。

另外,Win32 API虽然是C编写的,但它是stdcall约定,而不是C语言默认的cdecl约定。这样可以获得更高的兼容性,使其他语言也可以调用。

C. 明日计划

PE文件头
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: