-
-
[原创]简单C程序逆向分析,送给和我一样菜的朋友
-
发表于:
2021-8-16 17:21
7327
-
CODE很简单:
#include <stdio.h>
#include <stdlib.h>
int Function(int x,int y)
{
return x+y;
}
void main()
{
int a=10;
int b=20;
Function(a,b);
printf("\na=%d,a=%x,b=%d,b=%x",a,&a,b,&b);
system("pause");
}
逆向分析记录:
CALL 00401010 此句执行把下一行地址也就是004011D8压入堆栈,并且跳到00401010继续执行
SUB ESP,8 提升堆栈0X8个地址,用于存放变量,此时的堆栈地址为ESP=0012FF84,此句执行结束以后堆栈ESP=0012FF7C
push 14 将参数0X14压栈,也就是20入栈,执行以后ESP-4,ESP=0012FF78
PUSH 0A 将参数0XA压栈,也就是10入栈,执行以后ESP-4,ESP=0012FF74
MOV DWORD PTR SS:[ESP+C],0A 将0A也就是10放入ESP+c的内存单元,不改变堆栈,此时的ESP+C=0012FF80
MOV DWORD PTR SS:[ESP+8],14 将0X14也就是20放入ESP+8的内存单元,不改变堆栈,此时的ESP+8=0012FF7C
CALL 00401000 调用自写函数FUn,地址为00401000,同时将下一行0040102C亚入堆栈,,执行完毕以后ESP-4=0012FF70 跳转到00401000继续执行
[注意]APP应用上架合规检测服务,协助应用顺利上架!