一个比较娱乐的题目
- 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函数的情况下,使其输出 * “举头望明月,低头思故乡” * 在上网搜索答案之前,请先尝试思考一下 */