04 2010 档案

走进内存,走进反汇编指令来看C/C++指针      摘要: 讲述两点:
1、反汇编下的p与*p
2、有关指针初始化的金科玉律
走进反汇编指令,走进内存,看看底层的C/C++指针是怎么一回事~  阅读全文
posted @ 2010-04-11 01:26 石头儿 阅读(2585) | 评论 (0)  编辑
内存对齐全攻略--涉及位域的内存对齐      摘要: 接下来主要讨论四点:
一、不涉及位域的内存对齐
二、涉及位域的内存对齐
三、成员变量含有结构体的内存对齐情况
四、要求内存对齐的原因及优点  阅读全文
posted @ 2010-04-07 22:40 石头儿 阅读(1016) | 评论 (0)  编辑
内存对齐全攻略--不涉及位域的内存对齐原则      摘要: 主要讨论四点:
一、不涉及位域的内存对齐原则
二、涉及位域的内存对其原则
三、成员变量含有结构体的内存对齐情况
四、要求内存对齐的原因及优点

这里只介绍第一点  阅读全文
posted @ 2010-04-07 17:35 石头儿 阅读(346) | 评论 (0)  编辑
c++反汇编代码分析--偷换函数      摘要: 注:不知道说“偷调函数”说法合不合适,在此也就这样一说了~

主要有两点:

一、再说C++反汇编函数调用,重点是怎样通过堆栈实现由被调用函数转到调用者

二、在 1 的基础上,在WinDbg下通过修改EIP实现如下一个功能:

  有两个函数foo()和hack(),在main函数中调用foo,但是在foo执行过程中,通过修改EIP来调用hack函数,最后再回到main中foo函数的下一条语句
  阅读全文
posted @ 2010-04-07 02:27 石头儿 阅读(850) | 评论 (0)  编辑
C++反汇编代码分析--循环      摘要: 再次主要讨论或者验证三点:
1、循环结构的反汇编代码分析
2、函数中,局部变量的保存位置
3、方法的返回值保存位置验证
一个没有找到答案的疑问:
00401029 lea edi,[ebp-48h]
0040102C mov ecx,12h
00401031 mov eax,0CCCCCCCCh
;这段代码是在栈中开辟一个48字节大小的区域来存放局部变量,但是如果函数内
没有局部变量,则是lea edi,[ebp-40h]
一个局部变量,则是lea edi,[ebp-44h]
两个局部变量,则是lea edi,[ebp-48h]
也就是没有局部变量时开辟的40个字节,我用F11追踪过,单步调试时,这一部分区域并没有用到,这一区域的作用是什么?  阅读全文
posted @ 2010-04-05 20:17 石头儿 阅读(354) | 评论 (0)  编辑
C++反汇编代码分析--函数调用      摘要: 函数调用时的堆栈变化以及反汇编代码分析  阅读全文
posted @ 2010-04-05 10:45 石头儿 阅读(477) | 评论 (0)  编辑