读书人

一个比较娱乐的题目,该如何解决

发布时间: 2012-03-17 19:06:27 作者: rapoo

一个比较娱乐的题目

C/C++ code
#include <iostream.h>/////////////////////////////////////////////////////////////////////int main(int argc, char* argv[]){        cout<<"举头望明月\n";        return 0;}//////////////////////////////////////////////////////////////////////* * 题目说明,这是一个典型的hello world程序,正常运行的话会在控制台 * 输出:“举头望明月” * 你能否在不修改main函数的情况下,使其输出 * “举头望明月,低头思故乡” * 在上网搜索答案之前,请先尝试思考一下 */

娱乐下~~~~~~~~

[解决办法]
C/C++ code
#include <iostream>using namespace std;class MyCout{public:    MyCout& operator <<(const char *)    {        cout<<"抬头望明月,低头思故乡"<<endl;        return *this;    }};#define cout MyCout()int main(int argc, char* argv[]){        cout<<"举头望明月\n";        return 0;}
[解决办法]
C/C++ code
class AAA{public:    AAA(){cout<<"举头望明月,低头思故乡\n";exit(0);}    ~AAA(){}};AAA a;int main(int argc, char* argv[]){        cout<<"举头望明月\n";        return 0;}
[解决办法]
众所周知,字符串保存的常量字符区,字符串当做参数传入函数时,只是传递的字符串在常量区得地址,
所以在运行期,把那个地址里的数据修改一下,大家懂的啊,比较接近hack的了
C/C++ code
#include <iostream>#include<windows.h>using namespace std;class Hack{public:    Hack()    {        DWORD dwIdOld;        char *p="举头望明月\n";        VirtualProtect(p,64,PAGE_READWRITE,&dwIdOld);        WriteProcessMemory(GetCurrentProcess(),p,"抬头望明月,低头思故乡",64,0);    }};Hack hack;int main(int argc, char* argv[]){    cout<<"举头望明月\n";    return 0;}
[解决办法]
C/C++ code
#include <iostream.h>#define mymain int main() {cout<<"举头望明月,低头思故乡\n";return 0;}mymain#define main mainskiped/////////////////////////////////////////////////////////////////////int main(int argc, char* argv[]){        cout<<"举头望明月\n";        return 0;}//////////////////////////////////////////////////////////////////////* * 题目说明,这是一个典型的hello world程序,正常运行的话会在控制台 * 输出:“举头望明月” * 你能否在不修改main函数的情况下,使其输出 * “举头望明月,低头思故乡” * 在上网搜索答案之前,请先尝试思考一下 */ 

读书人网 >C++

热点推荐