JAVA(JNA)内联汇编之外挂编写(魔域宝宝出征CALL)
来源:互联网 发布:seo搜索引擎优化公司 编辑:程序博客网 时间:2024/04/27 22:33
需要外部包 jna.jar LocalOS_src.jar
MyKernel32类
package com.jna;import com.sun.jna.Native;import com.sun.jna.Structure;import com.sun.jna.examples.win32.Kernel32;import com.sun.jna.examples.win32.W32API;import com.sun.jna.ptr.IntByReference; public interface MyKernel32 extends Kernel32{ public MyKernel32 INSTANCE=(MyKernel32)Native.loadLibrary("kernel32",MyKernel32.class); public W32API.HANDLE OpenProcess(int dwDesiredAccess,boolean flag,int dwProcessid); public boolean ReadProcessMemory(W32API.HANDLE hProcess,int ipBaseAddress,Object ipBuffer,int nSize,IntByReference ipNumberOfBytesRead); public boolean ReadProcesMemorey(W32API.HANDLE hProcess,int IntBaseAddress,byte []ipBuffer,int nSize,IntByReference ipNumberOfBytesRead); public int VirtualAllocEx(W32API.HANDLE hProcess,IntByReference lpAddress,int dwSize,int flAllocationType,int flProtect); public HANDLE CreateRemoteThread(W32API.HANDLE hProcess,Structure lpThreadAttributes,int dwStackSize,int lpStartAddress,Structure lpParameter,int dwCreationFlags,IntByReference lpThreadId); public boolean WriteProcessMemory(W32API.HANDLE hProcess,int lpBaseAddress,byte []lpBuffer,int nSize,IntByReference lpNumberOfBytesWritten); }
Main类
package com.main;import com.jna.MyKernel32;import com.sun.jna.Structure;import com.sun.jna.examples.win32.User32;import com.sun.jna.examples.win32.W32API;import com.sun.jna.examples.win32.W32API.HANDLE;import com.sun.jna.examples.win32.W32API.HWND;import com.sun.jna.ptr.IntByReference;import org.loon.framework.os.ASM;@SuppressWarnings({"unused","static-access"})public class Main { private static final int PROCESS_ALL_ACCESS=2035711; //权限 public void Game(){ //获得窗口句柄 W32API.HWND hwnd = User32.INSTANCE.FindWindow(null, "【魔域】"); //获得窗口进程ID IntByReference lpdwProcessId=new IntByReference(); int Tid = User32.INSTANCE.GetWindowThreadProcessId(hwnd, lpdwProcessId); W32API.HANDLE processHandle=null; //获得进程句柄 processHandle=MyKernel32.INSTANCE.OpenProcess(PROCESS_ALL_ACCESS,false, lpdwProcessId.getValue()); //开辟内存空间 int l=MyKernel32.INSTANCE.VirtualAllocEx(processHandle, null, 0x3000, 0x1000, 0x40); if(l==0){ System.out.println("分配内存失败"); return; }else{ System.out.println("分配内存成功"); System.out.println("内存地址:"+l); } //编写汇编码 ASM asm = new ASM(); //寄存器全部入栈 asm._PUSHAD(); //写入CALL汇编码 //BB出征CALL asm._PUSH(0); asm._PUSH(0x83afe631); asm._MOV_ECX(0x01170090); asm._CALL(0x00C88890); //寄存器全部出栈 asm._POPAD(); //结尾标记 asm._RET(); boolean b = MyKernel32.INSTANCE.WriteProcessMemory(processHandle, l, ASM.getHexToBytes(asm.getASMCode()), 0x3000, null); if(b){ System.out.println("写入成功"); }else{ System.out.println("写入失败"); return; } int lpThreadId=0; MyKernel32.INSTANCE.CreateRemoteThread(processHandle, null, 0, l,null , 0, null); } public static void main(String[] args) { Main main = new Main(); main.Game(); }}
- JAVA(JNA)内联汇编之外挂编写(魔域宝宝出征CALL)
- JAVA(JNA)内联汇编之外挂编写()
- java 做外挂 内联汇编
- java 做外挂 内联汇编
- 游戏外挂编程二之C/C++内联汇编代码和DLL
- 在Visual C++中编写内联汇编
- VC之内联汇编代码...
- java 调度 datastage 之jna
- 外挂制作找CALL入门-之本人找CALL
- 出征!
- 《为自己出征》之读书笔记
- 内联汇编
- 内联汇编
- 内联汇编
- 内联汇编
- 内联汇编
- 内联汇编
- 内联汇编
- Common Language Extension : For Android
- 使用Ajax提交表单的注意事项
- Java 操作SQL Server _CRUD
- Quartz时间规范
- OPENGL 贴图影响绘制 OR 绘图影响贴图
- JAVA(JNA)内联汇编之外挂编写(魔域宝宝出征CALL)
- 金额数字转中文大写(转)(java)
- 用Windows API进行串口编程的一般步骤及相关函数讲解
- php实现产生随机数并累加
- oracle中字符串比较
- C++ Virtual详解
- 基于MTD的NAND驱动开发
- SQL语句中一个查询结果集作为另一个查询的范围
- SAX解析xml文件实例