热烈庆祝本人受关注人数即将突破4000大关!散分!!+征集各种语言实现“运行时修改代码”例子。

赵4老师 2013-10-29 10:50:43
征集其它语言(包括各种脚本)实现“运行时修改代码”的例子。
用汇编语言比较容易实现“运行时修改代码”。
以下C语言“运行时修改代码”例子:
#pragma comment(linker,"/SECTION:.text,RW")
#include <stdio.h>
#ifdef _DEBUG
#define OFFSET 0x0C
#else
#define OFFSET 0x01
#endif
int *p;
int p2() {
int a;

a=2;
return a;
}
int main() {
p=(int *)((char *)p2+OFFSET);
printf("p2==0x%08x,p==0x%08x,*p==%d\n",(char *)p2,p,*p);
*p=3;
printf("p2()==%d\n",p2());
return 0;
}
//p2==0x00401000,p==0x0040100c,*p==2
//p2()==3
//

...全文
2684 106 打赏 收藏 转发到动态 举报
写回复
用AI写文章
106 条回复
切换为时间正序
请发表友善的回复…
发表回复
纹枰老妖 2014-12-29
  • 打赏
  • 举报
回复
#pragma comment(linker,"/SECTION:.text,RW") 
#include <stdio.h>
int *p;

int p2() 
{     
	int a=87; 
	a=a+15;     
	return a; 
} 

int main() 
{      
	int o;
	p=(int *)((char *)p2+59);
    *p=0xE883FC45;
	o=8;
	printf("p2()==%d\n",p2());
	scanf("%d",p);
	return 0;
 }
最后的输出结果是【p2()=72】,嘿嘿,坐等领分。。。
jacksonfan 2014-11-18
  • 打赏
  • 举报
回复
已经关注赵老师
楼上看云 2014-08-15
  • 打赏
  • 举报
回复
不错……顶一个
不倒的土豆 2014-07-18
  • 打赏
  • 举报
回复
接分走人
yangke858 2014-04-23
  • 打赏
  • 举报
回复
li4c 2014-03-31
  • 打赏
  • 举报
回复
赵老师是我的偶像,生命不息,学习不止!
ojc520520 2014-02-14
  • 打赏
  • 举报
回复
这位 赵老师经常见到。
keal2012 2014-02-10
  • 打赏
  • 举报
回复
送粉 这代码看不太懂...
寒沙胜雪 2014-01-17
  • 打赏
  • 举报
回复
仔细看,赵老的话其实很有道理呢。。
u012997273 2013-12-31
  • 打赏
  • 举报
回复
引用 83 楼 xiyuyan 的回复:
首先祝贺,同时不知道4000关注群有啥好处? 运行时修改代码不是好习惯,刚学指针的新手都会。 运行时能修改程序自身的可执行文件(修改硬盘文件)才叫本事。 习语言示例 〖 #包含 “习语言系统.接口” 无返回值 主函数(无参数) { 整数 学员[50],张三,修改标志=1; 格式输入(“%(整数)”,&张三); 学员[50] = 张三 + 100; // 第一次修改程序; 格式输出(“%(整数)”,张三); } 〗
呵呵,来参观赵老师,呵呵,修改自身,可以的啊,不过麻烦很多,程序在运行,自身文件时无法写入的,不过可以强制写入(ring0下,强制去掉一些相关东东),也可以用先寄托在其他进程内,然后结束进程,在其他进程内寄托的副本,来修改真实文件
shiguojie19892 2013-12-18
  • 打赏
  • 举报
回复
刚刚注意到赵老师的帖子啊 呵呵
hemmingway 2013-11-30
  • 打赏
  • 举报
回复
我鲁班无敌 2013-11-28
  • 打赏
  • 举报
回复
不明觉厉
largeskymengsk 2013-11-12
  • 打赏
  • 举报
回复
老赵,屌炸天呀。
独孤的根号3 2013-11-12
  • 打赏
  • 举报
回复
我晕,我明明看的是另外一个哥们的帖子,怎么突然跑赵老师这边来了
示申○言舌 2013-11-07
  • 打赏
  • 举报
回复
我这里有用thunk封装的windows类,用到了运行时修改代码。使用的MFC一样的技术,thunk. http://blog.csdn.net/sdhexu
432345 2013-11-07
  • 打赏
  • 举报
回复
新人表示看不明白!
赵4老师 2013-11-07
  • 打赏
  • 举报
回复
自顶!
赵4老师 2013-11-05
  • 打赏
  • 举报
回复
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
lm_whales 2013-11-05
  • 打赏
  • 举报
回复
修改数据码段实现之 把数据当代码调用 数据段,改成代码段即可 Windows 加载程序就是这么干的。 你的程序,对他就是数据。 加载后,把你的程序当作代码启动。
加载更多回复(83)
提供国人写的强大的html5植物大战僵尸(源码) 写得很棒~占用资源少。 JSPVZ 程序制作进度(2011.1.5) 本程序提供源码由HTML5中文网整理打包下载,该下载包可以使用服务器环境运行,也可以在电脑上双击Index.htm直接运行 另外智能手机可以安装OperaMobile10.1及其以上版本,把代码整个拷贝到手机存储卡上,在浏览器中输入形如“E:/jspvz”形式的地址直接本地运行程序,无需联网 转载使用请勿修改LonelyStar署名,pvz.lonelystar.org网址和PopCap公司版权声明 保留对该JS版植物大战僵尸版权所有 2011.1.5 添加了第二大关的第三小关 修正一大波和最后一波字样无法消失的BUG 2010.12.31 添加了“解谜模式” 调整了程序中关卡对于胜利和失败的算法 几个植物和僵尸做了调整 修改了几个BUG 2010.12.27 对初始界面稍作修改 2010.12.9 添加了“靠天吃饭”小游戏 给领带僵尸添加两种形象 修正辣椒爆炸图片的问题 咖啡豆0耗的数据修正 2010.12.8 提高了一下僵尸行走的纵坐标 修正了土豆雷和樱桃炸弹爆炸图片在IE下的问题 调整了一大波僵尸和最后一波僵尸出现的图片效果 2010.12.7 添加了第二大关的两小关 添加了“乱葬岗”小游戏 修改了几个BUG 调整了进度显示 2010.12.1 添加了“贫瘠之地”小游戏 调整游戏初始化界面和选择模式界面 修正第十关IE下运行报错的BUG 修正IE下单机运行有部分图片看不到的问题 修正蘑菇植物无睡眠动画而实际却在睡眠的BUG 修正曾哥蘑菇种植在醒着的大喷菇上仍然睡着的BUG 修正僵尸出场界面显示僵尸种类的BUG 修正地刺和地刺王伤害过高的BUG 加大“僵尸快跑!”的难度

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧