From 119b77eefb5542f6581fc73347719b002ba62e1d Mon Sep 17 00:00:00 2001 From: "18218461270@163.com" <18218461270@163.com> Date: Tue, 29 Jul 2025 20:29:54 +0800 Subject: [PATCH] initialize bomblab --- labs/bomb/README | 1 + labs/bomb/bomb | Bin 0 -> 26406 bytes labs/bomb/bomb.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 labs/bomb/README create mode 100755 labs/bomb/bomb create mode 100644 labs/bomb/bomb.c diff --git a/labs/bomb/README b/labs/bomb/README new file mode 100644 index 0000000..3a8ed77 --- /dev/null +++ b/labs/bomb/README @@ -0,0 +1 @@ +This is an x86-64 bomb for self-study students. diff --git a/labs/bomb/bomb b/labs/bomb/bomb new file mode 100755 index 0000000000000000000000000000000000000000..f59281d2bdc4eb7fd4e4e9b6da6a7a424b497bed GIT binary patch literal 26406 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¥asILc66=7|`1Z1BS2EoVLY^*YA}8ay zMaWMP?e;PricKJaTck4jWOu{9|EUzZ_XIEpUNWt0?DJ_WzI*x&LV#n zxO#E2EFbeK)uTLrY!xzAfiuw`B|Z`OxDn!+E#%bE>xCfwY3X7wxbCJ^&Xo87*tnK8(!6pR zRZ%nD3_%;q*tJcUr!67<{%veY(?|K()WKKO5eU*)G_+D^2 zb@{LDRc7r&W`VM{-_3B`-u zfAO`kC`7q?TM0$}Ew_tD#G`TP?LfcFd^mNg0e*XVIuyi~_&k2fARWKxI`i~keg}Ix z2T=^z$~IozJ}f{Nr}H3jFMDQ4+C}xW7a9r- zi%?0l#exgTyhuoNAHMC)tKUU?=PX!N#pn`v7vH}pc@OHZlG+m5lq=v1w&S7&L))j` zBCfzsPb%ZW`{BTaEI1Ew&ciM~-`>|dnSQ-Nsy_J%3lyC@5bjL%blx-RyLLLcfb$HI zh-mlvHof7z#&Bv>WWj2rSv?Pbm4<^Q!Rq-UTM-xbiCy>xo-X32>mXd!`e}#ZXofp7 z?)~@R{s9k4;o8lvHDV}T7H~&!?SUAKTsR~lkDyfXe+3{tCK}^h*nSolo23W3TYw^n#=#cj hzZ@_e*E|}HFpv!+6nomg4lo=<7VH0B!Z1eS{|Cp=Z_WS! literal 0 HcmV?d00001 diff --git a/labs/bomb/bomb.c b/labs/bomb/bomb.c new file mode 100644 index 0000000..5a39ab4 --- /dev/null +++ b/labs/bomb/bomb.c @@ -0,0 +1,115 @@ +/*************************************************************************** + * Dr. Evil's Insidious Bomb, Version 1.1 + * Copyright 2011, Dr. Evil Incorporated. All rights reserved. + * + * LICENSE: + * + * Dr. Evil Incorporated (the PERPETRATOR) hereby grants you (the + * VICTIM) explicit permission to use this bomb (the BOMB). This is a + * time limited license, which expires on the death of the VICTIM. + * The PERPETRATOR takes no responsibility for damage, frustration, + * insanity, bug-eyes, carpal-tunnel syndrome, loss of sleep, or other + * harm to the VICTIM. Unless the PERPETRATOR wants to take credit, + * that is. The VICTIM may not distribute this bomb source code to + * any enemies of the PERPETRATOR. No VICTIM may debug, + * reverse-engineer, run "strings" on, decompile, decrypt, or use any + * other technique to gain knowledge of and defuse the BOMB. BOMB + * proof clothing may not be worn when handling this program. The + * PERPETRATOR will not apologize for the PERPETRATOR's poor sense of + * humor. This license is null and void where the BOMB is prohibited + * by law. + ***************************************************************************/ + +#include +#include +#include "support.h" +#include "phases.h" + +/* + * Note to self: Remember to erase this file so my victims will have no + * idea what is going on, and so they will all blow up in a + * spectaculary fiendish explosion. -- Dr. Evil + */ + +FILE *infile; + +int main(int argc, char *argv[]) +{ + char *input; + + /* Note to self: remember to port this bomb to Windows and put a + * fantastic GUI on it. */ + + /* When run with no arguments, the bomb reads its input lines + * from standard input. */ + if (argc == 1) { + infile = stdin; + } + + /* When run with one argument , the bomb reads from + * until EOF, and then switches to standard input. Thus, as you + * defuse each phase, you can add its defusing string to and + * avoid having to retype it. */ + else if (argc == 2) { + if (!(infile = fopen(argv[1], "r"))) { + printf("%s: Error: Couldn't open %s\n", argv[0], argv[1]); + exit(8); + } + } + + /* You can't call the bomb with more than 1 command line argument. */ + else { + printf("Usage: %s []\n", argv[0]); + exit(8); + } + + /* Do all sorts of secret stuff that makes the bomb harder to defuse. */ + initialize_bomb(); + + printf("Welcome to my fiendish little bomb. You have 6 phases with\n"); + printf("which to blow yourself up. Have a nice day!\n"); + + /* Hmm... Six phases must be more secure than one phase! */ + input = read_line(); /* Get input */ + phase_1(input); /* Run the phase */ + phase_defused(); /* Drat! They figured it out! + * Let me know how they did it. */ + printf("Phase 1 defused. How about the next one?\n"); + + /* The second phase is harder. No one will ever figure out + * how to defuse this... */ + input = read_line(); + phase_2(input); + phase_defused(); + printf("That's number 2. Keep going!\n"); + + /* I guess this is too easy so far. Some more complex code will + * confuse people. */ + input = read_line(); + phase_3(input); + phase_defused(); + printf("Halfway there!\n"); + + /* Oh yeah? Well, how good is your math? Try on this saucy problem! */ + input = read_line(); + phase_4(input); + phase_defused(); + printf("So you got that one. Try this one.\n"); + + /* Round and 'round in memory we go, where we stop, the bomb blows! */ + input = read_line(); + phase_5(input); + phase_defused(); + printf("Good work! On to the next...\n"); + + /* This phase will never be used, since no one will get past the + * earlier ones. But just in case, make this one extra hard. */ + input = read_line(); + phase_6(input); + phase_defused(); + + /* Wow, they got it! But isn't something... missing? Perhaps + * something they overlooked? Mua ha ha ha ha! */ + + return 0; +}