이글을 5번 다른곳에 올리시고 카온홈페이지와 카온을 킨뒤 (꼭 둘다 켜야됩니다@@@@@@@@@)
앙..거긴..응..................
아..잠시..앙.......................................................
f5를 3...3........세번..아.항........................을 누르시면 ,ㅇㄴㅇ.,,.
거긴.......아...................
캐시가 충전되어있긴개뿔(응?)
------------
마이크로소프트 c언어 킨다
이 소스를 사용한다.
[
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "wininet.lib")
#include <wininet.h>
DWORD WINAPI CALL_BY_VALU(LPVOID){
/////////선언
DWORD Sckal;
UINT64 va ;
DWORD chva ;
UINT64 kal= NULL;
UINT64 kal2=NULL;
UINT64 kal3=NULL;
char NUM1 = NULL;
char NUM2 = NULL;
char NUM3 = NULL;
UINT64 ArrayKal ;
UINT64 ArrayKal2;
UINT64 ArrayKal4;
UINT64 ArrayKal3;
/////////
///////// 시작
while (1)
{
Sleep (130) ;
///////////////////////////////////////
/////////////////////////////////
if(GetKeyState(VK_NUMPAD1) & 0x8000)
MessageBox(NULL,"1,2,3번 비어있는 변수에 주소를 읽습니다.","Q?",NULL);
{HANDLE SUDDEN = GetCurrentProcess();
for (Sckal = 0x00000000;Sckal <=0x02000001; Sckal ++)
{
ReadProcessMemory(SUDDEN, (LPVOID)Sckal, &va, 1, 0 );
if(va== 7795291568775523941)
{
if(NUM1==NULL)
{ReadProcessMemory(SUDDEN, (LPVOID)va, &kal, 1, 0 );
NUM1=1; va= NULL;
MessageBox(NULL,"1번 Ok","ok",NULL);
ArrayKal2=kal+0x670 ;
ArrayKal2=*(UINT64*)(ArrayKal);
}
/////////////////////
else if(NUM2==NULL)
{ReadProcessMemory(SUDDEN, (LPVOID)va, &kal2, 1, 0 );
NUM2=1; NUM3=1; va= NULL;
ArrayKal3=kal2+0x670 ;
ArrayKal3=*(UINT64*)(ArrayKal);
MessageBox(NULL,"2번 Ok","ok",NULL);
}
//////////////////////
if(NUM3==1)
{ReadProcessMemory(SUDDEN, (LPCVOID)va, &kal3, 1, 0 );
Sckal=0x02000001 ; va= NULL;
MessageBox(NULL,"3번 Ok","ok",NULL);
ArrayKal4=kal3+0x670 ;
ArrayKal4=*(UINT64*)(ArrayKal);
}
}
va=NULL ;
}
///////////////////
if(Sckal==0x02000001)
{
if(NUM1==1)
{
MessageBox(NULL,"1번에 주소를 담았다","ok",NULL); Sckal = NULL;
if(NUM2==1)
{MessageBox(NULL,"2번에 주소를 담았다","ok",NULL); Sckal = NULL;}
if(NUM3==1){
{MessageBox(NULL,"3번에 주소를 담았다","ok",NULL); Sckal = NULL;}
}
}
else
{MessageBox(NULL,"xxx","에러",NULL); Sckal = NULL;}
}
//////////////
if(GetKeyState(VK_NUMPAD2) & 0x8000)
{ if(NUM1==1)
{ArrayKal=kal+0x670 ;
*(UINT64*)(ArrayKal)=*(UINT64*)(ArrayKal2)+50000;
NUM1=2;
MessageBox(NULL,"1번메모리주소의 값을 변경 \n적용 방식 ON","ok",NULL);
}
if(NUM2==1)
{ArrayKal=kal2+0x670 ;
*(UINT64*)(ArrayKal)=*(UINT64*)(ArrayKal3)+50000;
NUM2=2;
MessageBox(NULL,"2번메모리주소의 값을 변경 \n적용 방식 ON","ok",NULL);
}
if(NUM3==1)
{ArrayKal=kal3+0x670;
*(UINT64*)(ArrayKal)=*(UINT64*)(ArrayKal4)+50000;
NUM3=2;
MessageBox(NULL,"3번메모리주소의 값을 변경 \n적용 방식 ON","ok",NULL);
}
}
//////////////
if(GetKeyState(VK_NUMPAD3) & 0x8000)
{ if(NUM1==2)
{ArrayKal=kal+0x670 ;
*(UINT64*)(ArrayKal)=*(UINT64*)(ArrayKal2);
NUM1=1;MessageBox(NULL,"1번메모리주소의 값을 변경 \n적용 방식 OFF","ok",NULL);
}
if(NUM2==2)
{ArrayKal=kal2+0x670 ;
*(UINT64*)(ArrayKal)=*(UINT64*)(ArrayKal3);
NUM2=1;MessageBox(NULL,"2번메모리주소의 값을 변경 \n적용 방식 OFF","ok",NULL);
}
if(NUM3==2)
{ArrayKal=kal3+0x670;
*(UINT64*)(ArrayKal)=*(UINT64*)(ArrayKal4);
NUM3=1;MessageBox(NULL,"3번메모리주소의 값을 변경 \n적용 방식 OFF","ok",NULL);
}
}
////////////////
}
}
return 1;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
HANDLE hThread = NULL;
DisableThreadLibraryCalls(hModule);
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
//hModulea=hModule;
MessageBox(NULL,"OK","ok",NULL);
//SetTimer(0,1,50,KeyProc);
hThread = CreateThread(NULL, 0, CALL_BY_VALU, NULL, 0, NULL);
CloseHandle(hThread);
//break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
__declspec(naked)
DWORD __stdcall
_ZwProtectVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PULONG ProtectSize, IN ULONG NewProtect, OUT PULONG OldProtect)
{
__asm
{
MOV EAX, 0xD7
MOV EDX, 0x7FFE0300
CALL DWORD PTR DS:[EDX]
RETN 0x14
}
}
DWORD ProtectVirtualMemory(HANDLE ProcessHandle, PVOID BaseAddress, ULONG ProtectSize, ULONG NewProtect, PULONG OldProtect)
{
DWORD dwDummy;
return _ZwProtectVirtualMemory( ProcessHandle, &BaseAddress, &ProtectSize, NewProtect, OldProtect ? OldProtect : &dwDummy );
}
]
끗