Question: Please see the source code below written in C++. Can you make the code print Hello World! by providing it with an input string? You

Please see the source code below written in C++. Can you make the code print Hello World! by providing it with an input string? You are NOT allowed to modify the source code. Compile the code with g++. Submit your input string and the screenshot proving that the code prints Hello World!.

Update: Mac OS loads the executable to a random memory location for security reasons like this. The technology is called Address Space Layout Randomization (ASLR, http://en.wikipedia.org/wiki/Address_space_layout_randomization). The implication to the homework is that the address of function f2 will be different every time it is executed. This makes accomplishing the homework very difficult if not impossible. There is a g++ linker option that prevents linker from generating position independent executable (pie). Mac OS loader will then load the executable generated in this way to a fixed position. You can use following command to generate the executable: g++ -Wl,-no_pie -o bof.out bof.cpp

Update: Starting from Microsoft Vista, Windows OS also uses ASLR. There are many resources online. I havent tested them. But you can try some of the methods online to finish the homework.

Source Code that can not be modified.

#include #include

using namespace std; char *p;

void f1() { char str[8]; p = str;

cout << "Please enter a string:";

while (!cin.eof()) { cin.get(*p); p++; } cout << "The string you entered is:" << str << endl; }

void f2() { cout << "Hello World! "; }

int main() { cout << sizeof(char*) << endl; cout << (void*) f2 << endl; f1(); return 0; }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!