JavaRush /Blog Jawa /Random-JV /Manipulasi Memori Jawa
Cyber Cheat
tingkat

Manipulasi Memori Jawa

Diterbitake ing grup
Hello Guru Jawa! Umumé, aku takon dhewe pitakonan ing ngisor iki: Aku bisa maca lan nulis menyang aplikasi proses sing wis ditulis thanks kanggo perpustakaan Java Memory Manipulation ? Iki ora pisanan aku takon pitakonan iki, nanging ana sethitik banget informasi ing. Jeksa Agung bisa ngetokake iki ing Internet, amarga everyone nyerat sing iki mokal ing Jawa, sanajan aku weruh sawetara kiriman sing iki nyata. Mulane aku pengin njaluk bantuan sampeyan, kepiye carane bisa ngetrapake produk iki? :)
public static void main(String args[]) {
    	//Get ProcessID
    	long pid = findProcessId("nuclearthrone.exe");
    	if(pid == 0) {
    		System.err.println("ProcessId not found.");
    		System.exit(1);
    	}
    	System.out.println(pid);

    	Pointer readProcess = openProcess(readRight, pid);//opens process with read privileges
    	Pointer writeProcess = openProcess(writeRight, pid);

    	int size = 4;//we want to read 4 bytes
    	int adress = Integer.parseInt("036CB314", 16);

    	//ReadMemory
    	 read = readMemory(readProcess, adress, size);
    	System.out.println(read.getInt(0));//value of memory read

    	//Write Memory
    	Cheater.writeMemory(4, 1079246848, writeProcess, adress);
    }

    static long findProcessId(String processName) {
		//This Reference will contain the processInfo that will be parsed t recover the ProcessId
		Tlhelp32.PROCESSENTRY32.ByReference processInfo = new Tlhelp32.PROCESSENTRY32.ByReference();

		//this handle allows us to parse the process map
		WinNT.HANDLE processesSnapshot = kernel32.CreateToolhelp32Snapshot(Tlhelp32.TH32CS_SNAPPROCESS, new DWORD(0L));
		if(processesSnapshot == kernel32.INVALID_HANDLE_VALUE) {
			if(DEBUG) System.err.println("INVALID_HANDLE_VALUE");
			return 0L;
		}

		try {// This will parse all the processes to find the process id corresponding to the process name
			kernel32.Process32First(processesSnapshot, processInfo);
			if(processName.equals(Native.toString(processInfo.szExeFile))) {
				if(DEBUG) if(DEBUG) System.out.println("Process " + processName + " found : " + processInfo.th32ProcessID.longValue());
                return processInfo.th32ProcessID.longValue();
			}

			while(kernel32.Process32Next(processesSnapshot, processInfo)) {
				if(processName.equals(Native.toString(processInfo.szExeFile)))
                {
                    if(DEBUG) System.out.println("Process " + processName + " found : " + processInfo.th32ProcessID.longValue());
                    return processInfo.th32ProcessID.longValue();
                }
			}

			if(DEBUG) System.out.println("Did not find requested Process: " + processName);
			return 0L;
		} finally {
			kernel32.CloseHandle(processesSnapshot);
		}
	}//findProcessId

    static Pointer openProcess( permissions, long pid) {
    	Pointer process = myKernel32.OpenProcess(permissions, true, (int)pid);
    	 process;
    }
    static Memory readMemory( process, int adress, int readSize) {
    	 output = new Memory(readSize);
		if(!myKernel32.ReadProcessMemory(process, adress, output, readSize, new IntByReference(0))) {
			int error =myKernel32.getLastError();
			switch(error) {
			default:
				System.err.println("Failed to read the process: " + error);
				break;
			case 0x12B:
				System.err.println("Failed to read the specified adress");
				break;
			}
			System.exit(1);
		}
		return output;
    }
    static void writeMemory(int readSize, int newValue, Pointer process, long adress) {
    	IntByReference written = new IntByReference(0);
		 toWrite = new Memory(readSize);

		toWrite.setInt(0, newValue);

		if(!myKernel32.WriteProcessMemory(process, (int)adress toWrite, , written)) {
			int error = myKernel32.getLastError();
			switch(error)
            {
                default:
                    System.err.println("Failed to write in the process : " + error);
                    break;
            }
            System.exit(1);
		}
		System.out.println("Wrote " + written.getValue() + " times");
    }
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION