首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

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

热烈庆祝本人受关注人数即将突破4000大关!散分!!+征集各种语言实现“运行时修改代码”例子。
征集其它语言(包括各种脚本)实现“运行时修改代码”的例子。
用汇编语言比较容易实现“运行时修改代码”。
以下C语言“运行时修改代码”例子:


[解决办法]
4000关注多吗  总有一天我会超过你的 
[解决办法]
赵老这是要成为此版块第一个升钻的人物的趋势了
[解决办法]
赵老师好厉害
[解决办法]
我是来围观的热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
围观赵老师热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
赵老师犀利热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
敬仰一下,顺便蹭分。
[解决办法]
老赵 我是特意来蹭分的。
[解决办法]
高难度动作,玩不了呀。。。。。
[解决办法]
发来火电。。热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]

[解决办法]
4$_$丝粉那,责任重大!不要误人子弟哦热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
C,C++:
setjmp,longjmp
exit
abort
signal
try 
exception

try 
catch

WinApi  :SetThreadContext
WinApi  :
         WriteProcessMemory
         WriteProcessMemoryVlm
basic:
   Chains
Debug.exe -W,-R,-L,-A,-D,-G,-U ..etc

[解决办法]
围观,顺便接个分吧!
[解决办法]
我就是来姐分的,赶快结贴,多发点分给我!
[解决办法]
我来接分啦  我来接分啦
[解决办法]
热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
我来接分的,顺便来围观热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
接分热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]

[解决办法]
大神。。。。
[解决办法]
结贴 快 热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
赵老师看来是非常热爱CSDN!
坐等赵老师升钻!
[解决办法]
层粉可以么 热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子

接分
------解决方案--------------------


ym赵老师,对代码运行的理解相当透彻的说
[解决办法]
前来接分,哈哈
[解决办法]
围观赵老师,顺便接下分
[解决办法]
热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
主要是来接分的~~
[解决办法]
一句话,来躺分的
[解决办法]
这个不明白,看看
[解决办法]
热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
对你的膜拜有如长江之水涛涛不绝
[解决办法]
围观热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
还不结贴给分热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
赵老湿威武!
[解决办法]
老赵准备开始《天网》项目的前期准备工作了?
[解决办法]
热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子混个脸熟,顺便来认识下赵老师!
[解决办法]
围观围观.....................
[解决办法]
热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
栈操作,都忘啦热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
大师我要分热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
来拿分的热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
前来围观热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
以为4000说的是工资。。。
[解决办法]


[解决办法]
真牛啊热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
赵老师不是我表哥么热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]

[解决办法]
引用:
Quote: 引用:


int main(int argc, char* argv[])
{
printf("orz\n");
0xffffffff[&argc]+=1+~5;
return 0;
}

能讲讲不?


换成这样的,你就明白了。 
int main(int argc, char* argv[])
{
printf("orz\n");
(&argc)[-1] -=  5; //修改栈上函数返回地址
return 0;
}

注意条件:参数要通过栈上传递而不是通过寄存器,一条call指令是5个字节 
[解决办法]
引用:

Quote: 引用:


Quote: 引用:


int main(int argc, char* argv[])
{
printf("orz\n");
0xffffffff[&argc]+=1+~5;
return 0;
}

能讲讲不?


换成这样的,你就明白了。 
int main(int argc, char* argv[])
{
printf("orz\n");
(&argc)[-1] -=  5; //修改栈上函数返回地址
return 0;
}

注意条件:参数要通过栈上传递而不是通过寄存器,一条call指令是5个字节 


这种写法是容易看懂了,但也显得不够高端。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:


int main(int argc, char* argv[])
{
printf("orz\n");
0xffffffff[&argc]+=1+~5;
return 0;
}

能讲讲不?


换成这样的,你就明白了。 
int main(int argc, char* argv[])
{
printf("orz\n");
(&argc)[-1] -=  5; //修改栈上函数返回地址
return 0;
}

注意条件:参数要通过栈上传递而不是通过寄存器,一条call指令是5个字节 


这种写法是容易看懂了,但也显得不够高端。

还是第一种写法好,不熟悉的还得实际运行下才明白。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:


int main(int argc, char* argv[])
{
printf("orz\n");
0xffffffff[&argc]+=1+~5;
return 0;
}

能讲讲不?

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
将调用main函数前压入的返回地址减5,造成返回main时本来想继续往下执行,但实际再次调用main函数,如此循环往复无穷尽也。(可按Ctrl+C退出)

刚才看了,这种方法挺神奇的,但还不是运行时生成代码并执行。
要达到这个目的,可能非得调用编译器不可?

既然我能将代码段汇编指令中的2改为3,当然我也能将代码段的算法A改为算法B了。


实际上这是在用汇编指令修改,不是用c代码。
运行生成c代码,可能非得调用编译器不可?
要么用lua?
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:


int main(int argc, char* argv[])
{
printf("orz\n");
0xffffffff[&argc]+=1+~5;
return 0;
}

能讲讲不?


换成这样的,你就明白了。 
int main(int argc, char* argv[])
{
printf("orz\n");
(&argc)[-1] -=  5; //修改栈上函数返回地址
return 0;
}

注意条件:参数要通过栈上传递而不是通过寄存器,一条call指令是5个字节 


这种写法是容易看懂了,但也显得不够高端。


“高端大气”会害死人
[解决办法]
恭喜恭喜。。。。
[解决办法]
问个题外话, 赵老你多大了呢? 看我能不能赶上
[解决办法]
#include <functional>
#include <iostream>
#include <cstdio>
#include <windows.h>
using namespace std;


struct first_class
{
unsigned char arr[10] = {0xb9,0,0,0,0,0xe9};
first_class()
{
*(int*)(arr+1) = (int)this;
union 
{
void (__thiscall first_class::*pf)(int);
int hack;
} fucker = {&first_class::handle_callback};
*(int*)(arr+6) = fucker.hack - (int)(arr + 10);
}
void __thiscall handle_callback(int value)
{
cerr << this << " " << value << endl;
}
};

struct fucked_class1
{
virtual void f(){cerr<<"fucked_class1"<<endl;}
};
struct fucked_class2
{
virtual void f(){cerr<<"fucked_class2"<<endl;}
};
int main()
{
first_class arr[20];
for (first_class& orz : arr)
{
((void (__stdcall*)(int))&orz)(1);
}

fucked_class1 a;
fucked_class2 b;
DWORD origin_protect;
VirtualProtect((void*)(int*)*(int*)&a, 1, PAGE_EXECUTE_READWRITE, &origin_protect);
VirtualProtect((void*)(int*)*(int*)&b, 1, PAGE_EXECUTE_READWRITE, &origin_protect);
swap(*(int*)*(int*)&a, *(int*)*(int*)&b);
fucked_class1* pa = &a;
fucked_class2* pb = &b;
pa->f();
pb->f();
return 0;
}

[解决办法]
赵老师的境界暂时是可望而不可及的啊
------解决方案--------------------




每次看到赵老发帖回复啥
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
....
然后我就觉得赵老超级实在,然后我就觉得好得也是六十来岁了。没想到才四十五载啊!

赵老说的那些东西我数了数现在已经上过的课程有计算机组成原理,C语言,数据结构,操作系统,计算机网络,现在自己正在学习c++,目前学校正在教授汇编语言(微机原理接口涉及到),DOS听到过,数据库也在上,感觉学的好全面,然后学的很表面,现在有空回顾下又看不进去,真衰啊!

本科大三,还打算考研,路漫漫呀
[解决办法]
果断来围观热烈庆祝本人受关切人数即将突破4000大关!散分!+征集各种语言实现“运行时修改代码”例子
[解决办法]
首先祝贺,同时不知道4000关注群有啥好处?
运行时修改代码不是好习惯,刚学指针的新手都会。
运行时能修改程序自身的可执行文件(修改硬盘文件)才叫本事。

习语言示例

#包含 “习语言系统.接口”

无返回值  主函数(无参数)
{
整数  学员[50],张三,修改标志=1;
格式输入(“%(整数)”,&张三);
学员[50] = 张三 + 100;   // 第一次修改程序;
格式输出(“%(整数)”,张三);
}


[解决办法]
散分帖子还不能酱油了?
[解决办法]
有没有不修改代码段实现的?
[解决办法]
修改数据码段实现之
把数据当代码调用
数据段,改成代码段即可
Windows 加载程序就是这么干的。
你的程序,对他就是数据。
加载后,把你的程序当作代码启动。
[解决办法]
新人表示看不明白!
[解决办法]
我这里有用thunk封装的windows类,用到了运行时修改代码。使用的MFC一样的技术,thunk.
http://blog.csdn.net/sdhexu

热点排行