本博客的例子在Windows下的vs2015版本进行的攻击测试,修改一段内存数据的地址的数据内容
1.首先,在VS2015中新建一个空项目,点击源文件进行添加target.c文件,编写具体的代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <Windows.h> //使用的是Windows的API 4 5 int main(int argc,char const *argv[]) 6 { 7 int iCurValue = 0; 8 9 printf("iCurValue address: 0x%x",&iCurValue); //主要是利用这个数据的地址进行攻击修改 10 11 while(1) 12 { 13 Sleep(1000); //延时1s,windows API的延时函数 14 ++iCurValue; 15 printf(" %d",iCurValue); 16 } 17 18 system("pause"); 19 20 return 0; 21 }
这时候我们运行上述的代码,达到了ICurValue的地址。
之后将这个运行程序设置为活动的
2.打开另外一个VS2015程序软件,然后同样新建一个项目,名为attack,添加源文件为attack.c,具体的代码如下:
1 #include <stdio.h> 2 3 //_declspec 声明是外部的调用 4 //dllexport dll的导出 5 6 _declspec(dllexport) void attack(void) 7 { 8 int *ptr = (int *)0x23fa0c; //注意,这里必须进行强制转换,不然的话,指针会认为0x23fa0c这个内存地址仅仅是一个普通的数据而已 9 *ptr = 10000; //修改被攻击的数据的初始值 10 }
然后将这个程序的属性设置为动态库
之后点击生成--->生成方案,就会在当前项目所在目录生成了attack.dll
3.使用dllinject软件,进行婉转地修改攻击数据
这样我们就改变了它的值
通常情况下,可以应用到网吧中为自己账号充钱,当然,前提是你得知道你当前卡的地址或者你当前电脑在网管哪里的ID或者地址,否则无法修改哟