Code:
package de.keving;
import com.sun.jna.*;
import com.sun.jna.ptr.*;
public class W32Api {
public static final int PROCESS_QUERY_INFORMATION = 0x0400;
public static final int PROCESS_VM_READ = 0x0010;
public static final int PROCESS_VM_WRITE = 0x0020;
public static final int PROCESS_VM_OPERATION = 0x0008;
public static final int PROCESS_ACCESS_FLAG = 0x0439;
private interface User32 extends Library {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
Pointer FindWindowA(String winClass, String title);
Pointer FindWindowByCaptionA(Pointer ZeroOnly, String lpWindowName);
String GetWindowTextA(Pointer hwnd);
}
private interface Psapi extends Library
{
Psapi INSTANCE = (Psapi) Native.loadLibrary("Psapi", Psapi.class);
boolean EnumProcesses(int []ProcessIDsOut,int size , int[] BytesReturned);
int GetProcessImageFileNameW(Pointer Process, char[] outputname, int lenght);
int GetModuleFileNameExA (Pointer process, Pointer hModule, byte[] lpString, int nMaxCount);
}
private interface Kernel32 extends Library {
Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
Pointer OpenProcess(int dwDesiredAccess, boolean bInheritHandle, int dwProcessId);
boolean ReadProcessMemory(Pointer hProcess, int inBaseAddress, Pointer outputBuffer, int nSize, IntByReference outNumberOfBytesRead);
boolean WriteProcessMemory(Pointer hProcess, Pointer pAddress, Pointer inputBuffer, int nSize, IntByReference outNumberOfBytesWritten);
int WriteProcessMemory(Pointer hProcess, int lpBaseAddress, int[] lpBuffer, int nSize, int[] lpNumberOfBytesWritten);
int GetLastError();
boolean EnumProcesses(int []ProcessIDsOut,int size , int[] BytesReturned);
int GetProcessImageFileNameW(Pointer Process, char[] outputname, int lenght);
}
public static boolean EnumProcesses(int []ProcessIDsOut,int size , int[] BytesReturned)
{
return Psapi.INSTANCE.EnumProcesses(ProcessIDsOut, size, BytesReturned);
}
public static int GetProcessImageFileNameW(Pointer Process, char[] outputname, int lenght)
{
return Psapi.INSTANCE.GetProcessImageFileNameW(Process, outputname, lenght);
}
public static Pointer OpenProcess(int dwDesiredAccess, boolean bInheritHandle, int dwProcessId)
{
return Kernel32.INSTANCE.OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId);
}
public static boolean ReadProcessMemory(Pointer process, int offset, Pointer outputBuffer, int size, IntByReference BytesRead)
{
return Kernel32.INSTANCE.ReadProcessMemory(process, offset, outputBuffer, size, BytesRead);
}
public static int WriteProcessMemory(Pointer hProcess, int lpBaseAddress, int[] lpBuffer, int nSize, int[] lpNumberOfBytesWritten)
{
return Kernel32.INSTANCE.WriteProcessMemory(hProcess, lpBaseAddress, lpBuffer, nSize, lpNumberOfBytesWritten);
}
public static boolean WriteProcessMemory(Pointer hProcess, Pointer pAddress, Pointer inputBuffer, int nSize, IntByReference outNumberOfBytesWritten)
{
return Kernel32.INSTANCE.WriteProcessMemory(hProcess, pAddress, inputBuffer, nSize, outNumberOfBytesWritten);
}
public static int GetModuleFileNameEx (Pointer process, Pointer hModule, byte[] lpString, int nMaxCount)
{
return Psapi.INSTANCE.GetModuleFileNameExA(process, hModule, lpString, nMaxCount);
}
}
To set a Killstreak i use the following peace of code: