首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 打印一首唐诗的N种实现之六:内存修改
【标  题】:打印一首唐诗的N种实现之六:内存修改
【关键字】:
【来  源】:http://blog.csdn.net/HappyTree/archive/2007/01/02/1472272.aspx

打印一首唐诗的N种实现之六:内存修改

通过调用VirtualProtectEx来修改,通过修改main()函数的入口地址来达到修改打印内容的目的。

完整的代码如下:

int main(int argc, char* argv[]);

int mine()
{
    cout 
<< "白日依山尽, 黄河入海流, 欲穷千里目, 更上一层楼. ";
    
return 0;
}


int SetHook()
{
    DWORD flag 
= PAGE_EXECUTE_READWRITE;
    DWORD mineAddr 
= (DWORD)mine;
    DWORD mainAddr 
= (DWORD)main;
    mineAddr 
-= (mainAddr + 5);

    VirtualProtectEx(GetCurrentProcess(), (BYTE
*)mainAddr, 200, flag, &flag);
    ((BYTE
*)mainAddr)[0= 0xe9;
    ((BYTE
*)mainAddr)[1= (BYTE)(mineAddr);
    ((BYTE
*)mainAddr)[2= (BYTE)(mineAddr>>8);
    ((BYTE
*)mainAddr)[3= (BYTE)(mineAddr>>16);
    ((BYTE
*)mainAddr)[4= (BYTE)(mineAddr>>24);
    VirtualProtectEx(GetCurrentProcess(), (BYTE
*)mainAddr, 200, flag, &flag);

    
return 0;
}


int s = SetHook();

int main(int argc, char* argv[])
{
    cout 
<< "白日依山尽, ";
    
return 0;
}
MFC打造ACCESS密码破解工具:【上一篇】
sprintf的用法:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 实战Ghost的分卷压缩功能
  • Flashget数据库让下载更方便
  • 高效能 DBA 的七个习惯<转自www.dbanotes.net>
  • C# 堆栈实现
  • SQL7的image字段的文件下载到客户端
  • 在oracle中利用utl_smtp和trigger结合来实现系统报警
  • 网页上的浮动窗口代码
  • 管理WebService的状态
  • 我也玩玩Subversion
  • TOAD使用笔记
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.