avatar

漏洞测试作业二:IDE反汇编函数调用实验
  • IDE反汇编函数调用实验

第一题

题目

请在XP VC6下调试课本的示例程序并将call语句执行过程中的EIP变化、ESP、EBP变化等状态进行记录,解释变化的主要原因

解答

int add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
void main()
{
int n = 0;
n = add(1, 3);
printf("%d\n", n);
}

(加粗表示寄存器数据发生变化,表格中数据表示该行指令执行前的数据)

汇编步骤 EIP ESP EBP
11: n = add(1, 3);
0040108F push 3
00401091 push 1
00401093 call @ILT+0(add) (00401005) 00401093 0012FF28 0012FF80
00401098 add esp,8 00401098 0012FF28 0012FF80
0040109B mov dword ptr [ebp-4],eax
00401005 jmp add(00401030) 00401005 0012FF24 0012FF80
2: int add(int x, int y)
3: { (省略未变化部分)
00401030 push ebp 00401030 0012FF24 0012FF80
00401031 mov ebp,esp 00401031 0012FF20
00401033 sub esp,44h 00401033 0012FF20
00401036 push ebx 00401036 0012FEDC
00401037 push esi 00401037 0012FED8
00401038 push edi 00401038 0012FED4
00401039 lea edi,[ebp-44h] 00401039 0012FED0
0040103C mov ecx,11h 0040103C
00401041 mov eax,0CCCCCCCCh 00401041
00401046 rep stos dword ptr [edi] 00401046
4: int z = 0;
00401048 mov dword ptr [ebp-4],0 00401048
5: z = x + y;
0040104F mov eax,dword ptr [ebp+8] 0040104F
00401052 add eax,dword ptr [ebp+0Ch] 00401052
00401055 mov dword ptr [ebp-4],eax 00401055
6: return z;
00401058 mov eax,dword ptr [ebp-4] 00401058
7: }
0040105B pop edi 0040105B
0040105C pop esi 0040105C 0012FED4
0040105D pop ebx 0040105D 0012FED8
0040105E mov esp,ebp 0040105E 0012FEDC
00401060 pop ebp 00401060 0012FF20
00401061 ret 00401061 0012FF24 0012FF80

寄存器变化原因

  • EIP:

    • 指向下一步要进行的指令位置,随汇编代码执行过程改变
  • ESP:

    • PUSH,POP操作导致栈顶变化
    • 函数调用过程中的栈帧变化
    • 直接对ESP的值进行修改
  • EBP:

    • 函数调用过程中的栈帧变化

      调用函数  mov ebp,esp
      函数返回 pop ebp

第二题

题目

相同的程序,请在非XP的当前windows操作系统的vs2003以上版本中运行,绘制add函数执行时的栈状态,并与XP下同时刻的状态进行比较

解答

微信图片_20200320235550

微信图片_202003202355501

微信图片_202003202355502

  • 与xp系统下的vc6栈状态不同:
    • vc6栈帧预留空间为044h sub esp,044h
    • vs2019为0CChsub esp,0CCh
Author: Michelle19l
Link: https://gitee.com/michelle19l/michelle19l/2020/03/20/漏测作业/漏测作业二/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶