How to rickroll your friends using System calls
Lets rick-roll your computer geek friends
Lets bring back the trend of rickrolling!!.
While being taught about event handlers and execl system calls in my Software Systems course, I had an idea. What if I could make a C executable that opens browser and play Rick Astley's classic "never gonna give you up!".
Now, let us get into it.
for macOS and Unix - based systems
execl() system call
the execl command can be used to run an executable on the hard disk. the binary image of the C executable is now replaced with the application executable path you provide.
The first argument, by convention contains the path of the application being executed, and then there exists a list of arguments.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
char *url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
if (execl("/usr/bin/open", "open", "-a", "/Applications/Safari.app", url, NULL) == -1) {
perror("execl");
exit(EXIT_FAILURE);
}
return 0;
}
For Windows systems
start command
The start is a built-in command in Windows that opens a URL in the default browser. The command is then formatted using snprintf() function, so that it can run in a shell.
system() function runs the command in a new shell, from C/C++ programs. Using these three, the following code can be built:-
#include <windows.h>
#include <stdio.h>
int main() {
const char *url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
char command[256];
// Prepare the command to open the URL
snprintf(command, sizeof(command), "start %s", url);
// Create a new process to execute the command
if (system(command) == -1) {
perror("Failed to open browser");
return 1;
}
return 0;
}
Now, just obscure the code intent by passing on an executable file to your friends and rick roll them!