๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Tried. Failed. Logged.
๐Ÿ”’์ •๋ณด๋ณด์•ˆ/๊ฒŒ์ž„ ํ•ดํ‚น

๊ฒŒ์ž„ ํ•ดํ‚น - ํ”ผ์นด์ธ„ ๋ฐฐ๊ตฌ ํ•ต(C)

by Janger 2021. 12. 3.
728x90
#include <stdio.h>
#include <windows.h>


int make_envincible(HANDLE hProcess)
{
	// ์ ์ˆ˜ ๋ชฐ๋นต 
	LPVOID base = (LPVOID)0x00403C4A;
	
	BYTE buffer[4] = {0xFF, 0x46, 0x40, 0x90}; // 1P: 0xFF, 0x46, 0x3C, 0x90 | 2P: 0xFF, 0x46, 0x40, 0x90
	BOOL is_successed = WriteProcessMemory(hProcess, base, buffer, 4, NULL);
	
	
	// ์—”๋“œ๋ฆฌ์Šค ๊ฒŒ์ž„ 
	base = (LPVOID)0x00403C27;
	
	BYTE buffer2[2] = {0x74, 0x76};
	is_successed = WriteProcessMemory(hProcess, base, buffer2, 2, NULL);
	
	return is_successed == 0;
}

void hack(void){
	HWND hWnd = FindWindow("Main", NULL); // ํด๋ž˜์Šค๋กœ ํ•ธ๋“ค ๊ฐ’ ์ฐพ๊ธฐ (ํ”ผ์นด์ธ„ ๋ฐฐ๊ตฌ ํด๋ž˜์Šค๋ช…: Main)
	if( hWnd != NULL ){
		DWORD dwProcessId = 0;
		DWORD dwThreadId = 0;
		dwThreadId = GetWindowThreadProcessId(hWnd, &dwProcessId);
		HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwProcessId );
			
		printf("result: %d\n", make_envincible(hProcess));
		
	} else {
		printf("ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n");
	}
}


int main(void)
{
	if( MessageBox(NULL, "ํ”ผ์นด์ธ„ ๋ฐฐ๊ตฌ ํ•ต์„ ํ™œ์„ฑํ™”?", "PIKA_HACK", MB_YESNO) == IDYES )
		hack();
		
	return 0;
}
728x90