实验内容:向进程中植入代码
这节中,依旧抛出原文:”上节实验中,我们让函数返回main函数的验证通过分支的指令。试想下,如果我们在buffer里面包含我们自己想要执行的代码,然后通过返回地址让程序跳转到系统战力执行,我们岂不是可以让进程取执行本来没有的代码,直接去做其他事情了!“
不得不说,结合书中示意图,真的很简洁易懂…
本次实验目的,我们准备向password.txt文件址入二进制的机器码,并用这段机器码调用Windows的一个API函数MessageBoxA,最终在桌面上弹出一个消息框并显示一些字符串
源码相较上个实验略作小改:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "windows.h" //用于调用LoadLibrary函数装在user32.dll用于植入MessageBosA
#define PASSWORD "1234567"
int verify_password(char *password)
{
int authenticated;
char buffer[44]; //机器码空间可能大于8因此方便演示,做了扩充
authenticated = strcmp(password,PASSWORD);
strcpy(buffer,password);//over flowed here!!!