Advertisement
DouglasRG

Talita Protect's Source

Jun 18th, 2012
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.65 KB | None | 0 0
  1. {
  2. Versão: v.1.0
  3. Autor: Douglasrg
  4. }
  5. library TalitaProtect;
  6. uses
  7.   SysUtils,
  8.   Classes,
  9.   Windows,
  10.   Dialogs,
  11.   TLHelp32,
  12.   PsAPI,
  13.   Messages;
  14. {$R *.res}
  15. //var ThreadID: Dword;
  16. function FinalizarJogo(sFile: String): Boolean;
  17. var
  18.   verSystem: TOSVersionInfo;
  19.   hdlSnap,hdlProcess: THandle;
  20.   bPath,bLoop: Bool;
  21.   peEntry: TProcessEntry32;
  22.   arrPid: Array [0..1023] of DWORD;
  23.   iC: DWord;
  24.   k,iCount: Integer;
  25.   arrModul: Array [0..299] of Char;
  26.   hdlModul: HMODULE;
  27. begin
  28.   Result := False;
  29.   if ExtractFileName(sFile)=sFile then
  30.         bPath:=false
  31.   else
  32.         bPath:=true;
  33.   verSystem.dwOSVersionInfoSize:=SizeOf(TOSVersionInfo);
  34.   GetVersionEx(verSystem);
  35.   if verSystem.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS then
  36.   begin
  37.         hdlSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  38.         peEntry.dwSize:=Sizeof(peEntry);
  39.         bLoop:=Process32First(hdlSnap,peEntry);
  40.         while integer(bLoop)<>0 do
  41.         begin
  42.           if bPath then
  43.           begin
  44.                 if CompareText(peEntry.szExeFile,sFile) = 0 then
  45.                 begin
  46.                   TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,peEntry.th32ProcessID), 0);
  47.                   Result := True;
  48.                 end;
  49.           end
  50.           else
  51.           begin
  52.                 if CompareText(ExtractFileName(peEntry.szExeFile),sFile) = 0 then
  53.                 begin
  54.                   TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,peEntry.th32ProcessID), 0);
  55.                   Result := True;
  56.                 end;
  57.           end;
  58.           bLoop := Process32Next(hdlSnap,peEntry);
  59.         end;
  60.         CloseHandle(hdlSnap);
  61.   end
  62.   else
  63.         if verSystem.dwPlatformId=VER_PLATFORM_WIN32_NT then
  64.         begin
  65.           EnumProcesses(@arrPid,SizeOf(arrPid),iC);
  66.           iCount := iC div SizeOf(DWORD);
  67.           for k := 0 to Pred(iCount) do
  68.           begin
  69.                 hdlProcess:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,false,arrPid [k]);
  70.                 if (hdlProcess<>0) then
  71.                 begin
  72.                   EnumProcessModules(hdlProcess,@hdlModul,SizeOf(hdlModul),iC);
  73.                   GetModuleFilenameEx(hdlProcess,hdlModul,arrModul,SizeOf(arrModul));
  74.                   if bPath then
  75.                   begin
  76.                         if CompareText(arrModul,sFile) = 0 then
  77.                         begin
  78.                           TerminateProcess(OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,False,arrPid [k]), 0);
  79.                           Result := True;
  80.                         end;
  81.                   end
  82.                   else
  83.                   begin
  84.                         if CompareText(ExtractFileName(arrModul),sFile) = 0 then
  85.                         begin
  86.                           TerminateProcess(OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,False,arrPid [k]), 0);
  87.                           Result := True;
  88.                         end;
  89.                   end;
  90.                   CloseHandle(hdlProcess);
  91.                 end;
  92.           end;
  93.         end;
  94. end;
  95. function Hack(exeFileName: string): Boolean;
  96. var
  97.   ContinueLoop: BOOL;
  98. FSnapshotHandle: THandle;
  99. FProcessEntry32: TProcessEntry32;
  100. begin
  101. FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  102. FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  103. ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  104. Result := False;
  105. while Integer(ContinueLoop) <> 0 do
  106. begin
  107.                 if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
  108.                   UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
  109.                  UpperCase(ExeFileName))) then
  110. begin
  111. Result := True;
  112. end;
  113. ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  114. end;
  115. CloseHandle(FSnapshotHandle);
  116. end;
  117. procedure Finalize2;
  118. begin
  119.   if Hack('Main.exe') then
  120.   begin
  121.         FinalizarJogo('Main.exe');
  122.   end;
  123.   if Hack('Open.exe') then
  124.   begin
  125.         FinalizarJogo('Open.exe');
  126.   end;
  127. end;
  128. //end;
  129. procedure AntHack;
  130. var
  131.   ThreadID2, Programa : DWORD;
  132. begin
  133.   Programa := FindWindow(nil,'Form1');
  134.   while Programa > 0 do
  135.   begin
  136.         Sleep(2000);
  137.   if (FindWindow('Window',nil) > 0) or (Hack('cheatengine-i386.exe')) then
  138.   begin
  139.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  140.   break;
  141.   end;
  142.    Sleep(2000);
  143.         if (FindWindow(nil,'Cheat Engine 6.2') > 0) or (Hack('cheatengine-i386.exe')) then
  144.   begin
  145.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  146.   Break;
  147.   end;
  148.    Sleep(2000);
  149.         if (FindWindow(nil,'Cheat Engine 6.1') > 0) or (Hack('cheatengine-i386.exe')) then
  150.   begin
  151.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  152.   Break;
  153.   end;
  154.    Sleep(2000);
  155.         if (FindWindow(nil,'Cheat Engine 6.0') > 0) or (Hack('cheatengine-i386.exe')) then
  156.   begin
  157.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  158.   Break;
  159.   end;
  160.    Sleep(2000);
  161.         if (FindWindow(nil,'Cheat Engine 5.6.1') > 0) or (Hack('cheatengine-i386.exe')) then
  162.   begin
  163.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  164.   Break;
  165.   end;
  166.    Sleep(2000);
  167.         if (FindWindow('OLLYDBG',nil) > 0) or (Hack('OLLYDBG.EXE')) then
  168.   begin
  169.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  170.   Break;
  171.   end;
  172.    Sleep(2000);
  173.           if (FindWindow(nil,'Autostart And Process Viewer:www.konrado.com') > 0) or (Hack('autostart_and_process_viewer.exe')) then
  174.   begin
  175.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  176.   Break;
  177.   end;
  178.    Sleep(2000);
  179.    if (FindWindow('PROCEXPL',nil) > 0) or (Hack('Sigma Explorer.exe')) then
  180.   begin
  181.   CreateThread(nil,ThreadID2,@Finalize2,nil,ThreadID2,ThreadID2);
  182.   Break;
  183.   end;
  184.   end;
  185. end;
  186. procedure hook(target, newfunc:pointer);
  187. var
  188.   jmpto:dword;
  189.         OldProtect: Cardinal; // old protect in memory
  190. begin
  191.   jmpto:=dword(newfunc)-dword(target)-5;
  192.   VirtualProtect(target, 5, PAGE_EXECUTE_READWRITE, @OldProtect);
  193.   pbyte(target)^:=$e9;
  194.   pdword(dword(target)+1)^:=jmpto;
  195. end;
  196. var
  197.   ThreadID3: DWORD;
  198. procedure myLdrLoadDll(PathToFile:PAnsiChar; Flags:variant; ModuleFileName:PAnsiChar; var ModuleHandle:THandle);
  199. begin
  200.    CreateThread(nil,ThreadID3,@Finalize2,nil,ThreadID3,ThreadID3);
  201.    ModuleHandle:=0;
  202. end;
  203. procedure AntDLL;
  204. var
  205.   Programa1 : DWORD;
  206. begin
  207.   Programa1:= FindWindow(nil,'Main');
  208.   while Programa1 > 0 do
  209.   begin
  210. Hook(GetProcAddress(GetModuleHandle('ntdll.dll'), 'LdrLoadDll'), @myLdrLoadDll);
  211. Break;
  212. end;
  213. end;
  214. var
  215.    ThreadID,ThreadID2:DWORD;
  216. begin
  217.   CreateThread(nil,ThreadID2,@AntDLL,nil,ThreadID2,ThreadID2);
  218.   CreateThread(nil,ThreadID,@AntHack,nil,ThreadID,ThreadID);
  219. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement