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