-
-
[旧帖]
[原创]科锐培训逆向分析入学题1,我的解答
0.00雪花
-
发表于:
2009-12-20 16:43
1603
-
[旧帖] [原创]科锐培训逆向分析入学题1,我的解答
0.00雪花
1、如何在下面的test函数里加入代码可以使程序运行起来输入和输出的相等?
(环境是vc6Debug方式下)
#include<stdio.h>
void test()
{
int t;
scanf("%d",&t);
在这里加入代码
}
void main()
{
int m;
test();
printf("m=%d",m);
}
解答:方法一,只为满足题意要求,可以先查看变量m的内存地址,将t值存入m的地址空间
加入代码:
int* i=(int*)0x12ff7c; //m的地址为0012ff7ch
*i=t;
方法二,思想同上,找到t的内存地址,和m的内存地址相比较,相差0x58,
加入代码:
int* k=&t+0x58/4;//一定要除以4或者写成int *k=(int*)((char *)&t+0x58)
*k=t;
方法三,利用反汇编指令
加入如下代码:
_asm
{
mov eax, dword ptr [ebp+0]
mov ecx, t
mov dword ptr[eax-4], ecx
}
测试结果:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)