diff --git a/bindings/const_generator.py b/bindings/const_generator.py index 60331e63..5a50accf 100644 --- a/bindings/const_generator.py +++ b/bindings/const_generator.py @@ -40,6 +40,22 @@ template = { 'comment_open': '//', 'comment_close': '', }, + 'java': { + 'header': "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface %sConst {\n", + 'footer': "\n}\n", + 'line_format': ' public static final int %s = %s;\n', + 'out_file': './java/unicorn/%sConst.java', + # prefixes for constant filenames of all archs - case sensitive + 'arm.h': 'Arm', + 'arm64.h': 'Arm64', + 'mips.h': 'Mips', + 'x86.h': 'X86', + 'sparc.h': 'Sparc', + 'm68k.h': 'M68k', + 'unicorn.h': 'Unicorn', + 'comment_open': '//', + 'comment_close': '', + }, } # markup for comments to be added to autogen files diff --git a/bindings/java/Makefile b/bindings/java/Makefile index 94fcfee6..4d3af3e5 100644 --- a/bindings/java/Makefile +++ b/bindings/java/Makefile @@ -1,3 +1,6 @@ + +.PHONY: gen_const clean + JAVA_HOME := $(shell jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));') JAVA_INC := $(shell realpath $(JAVA_HOME)/../include) @@ -63,3 +66,13 @@ jar: jarfiles install: lib jar cp libunicorn_java$(LIB_EXT) $(JAVA_HOME)/lib/ext cp $(JARFILE) $(JAVA_HOME)/lib/ext + +gen_const: + cd .. && python const_generator.py java + +clean: + rm unicorn/*.class + rm samples/*.class + rm *.so + rm *.dylib + rm *.dll \ No newline at end of file diff --git a/bindings/java/samples/SampleNetworkAuditing.java b/bindings/java/samples/SampleNetworkAuditing.java index 7242b9e7..c275a25d 100644 --- a/bindings/java/samples/SampleNetworkAuditing.java +++ b/bindings/java/samples/SampleNetworkAuditing.java @@ -245,25 +245,25 @@ public class SampleNetworkAuditing { static { SOCKET_TYPES = new Hashtable(); ADDR_FAMILY = new Hashtable(); - SOCKET_TYPES.put(1, "SOCK_STREAM"); - SOCKET_TYPES.put(2, "SOCK_DGRAM"); - SOCKET_TYPES.put(3, "SOCK_RAW"); - SOCKET_TYPES.put(4, "SOCK_RDM"); - SOCKET_TYPES.put(5, "SOCK_SEQPACKET"); - SOCKET_TYPES.put(10, "SOCK_PACKET"); + SOCKET_TYPES.put(1L, "SOCK_STREAM"); + SOCKET_TYPES.put(2L, "SOCK_DGRAM"); + SOCKET_TYPES.put(3L, "SOCK_RAW"); + SOCKET_TYPES.put(4L, "SOCK_RDM"); + SOCKET_TYPES.put(5L, "SOCK_SEQPACKET"); + SOCKET_TYPES.put(10L, "SOCK_PACKET"); - ADDR_FAMILY.put(0, "AF_UNSPEC"); - ADDR_FAMILY.put(1, "AF_UNIX"); - ADDR_FAMILY.put(2, "AF_INET"); - ADDR_FAMILY.put(3, "AF_AX25"); - ADDR_FAMILY.put(4, "AF_IPX"); - ADDR_FAMILY.put(5, "AF_APPLETALK"); - ADDR_FAMILY.put(6, "AF_NETROM"); - ADDR_FAMILY.put(7, "AF_BRIDGE"); - ADDR_FAMILY.put(8, "AF_AAL5"); - ADDR_FAMILY.put(9, "AF_X25"); - ADDR_FAMILY.put(10, "AF_INET6"); - ADDR_FAMILY.put(12, "AF_MAX"); + ADDR_FAMILY.put(0L, "AF_UNSPEC"); + ADDR_FAMILY.put(1L, "AF_UNIX"); + ADDR_FAMILY.put(2L, "AF_INET"); + ADDR_FAMILY.put(3L, "AF_AX25"); + ADDR_FAMILY.put(4L, "AF_IPX"); + ADDR_FAMILY.put(5L, "AF_APPLETALK"); + ADDR_FAMILY.put(6L, "AF_NETROM"); + ADDR_FAMILY.put(7L, "AF_BRIDGE"); + ADDR_FAMILY.put(8L, "AF_AAL5"); + ADDR_FAMILY.put(9L, "AF_X25"); + ADDR_FAMILY.put(10L, "AF_INET6"); + ADDR_FAMILY.put(12L, "AF_MAX"); } // http://shell-storm.org/shellcode/files/shellcode-861.php @@ -395,7 +395,7 @@ public class SampleNetworkAuditing { Unicorn mu = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - mu.mem_map(ADDRESS, 2 * 1024 * 1024); + mu.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory mu.mem_write(ADDRESS, code); diff --git a/bindings/java/samples/Sample_arm.java b/bindings/java/samples/Sample_arm.java index 8d6ddebe..ca3a8163 100644 --- a/bindings/java/samples/Sample_arm.java +++ b/bindings/java/samples/Sample_arm.java @@ -51,7 +51,7 @@ public class Sample_arm { Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM, Unicorn.UC_MODE_ARM); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, ARM_CODE); @@ -93,7 +93,7 @@ public class Sample_arm { Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM, Unicorn.UC_MODE_THUMB); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, THUMB_CODE); diff --git a/bindings/java/samples/Sample_arm64.java b/bindings/java/samples/Sample_arm64.java index d406d176..12464eaa 100644 --- a/bindings/java/samples/Sample_arm64.java +++ b/bindings/java/samples/Sample_arm64.java @@ -79,7 +79,7 @@ public class Sample_arm64 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_ARM64, Unicorn.UC_MODE_ARM); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, ARM_CODE); diff --git a/bindings/java/samples/Sample_m68k.java b/bindings/java/samples/Sample_m68k.java index 1988c500..129cad2e 100644 --- a/bindings/java/samples/Sample_m68k.java +++ b/bindings/java/samples/Sample_m68k.java @@ -95,7 +95,7 @@ public class Sample_m68k { Unicorn u = new Unicorn(Unicorn.UC_ARCH_M68K, Unicorn.UC_MODE_BIG_ENDIAN); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, M68K_CODE); diff --git a/bindings/java/samples/Sample_mips.java b/bindings/java/samples/Sample_mips.java index 60c85fab..14ac5d14 100644 --- a/bindings/java/samples/Sample_mips.java +++ b/bindings/java/samples/Sample_mips.java @@ -78,7 +78,7 @@ public class Sample_mips { Unicorn u = new Unicorn(Unicorn.UC_ARCH_MIPS, Unicorn.UC_MODE_MIPS32 + Unicorn.UC_MODE_BIG_ENDIAN); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, MIPS_CODE_EB); @@ -116,7 +116,7 @@ public class Sample_mips { Unicorn u = new Unicorn(Unicorn.UC_ARCH_MIPS, Unicorn.UC_MODE_MIPS32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, MIPS_CODE_EL); diff --git a/bindings/java/samples/Sample_sparc.java b/bindings/java/samples/Sample_sparc.java index 0b109f86..e30daf60 100644 --- a/bindings/java/samples/Sample_sparc.java +++ b/bindings/java/samples/Sample_sparc.java @@ -79,7 +79,7 @@ public class Sample_sparc { Unicorn u = new Unicorn(Unicorn.UC_ARCH_SPARC, Unicorn.UC_MODE_BIG_ENDIAN); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, SPARC_CODE); diff --git a/bindings/java/samples/Sample_x86.java b/bindings/java/samples/Sample_x86.java index 5f847428..f92e1392 100644 --- a/bindings/java/samples/Sample_x86.java +++ b/bindings/java/samples/Sample_x86.java @@ -91,7 +91,7 @@ public class Sample_x86 { System.out.printf(">>> Missing memory is being WRITE at 0x%x, data size = %d, data value = 0x%x\n", address, size, value); // map this memory in with 2MB in size - u.mem_map(0xaaaa0000, 2 * 1024*1024); + u.mem_map(0xaaaa0000, 2 * 1024*1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // return true to indicate we want to continue return true; } @@ -193,7 +193,7 @@ public class Sample_x86 { } // map 2MB memory for this emulation - uc.mem_map(ADDRESS, 2 * 1024 * 1024); + uc.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory try { @@ -251,7 +251,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE32_INOUT); @@ -294,7 +294,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE32_JUMP); @@ -326,7 +326,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE32_LOOP); @@ -363,7 +363,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE32_MEM_READ); @@ -410,7 +410,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE32_MEM_WRITE); @@ -470,7 +470,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE32_JMP_INVALID); @@ -528,7 +528,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_64); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE64); @@ -615,7 +615,7 @@ public class Sample_x86 { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_16); // map 8KB memory for this emulation - u.mem_map(0, 8 * 1024); + u.mem_map(0, 8 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(0, X86_CODE16); diff --git a/bindings/java/samples/Shellcode.java b/bindings/java/samples/Shellcode.java index 7a15e7a3..9a1c1c81 100644 --- a/bindings/java/samples/Shellcode.java +++ b/bindings/java/samples/Shellcode.java @@ -121,7 +121,7 @@ public class Shellcode { Unicorn u = new Unicorn(Unicorn.UC_ARCH_X86, Unicorn.UC_MODE_32); // map 2MB memory for this emulation - u.mem_map(ADDRESS, 2 * 1024 * 1024); + u.mem_map(ADDRESS, 2 * 1024 * 1024, Unicorn.UC_PROT_READ | Unicorn.UC_PROT_WRITE); // write machine code to be emulated to memory u.mem_write(ADDRESS, X86_CODE32_SELF); diff --git a/bindings/java/unicorn/Arm64Regs.java b/bindings/java/unicorn/Arm64Const.java similarity index 93% rename from bindings/java/unicorn/Arm64Regs.java rename to bindings/java/unicorn/Arm64Const.java index 4d384637..6104a277 100644 --- a/bindings/java/unicorn/Arm64Regs.java +++ b/bindings/java/unicorn/Arm64Const.java @@ -1,27 +1,11 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ +// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT package unicorn; -public interface Arm64Regs { +public interface Arm64Const { + +// ARM64 registers + public static final int UC_ARM64_REG_INVALID = 0; public static final int UC_ARM64_REG_X29 = 1; public static final int UC_ARM64_REG_X30 = 2; @@ -282,10 +266,15 @@ public interface Arm64Regs { public static final int UC_ARM64_REG_V29 = 257; public static final int UC_ARM64_REG_V30 = 258; public static final int UC_ARM64_REG_V31 = 259; + +// pseudo registers public static final int UC_ARM64_REG_PC = 260; public static final int UC_ARM64_REG_ENDING = 261; - public static final int UC_ARM64_REG_IP1 = UC_ARM64_REG_X16; - public static final int UC_ARM64_REG_IP0 = UC_ARM64_REG_X17; - public static final int UC_ARM64_REG_FP = UC_ARM64_REG_X29; - public static final int UC_ARM64_REG_LR = UC_ARM64_REG_X30; + +// alias registers + public static final int UC_ARM64_REG_IP1 = 215; + public static final int UC_ARM64_REG_IP0 = 216; + public static final int UC_ARM64_REG_FP = 1; + public static final int UC_ARM64_REG_LR = 2; + } diff --git a/bindings/java/unicorn/ArmRegs.java b/bindings/java/unicorn/ArmConst.java similarity index 82% rename from bindings/java/unicorn/ArmRegs.java rename to bindings/java/unicorn/ArmConst.java index 754547ed..b2c4644a 100644 --- a/bindings/java/unicorn/ArmRegs.java +++ b/bindings/java/unicorn/ArmConst.java @@ -1,27 +1,11 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ +// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT package unicorn; -public interface ArmRegs { +public interface ArmConst { + +// ARM registers + public static final int UC_ARM_REG_INVALID = 0; public static final int UC_ARM_REG_APSR = 1; public static final int UC_ARM_REG_APSR_NZCV = 2; @@ -134,11 +118,14 @@ public interface ArmRegs { public static final int UC_ARM_REG_S30 = 109; public static final int UC_ARM_REG_S31 = 110; public static final int UC_ARM_REG_ENDING = 111; - public static final int UC_ARM_REG_R13 = UC_ARM_REG_SP; - public static final int UC_ARM_REG_R14 = UC_ARM_REG_LR; - public static final int UC_ARM_REG_R15 = UC_ARM_REG_PC; - public static final int UC_ARM_REG_SB = UC_ARM_REG_R9; - public static final int UC_ARM_REG_SL = UC_ARM_REG_R10; - public static final int UC_ARM_REG_FP = UC_ARM_REG_R11; - public static final int UC_ARM_REG_IP = UC_ARM_REG_R12; + +// alias registers + public static final int UC_ARM_REG_R13 = 12; + public static final int UC_ARM_REG_R14 = 10; + public static final int UC_ARM_REG_R15 = 11; + public static final int UC_ARM_REG_SB = 75; + public static final int UC_ARM_REG_SL = 76; + public static final int UC_ARM_REG_FP = 77; + public static final int UC_ARM_REG_IP = 78; + } diff --git a/bindings/java/unicorn/M68kRegs.java b/bindings/java/unicorn/M68kConst.java similarity index 57% rename from bindings/java/unicorn/M68kRegs.java rename to bindings/java/unicorn/M68kConst.java index b36d5400..4f0574d8 100644 --- a/bindings/java/unicorn/M68kRegs.java +++ b/bindings/java/unicorn/M68kConst.java @@ -1,27 +1,11 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ +// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT package unicorn; -public interface M68kRegs { +public interface M68kConst { + +// M68K registers + public static final int UC_M68K_REG_INVALID = 0; public static final int UC_M68K_REG_A0 = 1; public static final int UC_M68K_REG_A1 = 2; @@ -42,4 +26,5 @@ public interface M68kRegs { public static final int UC_M68K_REG_SR = 17; public static final int UC_M68K_REG_PC = 18; public static final int UC_M68K_REG_ENDING = 19; + } diff --git a/bindings/java/unicorn/MipsRegs.java b/bindings/java/unicorn/MipsConst.java similarity index 68% rename from bindings/java/unicorn/MipsRegs.java rename to bindings/java/unicorn/MipsConst.java index f87274d1..9b55cb4e 100644 --- a/bindings/java/unicorn/MipsRegs.java +++ b/bindings/java/unicorn/MipsConst.java @@ -1,28 +1,14 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ +// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT package unicorn; -public interface MipsRegs { +public interface MipsConst { + +// MIPS registers + public static final int UC_MIPS_REG_INVALID = 0; + +// General purpose registers public static final int UC_MIPS_REG_PC = 1; public static final int UC_MIPS_REG_0 = 2; public static final int UC_MIPS_REG_1 = 3; @@ -56,6 +42,8 @@ public interface MipsRegs { public static final int UC_MIPS_REG_29 = 31; public static final int UC_MIPS_REG_30 = 32; public static final int UC_MIPS_REG_31 = 33; + +// DSP registers public static final int UC_MIPS_REG_DSPCCOND = 34; public static final int UC_MIPS_REG_DSPCARRY = 35; public static final int UC_MIPS_REG_DSPEFI = 36; @@ -67,10 +55,14 @@ public interface MipsRegs { public static final int UC_MIPS_REG_DSPOUTFLAG23 = 42; public static final int UC_MIPS_REG_DSPPOS = 43; public static final int UC_MIPS_REG_DSPSCOUNT = 44; + +// ACC registers public static final int UC_MIPS_REG_AC0 = 45; public static final int UC_MIPS_REG_AC1 = 46; public static final int UC_MIPS_REG_AC2 = 47; public static final int UC_MIPS_REG_AC3 = 48; + +// COP registers public static final int UC_MIPS_REG_CC0 = 49; public static final int UC_MIPS_REG_CC1 = 50; public static final int UC_MIPS_REG_CC2 = 51; @@ -79,6 +71,8 @@ public interface MipsRegs { public static final int UC_MIPS_REG_CC5 = 54; public static final int UC_MIPS_REG_CC6 = 55; public static final int UC_MIPS_REG_CC7 = 56; + +// FPU registers public static final int UC_MIPS_REG_F0 = 57; public static final int UC_MIPS_REG_F1 = 58; public static final int UC_MIPS_REG_F2 = 59; @@ -119,6 +113,8 @@ public interface MipsRegs { public static final int UC_MIPS_REG_FCC5 = 94; public static final int UC_MIPS_REG_FCC6 = 95; public static final int UC_MIPS_REG_FCC7 = 96; + +// AFPR128 public static final int UC_MIPS_REG_W0 = 97; public static final int UC_MIPS_REG_W1 = 98; public static final int UC_MIPS_REG_W2 = 99; @@ -160,45 +156,46 @@ public interface MipsRegs { public static final int UC_MIPS_REG_MPL1 = 135; public static final int UC_MIPS_REG_MPL2 = 136; public static final int UC_MIPS_REG_ENDING = 137; - public static final int UC_MIPS_REG_ZERO = UC_MIPS_REG_0; - public static final int UC_MIPS_REG_AT = UC_MIPS_REG_1; - public static final int UC_MIPS_REG_V0 = UC_MIPS_REG_2; - public static final int UC_MIPS_REG_V1 = UC_MIPS_REG_3; - public static final int UC_MIPS_REG_A0 = UC_MIPS_REG_4; - public static final int UC_MIPS_REG_A1 = UC_MIPS_REG_5; - public static final int UC_MIPS_REG_A2 = UC_MIPS_REG_6; - public static final int UC_MIPS_REG_A3 = UC_MIPS_REG_7; - public static final int UC_MIPS_REG_T0 = UC_MIPS_REG_8; - public static final int UC_MIPS_REG_T1 = UC_MIPS_REG_9; - public static final int UC_MIPS_REG_T2 = UC_MIPS_REG_10; - public static final int UC_MIPS_REG_T3 = UC_MIPS_REG_11; - public static final int UC_MIPS_REG_T4 = UC_MIPS_REG_12; - public static final int UC_MIPS_REG_T5 = UC_MIPS_REG_13; - public static final int UC_MIPS_REG_T6 = UC_MIPS_REG_14; - public static final int UC_MIPS_REG_T7 = UC_MIPS_REG_15; - public static final int UC_MIPS_REG_S0 = UC_MIPS_REG_16; - public static final int UC_MIPS_REG_S1 = UC_MIPS_REG_17; - public static final int UC_MIPS_REG_S2 = UC_MIPS_REG_18; - public static final int UC_MIPS_REG_S3 = UC_MIPS_REG_19; - public static final int UC_MIPS_REG_S4 = UC_MIPS_REG_20; - public static final int UC_MIPS_REG_S5 = UC_MIPS_REG_21; - public static final int UC_MIPS_REG_S6 = UC_MIPS_REG_22; - public static final int UC_MIPS_REG_S7 = UC_MIPS_REG_23; - public static final int UC_MIPS_REG_T8 = UC_MIPS_REG_24; - public static final int UC_MIPS_REG_T9 = UC_MIPS_REG_25; - public static final int UC_MIPS_REG_K0 = UC_MIPS_REG_26; - public static final int UC_MIPS_REG_K1 = UC_MIPS_REG_27; - public static final int UC_MIPS_REG_GP = UC_MIPS_REG_28; - public static final int UC_MIPS_REG_SP = UC_MIPS_REG_29; - public static final int UC_MIPS_REG_FP = UC_MIPS_REG_30; - public static final int UC_MIPS_REG_S8 = UC_MIPS_REG_30; - public static final int UC_MIPS_REG_RA = UC_MIPS_REG_31; - public static final int UC_MIPS_REG_HI0 = UC_MIPS_REG_AC0; - public static final int UC_MIPS_REG_HI1 = UC_MIPS_REG_AC1; - public static final int UC_MIPS_REG_HI2 = UC_MIPS_REG_AC2; - public static final int UC_MIPS_REG_HI3 = UC_MIPS_REG_AC3; - public static final int UC_MIPS_REG_LO0 = UC_MIPS_REG_HI0; - public static final int UC_MIPS_REG_LO1 = UC_MIPS_REG_HI1; - public static final int UC_MIPS_REG_LO2 = UC_MIPS_REG_HI2; - public static final int UC_MIPS_REG_LO3 = UC_MIPS_REG_HI3; + public static final int UC_MIPS_REG_ZERO = 2; + public static final int UC_MIPS_REG_AT = 3; + public static final int UC_MIPS_REG_V0 = 4; + public static final int UC_MIPS_REG_V1 = 5; + public static final int UC_MIPS_REG_A0 = 6; + public static final int UC_MIPS_REG_A1 = 7; + public static final int UC_MIPS_REG_A2 = 8; + public static final int UC_MIPS_REG_A3 = 9; + public static final int UC_MIPS_REG_T0 = 10; + public static final int UC_MIPS_REG_T1 = 11; + public static final int UC_MIPS_REG_T2 = 12; + public static final int UC_MIPS_REG_T3 = 13; + public static final int UC_MIPS_REG_T4 = 14; + public static final int UC_MIPS_REG_T5 = 15; + public static final int UC_MIPS_REG_T6 = 16; + public static final int UC_MIPS_REG_T7 = 17; + public static final int UC_MIPS_REG_S0 = 18; + public static final int UC_MIPS_REG_S1 = 19; + public static final int UC_MIPS_REG_S2 = 20; + public static final int UC_MIPS_REG_S3 = 21; + public static final int UC_MIPS_REG_S4 = 22; + public static final int UC_MIPS_REG_S5 = 23; + public static final int UC_MIPS_REG_S6 = 24; + public static final int UC_MIPS_REG_S7 = 25; + public static final int UC_MIPS_REG_T8 = 26; + public static final int UC_MIPS_REG_T9 = 27; + public static final int UC_MIPS_REG_K0 = 28; + public static final int UC_MIPS_REG_K1 = 29; + public static final int UC_MIPS_REG_GP = 30; + public static final int UC_MIPS_REG_SP = 31; + public static final int UC_MIPS_REG_FP = 32; + public static final int UC_MIPS_REG_S8 = 32; + public static final int UC_MIPS_REG_RA = 33; + public static final int UC_MIPS_REG_HI0 = 45; + public static final int UC_MIPS_REG_HI1 = 46; + public static final int UC_MIPS_REG_HI2 = 47; + public static final int UC_MIPS_REG_HI3 = 48; + public static final int UC_MIPS_REG_LO0 = 45; + public static final int UC_MIPS_REG_LO1 = 46; + public static final int UC_MIPS_REG_LO2 = 47; + public static final int UC_MIPS_REG_LO3 = 48; + } diff --git a/bindings/java/unicorn/SparcRegs.java b/bindings/java/unicorn/SparcConst.java similarity index 83% rename from bindings/java/unicorn/SparcRegs.java rename to bindings/java/unicorn/SparcConst.java index 619e00f2..bd00c736 100644 --- a/bindings/java/unicorn/SparcRegs.java +++ b/bindings/java/unicorn/SparcConst.java @@ -1,27 +1,11 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ +// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT package unicorn; -public interface SparcRegs { +public interface SparcConst { + +// SPARC registers + public static final int UC_SPARC_REG_INVALID = 0; public static final int UC_SPARC_REG_F0 = 1; public static final int UC_SPARC_REG_F1 = 2; @@ -112,6 +96,7 @@ public interface SparcRegs { public static final int UC_SPARC_REG_XCC = 87; public static final int UC_SPARC_REG_PC = 88; public static final int UC_SPARC_REG_ENDING = 89; - public static final int UC_SPARC_REG_O6 = UC_SPARC_REG_SP; - public static final int UC_SPARC_REG_I6 = UC_SPARC_REG_FP; + public static final int UC_SPARC_REG_O6 = 85; + public static final int UC_SPARC_REG_I6 = 53; + } diff --git a/bindings/java/unicorn/Unicorn.java b/bindings/java/unicorn/Unicorn.java index 06e1e9d6..985a322d 100644 --- a/bindings/java/unicorn/Unicorn.java +++ b/bindings/java/unicorn/Unicorn.java @@ -23,8 +23,7 @@ package unicorn; import java.util.*; -public class Unicorn implements UnicornArchs, UnicornModes, UnicornHooks, - ArmRegs, Arm64Regs, M68kRegs, SparcRegs, MipsRegs, X86Regs, X86Instructions { +public class Unicorn implements UnicornConst, ArmConst, Arm64Const, M68kConst, SparcConst, MipsConst, X86Const { // Scales to calculate timeout on microsecond unit // 1 second = 1000,000 microseconds diff --git a/bindings/java/unicorn/UnicornArchs.java b/bindings/java/unicorn/UnicornArchs.java deleted file mode 100644 index 98c57b0e..00000000 --- a/bindings/java/unicorn/UnicornArchs.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ - -package unicorn; - -public interface UnicornArchs { - public static final int UC_ARCH_ARM = 1; // ARM architecture (including Thumb, Thumb-2) - public static final int UC_ARCH_ARM64 = 2; // ARM-64, also called AArch64 - public static final int UC_ARCH_MIPS = 3; // Mips architecture - public static final int UC_ARCH_X86 = 4; // X86 architecture (including x86 & x86-64) - public static final int UC_ARCH_PPC = 5; // PowerPC architecture - public static final int UC_ARCH_SPARC = 6; // Sparc architecture - public static final int UC_ARCH_M68K = 7; // M68K architecture - public static final int UC_ARCH_MAX = 8; - public static final int UC_ARCH_ALL = 0xFFFF; // All architectures - for uc_support() -} diff --git a/bindings/java/unicorn/UnicornConst.java b/bindings/java/unicorn/UnicornConst.java new file mode 100644 index 00000000..3ede5201 --- /dev/null +++ b/bindings/java/unicorn/UnicornConst.java @@ -0,0 +1,71 @@ +// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT + +package unicorn; + +public interface UnicornConst { + + public static final int UC_API_MAJOR = 0; + public static final int UC_API_MINOR = 9; + public static final int UC_SECOND_SCALE = 1000000; + public static final int UC_MILISECOND_SCALE = 1000; + public static final int UC_ARCH_ARM = 1; + public static final int UC_ARCH_ARM64 = 2; + public static final int UC_ARCH_MIPS = 3; + public static final int UC_ARCH_X86 = 4; + public static final int UC_ARCH_PPC = 5; + public static final int UC_ARCH_SPARC = 6; + public static final int UC_ARCH_M68K = 7; + public static final int UC_ARCH_MAX = 8; + + public static final int UC_MODE_LITTLE_ENDIAN = 0; + + public static final int UC_MODE_ARM = 0; + public static final int UC_MODE_16 = 2; + public static final int UC_MODE_32 = 4; + public static final int UC_MODE_64 = 8; + public static final int UC_MODE_THUMB = 16; + public static final int UC_MODE_MCLASS = 32; + public static final int UC_MODE_V8 = 64; + public static final int UC_MODE_MICRO = 16; + public static final int UC_MODE_MIPS3 = 32; + public static final int UC_MODE_MIPS32R6 = 64; + public static final int UC_MODE_V9 = 16; + public static final int UC_MODE_QPX = 16; + public static final int UC_MODE_BIG_ENDIAN = 0x80000000; + public static final int UC_MODE_MIPS32 = 4; + public static final int UC_MODE_MIPS64 = 8; + + public static final int UC_ERR_OK = 0; + public static final int UC_ERR_OOM = 1; + public static final int UC_ERR_ARCH = 2; + public static final int UC_ERR_HANDLE = 3; + public static final int UC_ERR_UCH = 4; + public static final int UC_ERR_MODE = 5; + public static final int UC_ERR_VERSION = 6; + public static final int UC_ERR_MEM_READ = 7; + public static final int UC_ERR_MEM_WRITE = 8; + public static final int UC_ERR_CODE_INVALID = 9; + public static final int UC_ERR_HOOK = 10; + public static final int UC_ERR_INSN_INVALID = 11; + public static final int UC_ERR_MAP = 12; + public static final int UC_ERR_MEM_WRITE_NW = 13; + public static final int UC_ERR_MEM_READ_NR = 14; + public static final int UC_MEM_READ = 16; + public static final int UC_MEM_WRITE = 17; + public static final int UC_MEM_READ_WRITE = 18; + public static final int UC_MEM_WRITE_NW = 19; + public static final int UC_MEM_READ_NR = 20; + public static final int UC_MEM_NX = 21; + public static final int UC_HOOK_INTR = 32; + public static final int UC_HOOK_INSN = 33; + public static final int UC_HOOK_CODE = 34; + public static final int UC_HOOK_BLOCK = 35; + public static final int UC_HOOK_MEM_INVALID = 36; + public static final int UC_HOOK_MEM_READ = 37; + public static final int UC_HOOK_MEM_WRITE = 38; + public static final int UC_HOOK_MEM_READ_WRITE = 39; + public static final int UC_PROT_READ = 1; + public static final int UC_PROT_WRITE = 2; + public static final int UC_PROT_EXEC = 4; + +} diff --git a/bindings/java/unicorn/UnicornHooks.java b/bindings/java/unicorn/UnicornHooks.java deleted file mode 100644 index 703753ba..00000000 --- a/bindings/java/unicorn/UnicornHooks.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ - -package unicorn; - -public interface UnicornHooks { - - public static final int UC_MEM_READ = 16; // Memory is read from - public static final int UC_MEM_WRITE = 17; // Memory is written to - public static final int UC_MEM_READ_WRITE = 18; // Memory is accessed (either READ or WRITE) - - public static final int UC_HOOK_INTR = 32; // Hook all interrupt events - public static final int UC_HOOK_INSN = 33; // Hook a particular instruction - public static final int UC_HOOK_CODE = 34; // Hook a range of code - public static final int UC_HOOK_BLOCK = 35; // Hook basic blocks - public static final int UC_HOOK_MEM_INVALID = 36; // Hook for all invalid memory access events - public static final int UC_HOOK_MEM_READ = 37; // Hook all memory read events. - public static final int UC_HOOK_MEM_WRITE = 38; // Hook all memory write events. - public static final int UC_HOOK_MEM_READ_WRITE = 39; // Hook all memory accesses (either READ or WRITE). -} diff --git a/bindings/java/unicorn/UnicornModes.java b/bindings/java/unicorn/UnicornModes.java deleted file mode 100644 index b81a2065..00000000 --- a/bindings/java/unicorn/UnicornModes.java +++ /dev/null @@ -1,20 +0,0 @@ -package unicorn; - -public interface UnicornModes { - public static final int UC_MODE_LITTLE_ENDIAN = 0; // little-endian mode (default mode) - public static final int UC_MODE_ARM = 0; // 32-bit ARM - public static final int UC_MODE_16 = 1 << 1; // 16-bit mode (X86) - public static final int UC_MODE_32 = 1 << 2; // 32-bit mode (X86) - public static final int UC_MODE_64 = 1 << 3; // 64-bit mode (X86; PPC) - public static final int UC_MODE_THUMB = 1 << 4; // ARM's Thumb mode; including Thumb-2 - public static final int UC_MODE_MCLASS = 1 << 5; // ARM's Cortex-M series - public static final int UC_MODE_V8 = 1 << 6; // ARMv8 A32 encodings for ARM - public static final int UC_MODE_MICRO = 1 << 4; // MicroMips mode (MIPS) - public static final int UC_MODE_MIPS3 = 1 << 5; // Mips III ISA - public static final int UC_MODE_MIPS32R6 = 1 << 6; // Mips32r6 ISA - public static final int UC_MODE_V9 = 1 << 4; // SparcV9 mode (Sparc) - public static final int UC_MODE_QPX = 1 << 4; // Quad Processing eXtensions mode (PPC) - public static final int UC_MODE_BIG_ENDIAN = 1 << 31; // big-endian mode - public static final int UC_MODE_MIPS32 = UC_MODE_32; // Mips32 ISA (Mips) - public static final int UC_MODE_MIPS64 = UC_MODE_64; // Mips64 ISA (Mips) -} diff --git a/bindings/java/unicorn/X86Instructions.java b/bindings/java/unicorn/X86Const.java similarity index 85% rename from bindings/java/unicorn/X86Instructions.java rename to bindings/java/unicorn/X86Const.java index 17108d7e..1a558a63 100644 --- a/bindings/java/unicorn/X86Instructions.java +++ b/bindings/java/unicorn/X86Const.java @@ -1,27 +1,257 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ +// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT package unicorn; -public interface X86Instructions { +public interface X86Const { + +// X86 registers + + public static final int UC_X86_REG_INVALID = 0; + public static final int UC_X86_REG_AH = 1; + public static final int UC_X86_REG_AL = 2; + public static final int UC_X86_REG_AX = 3; + public static final int UC_X86_REG_BH = 4; + public static final int UC_X86_REG_BL = 5; + public static final int UC_X86_REG_BP = 6; + public static final int UC_X86_REG_BPL = 7; + public static final int UC_X86_REG_BX = 8; + public static final int UC_X86_REG_CH = 9; + public static final int UC_X86_REG_CL = 10; + public static final int UC_X86_REG_CS = 11; + public static final int UC_X86_REG_CX = 12; + public static final int UC_X86_REG_DH = 13; + public static final int UC_X86_REG_DI = 14; + public static final int UC_X86_REG_DIL = 15; + public static final int UC_X86_REG_DL = 16; + public static final int UC_X86_REG_DS = 17; + public static final int UC_X86_REG_DX = 18; + public static final int UC_X86_REG_EAX = 19; + public static final int UC_X86_REG_EBP = 20; + public static final int UC_X86_REG_EBX = 21; + public static final int UC_X86_REG_ECX = 22; + public static final int UC_X86_REG_EDI = 23; + public static final int UC_X86_REG_EDX = 24; + public static final int UC_X86_REG_EFLAGS = 25; + public static final int UC_X86_REG_EIP = 26; + public static final int UC_X86_REG_EIZ = 27; + public static final int UC_X86_REG_ES = 28; + public static final int UC_X86_REG_ESI = 29; + public static final int UC_X86_REG_ESP = 30; + public static final int UC_X86_REG_FPSW = 31; + public static final int UC_X86_REG_FS = 32; + public static final int UC_X86_REG_GS = 33; + public static final int UC_X86_REG_IP = 34; + public static final int UC_X86_REG_RAX = 35; + public static final int UC_X86_REG_RBP = 36; + public static final int UC_X86_REG_RBX = 37; + public static final int UC_X86_REG_RCX = 38; + public static final int UC_X86_REG_RDI = 39; + public static final int UC_X86_REG_RDX = 40; + public static final int UC_X86_REG_RIP = 41; + public static final int UC_X86_REG_RIZ = 42; + public static final int UC_X86_REG_RSI = 43; + public static final int UC_X86_REG_RSP = 44; + public static final int UC_X86_REG_SI = 45; + public static final int UC_X86_REG_SIL = 46; + public static final int UC_X86_REG_SP = 47; + public static final int UC_X86_REG_SPL = 48; + public static final int UC_X86_REG_SS = 49; + public static final int UC_X86_REG_CR0 = 50; + public static final int UC_X86_REG_CR1 = 51; + public static final int UC_X86_REG_CR2 = 52; + public static final int UC_X86_REG_CR3 = 53; + public static final int UC_X86_REG_CR4 = 54; + public static final int UC_X86_REG_CR5 = 55; + public static final int UC_X86_REG_CR6 = 56; + public static final int UC_X86_REG_CR7 = 57; + public static final int UC_X86_REG_CR8 = 58; + public static final int UC_X86_REG_CR9 = 59; + public static final int UC_X86_REG_CR10 = 60; + public static final int UC_X86_REG_CR11 = 61; + public static final int UC_X86_REG_CR12 = 62; + public static final int UC_X86_REG_CR13 = 63; + public static final int UC_X86_REG_CR14 = 64; + public static final int UC_X86_REG_CR15 = 65; + public static final int UC_X86_REG_DR0 = 66; + public static final int UC_X86_REG_DR1 = 67; + public static final int UC_X86_REG_DR2 = 68; + public static final int UC_X86_REG_DR3 = 69; + public static final int UC_X86_REG_DR4 = 70; + public static final int UC_X86_REG_DR5 = 71; + public static final int UC_X86_REG_DR6 = 72; + public static final int UC_X86_REG_DR7 = 73; + public static final int UC_X86_REG_DR8 = 74; + public static final int UC_X86_REG_DR9 = 75; + public static final int UC_X86_REG_DR10 = 76; + public static final int UC_X86_REG_DR11 = 77; + public static final int UC_X86_REG_DR12 = 78; + public static final int UC_X86_REG_DR13 = 79; + public static final int UC_X86_REG_DR14 = 80; + public static final int UC_X86_REG_DR15 = 81; + public static final int UC_X86_REG_FP0 = 82; + public static final int UC_X86_REG_FP1 = 83; + public static final int UC_X86_REG_FP2 = 84; + public static final int UC_X86_REG_FP3 = 85; + public static final int UC_X86_REG_FP4 = 86; + public static final int UC_X86_REG_FP5 = 87; + public static final int UC_X86_REG_FP6 = 88; + public static final int UC_X86_REG_FP7 = 89; + public static final int UC_X86_REG_K0 = 90; + public static final int UC_X86_REG_K1 = 91; + public static final int UC_X86_REG_K2 = 92; + public static final int UC_X86_REG_K3 = 93; + public static final int UC_X86_REG_K4 = 94; + public static final int UC_X86_REG_K5 = 95; + public static final int UC_X86_REG_K6 = 96; + public static final int UC_X86_REG_K7 = 97; + public static final int UC_X86_REG_MM0 = 98; + public static final int UC_X86_REG_MM1 = 99; + public static final int UC_X86_REG_MM2 = 100; + public static final int UC_X86_REG_MM3 = 101; + public static final int UC_X86_REG_MM4 = 102; + public static final int UC_X86_REG_MM5 = 103; + public static final int UC_X86_REG_MM6 = 104; + public static final int UC_X86_REG_MM7 = 105; + public static final int UC_X86_REG_R8 = 106; + public static final int UC_X86_REG_R9 = 107; + public static final int UC_X86_REG_R10 = 108; + public static final int UC_X86_REG_R11 = 109; + public static final int UC_X86_REG_R12 = 110; + public static final int UC_X86_REG_R13 = 111; + public static final int UC_X86_REG_R14 = 112; + public static final int UC_X86_REG_R15 = 113; + public static final int UC_X86_REG_ST0 = 114; + public static final int UC_X86_REG_ST1 = 115; + public static final int UC_X86_REG_ST2 = 116; + public static final int UC_X86_REG_ST3 = 117; + public static final int UC_X86_REG_ST4 = 118; + public static final int UC_X86_REG_ST5 = 119; + public static final int UC_X86_REG_ST6 = 120; + public static final int UC_X86_REG_ST7 = 121; + public static final int UC_X86_REG_XMM0 = 122; + public static final int UC_X86_REG_XMM1 = 123; + public static final int UC_X86_REG_XMM2 = 124; + public static final int UC_X86_REG_XMM3 = 125; + public static final int UC_X86_REG_XMM4 = 126; + public static final int UC_X86_REG_XMM5 = 127; + public static final int UC_X86_REG_XMM6 = 128; + public static final int UC_X86_REG_XMM7 = 129; + public static final int UC_X86_REG_XMM8 = 130; + public static final int UC_X86_REG_XMM9 = 131; + public static final int UC_X86_REG_XMM10 = 132; + public static final int UC_X86_REG_XMM11 = 133; + public static final int UC_X86_REG_XMM12 = 134; + public static final int UC_X86_REG_XMM13 = 135; + public static final int UC_X86_REG_XMM14 = 136; + public static final int UC_X86_REG_XMM15 = 137; + public static final int UC_X86_REG_XMM16 = 138; + public static final int UC_X86_REG_XMM17 = 139; + public static final int UC_X86_REG_XMM18 = 140; + public static final int UC_X86_REG_XMM19 = 141; + public static final int UC_X86_REG_XMM20 = 142; + public static final int UC_X86_REG_XMM21 = 143; + public static final int UC_X86_REG_XMM22 = 144; + public static final int UC_X86_REG_XMM23 = 145; + public static final int UC_X86_REG_XMM24 = 146; + public static final int UC_X86_REG_XMM25 = 147; + public static final int UC_X86_REG_XMM26 = 148; + public static final int UC_X86_REG_XMM27 = 149; + public static final int UC_X86_REG_XMM28 = 150; + public static final int UC_X86_REG_XMM29 = 151; + public static final int UC_X86_REG_XMM30 = 152; + public static final int UC_X86_REG_XMM31 = 153; + public static final int UC_X86_REG_YMM0 = 154; + public static final int UC_X86_REG_YMM1 = 155; + public static final int UC_X86_REG_YMM2 = 156; + public static final int UC_X86_REG_YMM3 = 157; + public static final int UC_X86_REG_YMM4 = 158; + public static final int UC_X86_REG_YMM5 = 159; + public static final int UC_X86_REG_YMM6 = 160; + public static final int UC_X86_REG_YMM7 = 161; + public static final int UC_X86_REG_YMM8 = 162; + public static final int UC_X86_REG_YMM9 = 163; + public static final int UC_X86_REG_YMM10 = 164; + public static final int UC_X86_REG_YMM11 = 165; + public static final int UC_X86_REG_YMM12 = 166; + public static final int UC_X86_REG_YMM13 = 167; + public static final int UC_X86_REG_YMM14 = 168; + public static final int UC_X86_REG_YMM15 = 169; + public static final int UC_X86_REG_YMM16 = 170; + public static final int UC_X86_REG_YMM17 = 171; + public static final int UC_X86_REG_YMM18 = 172; + public static final int UC_X86_REG_YMM19 = 173; + public static final int UC_X86_REG_YMM20 = 174; + public static final int UC_X86_REG_YMM21 = 175; + public static final int UC_X86_REG_YMM22 = 176; + public static final int UC_X86_REG_YMM23 = 177; + public static final int UC_X86_REG_YMM24 = 178; + public static final int UC_X86_REG_YMM25 = 179; + public static final int UC_X86_REG_YMM26 = 180; + public static final int UC_X86_REG_YMM27 = 181; + public static final int UC_X86_REG_YMM28 = 182; + public static final int UC_X86_REG_YMM29 = 183; + public static final int UC_X86_REG_YMM30 = 184; + public static final int UC_X86_REG_YMM31 = 185; + public static final int UC_X86_REG_ZMM0 = 186; + public static final int UC_X86_REG_ZMM1 = 187; + public static final int UC_X86_REG_ZMM2 = 188; + public static final int UC_X86_REG_ZMM3 = 189; + public static final int UC_X86_REG_ZMM4 = 190; + public static final int UC_X86_REG_ZMM5 = 191; + public static final int UC_X86_REG_ZMM6 = 192; + public static final int UC_X86_REG_ZMM7 = 193; + public static final int UC_X86_REG_ZMM8 = 194; + public static final int UC_X86_REG_ZMM9 = 195; + public static final int UC_X86_REG_ZMM10 = 196; + public static final int UC_X86_REG_ZMM11 = 197; + public static final int UC_X86_REG_ZMM12 = 198; + public static final int UC_X86_REG_ZMM13 = 199; + public static final int UC_X86_REG_ZMM14 = 200; + public static final int UC_X86_REG_ZMM15 = 201; + public static final int UC_X86_REG_ZMM16 = 202; + public static final int UC_X86_REG_ZMM17 = 203; + public static final int UC_X86_REG_ZMM18 = 204; + public static final int UC_X86_REG_ZMM19 = 205; + public static final int UC_X86_REG_ZMM20 = 206; + public static final int UC_X86_REG_ZMM21 = 207; + public static final int UC_X86_REG_ZMM22 = 208; + public static final int UC_X86_REG_ZMM23 = 209; + public static final int UC_X86_REG_ZMM24 = 210; + public static final int UC_X86_REG_ZMM25 = 211; + public static final int UC_X86_REG_ZMM26 = 212; + public static final int UC_X86_REG_ZMM27 = 213; + public static final int UC_X86_REG_ZMM28 = 214; + public static final int UC_X86_REG_ZMM29 = 215; + public static final int UC_X86_REG_ZMM30 = 216; + public static final int UC_X86_REG_ZMM31 = 217; + public static final int UC_X86_REG_R8B = 218; + public static final int UC_X86_REG_R9B = 219; + public static final int UC_X86_REG_R10B = 220; + public static final int UC_X86_REG_R11B = 221; + public static final int UC_X86_REG_R12B = 222; + public static final int UC_X86_REG_R13B = 223; + public static final int UC_X86_REG_R14B = 224; + public static final int UC_X86_REG_R15B = 225; + public static final int UC_X86_REG_R8D = 226; + public static final int UC_X86_REG_R9D = 227; + public static final int UC_X86_REG_R10D = 228; + public static final int UC_X86_REG_R11D = 229; + public static final int UC_X86_REG_R12D = 230; + public static final int UC_X86_REG_R13D = 231; + public static final int UC_X86_REG_R14D = 232; + public static final int UC_X86_REG_R15D = 233; + public static final int UC_X86_REG_R8W = 234; + public static final int UC_X86_REG_R9W = 235; + public static final int UC_X86_REG_R10W = 236; + public static final int UC_X86_REG_R11W = 237; + public static final int UC_X86_REG_R12W = 238; + public static final int UC_X86_REG_R13W = 239; + public static final int UC_X86_REG_R14W = 240; + public static final int UC_X86_REG_R15W = 241; + public static final int UC_X86_REG_ENDING = 242; + +// X86 instructions + public static final int UC_X86_INS_INVALID = 0; public static final int UC_X86_INS_AAA = 1; public static final int UC_X86_INS_AAD = 2; @@ -1361,4 +1591,5 @@ public interface X86Instructions { public static final int UC_X86_INS_FDISI8087_NOP = 1336; public static final int UC_X86_INS_FENI8087_NOP = 1337; public static final int UC_X86_INS_ENDING = 1338; + } diff --git a/bindings/java/unicorn/X86Regs.java b/bindings/java/unicorn/X86Regs.java deleted file mode 100644 index 489b7562..00000000 --- a/bindings/java/unicorn/X86Regs.java +++ /dev/null @@ -1,268 +0,0 @@ -/* - -Java bindings for the Unicorn Emulator Engine - -Copyright(c) 2015 Chris Eagle - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -version 2 as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ - -package unicorn; - -public interface X86Regs { - public static final int UC_X86_REG_INVALID = 0; - public static final int UC_X86_REG_AH = 1; - public static final int UC_X86_REG_AL = 2; - public static final int UC_X86_REG_AX = 3; - public static final int UC_X86_REG_BH = 4; - public static final int UC_X86_REG_BL = 5; - public static final int UC_X86_REG_BP = 6; - public static final int UC_X86_REG_BPL = 7; - public static final int UC_X86_REG_BX = 8; - public static final int UC_X86_REG_CH = 9; - public static final int UC_X86_REG_CL = 10; - public static final int UC_X86_REG_CS = 11; - public static final int UC_X86_REG_CX = 12; - public static final int UC_X86_REG_DH = 13; - public static final int UC_X86_REG_DI = 14; - public static final int UC_X86_REG_DIL = 15; - public static final int UC_X86_REG_DL = 16; - public static final int UC_X86_REG_DS = 17; - public static final int UC_X86_REG_DX = 18; - public static final int UC_X86_REG_EAX = 19; - public static final int UC_X86_REG_EBP = 20; - public static final int UC_X86_REG_EBX = 21; - public static final int UC_X86_REG_ECX = 22; - public static final int UC_X86_REG_EDI = 23; - public static final int UC_X86_REG_EDX = 24; - public static final int UC_X86_REG_EFLAGS = 25; - public static final int UC_X86_REG_EIP = 26; - public static final int UC_X86_REG_EIZ = 27; - public static final int UC_X86_REG_ES = 28; - public static final int UC_X86_REG_ESI = 29; - public static final int UC_X86_REG_ESP = 30; - public static final int UC_X86_REG_FPSW = 31; - public static final int UC_X86_REG_FS = 32; - public static final int UC_X86_REG_GS = 33; - public static final int UC_X86_REG_IP = 34; - public static final int UC_X86_REG_RAX = 35; - public static final int UC_X86_REG_RBP = 36; - public static final int UC_X86_REG_RBX = 37; - public static final int UC_X86_REG_RCX = 38; - public static final int UC_X86_REG_RDI = 39; - public static final int UC_X86_REG_RDX = 40; - public static final int UC_X86_REG_RIP = 41; - public static final int UC_X86_REG_RIZ = 42; - public static final int UC_X86_REG_RSI = 43; - public static final int UC_X86_REG_RSP = 44; - public static final int UC_X86_REG_SI = 45; - public static final int UC_X86_REG_SIL = 46; - public static final int UC_X86_REG_SP = 47; - public static final int UC_X86_REG_SPL = 48; - public static final int UC_X86_REG_SS = 49; - public static final int UC_X86_REG_CR0 = 50; - public static final int UC_X86_REG_CR1 = 51; - public static final int UC_X86_REG_CR2 = 52; - public static final int UC_X86_REG_CR3 = 53; - public static final int UC_X86_REG_CR4 = 54; - public static final int UC_X86_REG_CR5 = 55; - public static final int UC_X86_REG_CR6 = 56; - public static final int UC_X86_REG_CR7 = 57; - public static final int UC_X86_REG_CR8 = 58; - public static final int UC_X86_REG_CR9 = 59; - public static final int UC_X86_REG_CR10 = 60; - public static final int UC_X86_REG_CR11 = 61; - public static final int UC_X86_REG_CR12 = 62; - public static final int UC_X86_REG_CR13 = 63; - public static final int UC_X86_REG_CR14 = 64; - public static final int UC_X86_REG_CR15 = 65; - public static final int UC_X86_REG_DR0 = 66; - public static final int UC_X86_REG_DR1 = 67; - public static final int UC_X86_REG_DR2 = 68; - public static final int UC_X86_REG_DR3 = 69; - public static final int UC_X86_REG_DR4 = 70; - public static final int UC_X86_REG_DR5 = 71; - public static final int UC_X86_REG_DR6 = 72; - public static final int UC_X86_REG_DR7 = 73; - public static final int UC_X86_REG_DR8 = 74; - public static final int UC_X86_REG_DR9 = 75; - public static final int UC_X86_REG_DR10 = 76; - public static final int UC_X86_REG_DR11 = 77; - public static final int UC_X86_REG_DR12 = 78; - public static final int UC_X86_REG_DR13 = 79; - public static final int UC_X86_REG_DR14 = 80; - public static final int UC_X86_REG_DR15 = 81; - public static final int UC_X86_REG_FP0 = 82; - public static final int UC_X86_REG_FP1 = 83; - public static final int UC_X86_REG_FP2 = 84; - public static final int UC_X86_REG_FP3 = 85; - public static final int UC_X86_REG_FP4 = 86; - public static final int UC_X86_REG_FP5 = 87; - public static final int UC_X86_REG_FP6 = 88; - public static final int UC_X86_REG_FP7 = 89; - public static final int UC_X86_REG_K0 = 90; - public static final int UC_X86_REG_K1 = 91; - public static final int UC_X86_REG_K2 = 92; - public static final int UC_X86_REG_K3 = 93; - public static final int UC_X86_REG_K4 = 94; - public static final int UC_X86_REG_K5 = 95; - public static final int UC_X86_REG_K6 = 96; - public static final int UC_X86_REG_K7 = 97; - public static final int UC_X86_REG_MM0 = 98; - public static final int UC_X86_REG_MM1 = 99; - public static final int UC_X86_REG_MM2 = 100; - public static final int UC_X86_REG_MM3 = 101; - public static final int UC_X86_REG_MM4 = 102; - public static final int UC_X86_REG_MM5 = 103; - public static final int UC_X86_REG_MM6 = 104; - public static final int UC_X86_REG_MM7 = 105; - public static final int UC_X86_REG_R8 = 106; - public static final int UC_X86_REG_R9 = 107; - public static final int UC_X86_REG_R10 = 108; - public static final int UC_X86_REG_R11 = 109; - public static final int UC_X86_REG_R12 = 110; - public static final int UC_X86_REG_R13 = 111; - public static final int UC_X86_REG_R14 = 112; - public static final int UC_X86_REG_R15 = 113; - public static final int UC_X86_REG_ST0 = 114; - public static final int UC_X86_REG_ST1 = 115; - public static final int UC_X86_REG_ST2 = 116; - public static final int UC_X86_REG_ST3 = 117; - public static final int UC_X86_REG_ST4 = 118; - public static final int UC_X86_REG_ST5 = 119; - public static final int UC_X86_REG_ST6 = 120; - public static final int UC_X86_REG_ST7 = 121; - public static final int UC_X86_REG_XMM0 = 122; - public static final int UC_X86_REG_XMM1 = 123; - public static final int UC_X86_REG_XMM2 = 124; - public static final int UC_X86_REG_XMM3 = 125; - public static final int UC_X86_REG_XMM4 = 126; - public static final int UC_X86_REG_XMM5 = 127; - public static final int UC_X86_REG_XMM6 = 128; - public static final int UC_X86_REG_XMM7 = 129; - public static final int UC_X86_REG_XMM8 = 130; - public static final int UC_X86_REG_XMM9 = 131; - public static final int UC_X86_REG_XMM10 = 132; - public static final int UC_X86_REG_XMM11 = 133; - public static final int UC_X86_REG_XMM12 = 134; - public static final int UC_X86_REG_XMM13 = 135; - public static final int UC_X86_REG_XMM14 = 136; - public static final int UC_X86_REG_XMM15 = 137; - public static final int UC_X86_REG_XMM16 = 138; - public static final int UC_X86_REG_XMM17 = 139; - public static final int UC_X86_REG_XMM18 = 140; - public static final int UC_X86_REG_XMM19 = 141; - public static final int UC_X86_REG_XMM20 = 142; - public static final int UC_X86_REG_XMM21 = 143; - public static final int UC_X86_REG_XMM22 = 144; - public static final int UC_X86_REG_XMM23 = 145; - public static final int UC_X86_REG_XMM24 = 146; - public static final int UC_X86_REG_XMM25 = 147; - public static final int UC_X86_REG_XMM26 = 148; - public static final int UC_X86_REG_XMM27 = 149; - public static final int UC_X86_REG_XMM28 = 150; - public static final int UC_X86_REG_XMM29 = 151; - public static final int UC_X86_REG_XMM30 = 152; - public static final int UC_X86_REG_XMM31 = 153; - public static final int UC_X86_REG_YMM0 = 154; - public static final int UC_X86_REG_YMM1 = 155; - public static final int UC_X86_REG_YMM2 = 156; - public static final int UC_X86_REG_YMM3 = 157; - public static final int UC_X86_REG_YMM4 = 158; - public static final int UC_X86_REG_YMM5 = 159; - public static final int UC_X86_REG_YMM6 = 160; - public static final int UC_X86_REG_YMM7 = 161; - public static final int UC_X86_REG_YMM8 = 162; - public static final int UC_X86_REG_YMM9 = 163; - public static final int UC_X86_REG_YMM10 = 164; - public static final int UC_X86_REG_YMM11 = 165; - public static final int UC_X86_REG_YMM12 = 166; - public static final int UC_X86_REG_YMM13 = 167; - public static final int UC_X86_REG_YMM14 = 168; - public static final int UC_X86_REG_YMM15 = 169; - public static final int UC_X86_REG_YMM16 = 170; - public static final int UC_X86_REG_YMM17 = 171; - public static final int UC_X86_REG_YMM18 = 172; - public static final int UC_X86_REG_YMM19 = 173; - public static final int UC_X86_REG_YMM20 = 174; - public static final int UC_X86_REG_YMM21 = 175; - public static final int UC_X86_REG_YMM22 = 176; - public static final int UC_X86_REG_YMM23 = 177; - public static final int UC_X86_REG_YMM24 = 178; - public static final int UC_X86_REG_YMM25 = 179; - public static final int UC_X86_REG_YMM26 = 180; - public static final int UC_X86_REG_YMM27 = 181; - public static final int UC_X86_REG_YMM28 = 182; - public static final int UC_X86_REG_YMM29 = 183; - public static final int UC_X86_REG_YMM30 = 184; - public static final int UC_X86_REG_YMM31 = 185; - public static final int UC_X86_REG_ZMM0 = 186; - public static final int UC_X86_REG_ZMM1 = 187; - public static final int UC_X86_REG_ZMM2 = 188; - public static final int UC_X86_REG_ZMM3 = 189; - public static final int UC_X86_REG_ZMM4 = 190; - public static final int UC_X86_REG_ZMM5 = 191; - public static final int UC_X86_REG_ZMM6 = 192; - public static final int UC_X86_REG_ZMM7 = 193; - public static final int UC_X86_REG_ZMM8 = 194; - public static final int UC_X86_REG_ZMM9 = 195; - public static final int UC_X86_REG_ZMM10 = 196; - public static final int UC_X86_REG_ZMM11 = 197; - public static final int UC_X86_REG_ZMM12 = 198; - public static final int UC_X86_REG_ZMM13 = 199; - public static final int UC_X86_REG_ZMM14 = 200; - public static final int UC_X86_REG_ZMM15 = 201; - public static final int UC_X86_REG_ZMM16 = 202; - public static final int UC_X86_REG_ZMM17 = 203; - public static final int UC_X86_REG_ZMM18 = 204; - public static final int UC_X86_REG_ZMM19 = 205; - public static final int UC_X86_REG_ZMM20 = 206; - public static final int UC_X86_REG_ZMM21 = 207; - public static final int UC_X86_REG_ZMM22 = 208; - public static final int UC_X86_REG_ZMM23 = 209; - public static final int UC_X86_REG_ZMM24 = 210; - public static final int UC_X86_REG_ZMM25 = 211; - public static final int UC_X86_REG_ZMM26 = 212; - public static final int UC_X86_REG_ZMM27 = 213; - public static final int UC_X86_REG_ZMM28 = 214; - public static final int UC_X86_REG_ZMM29 = 215; - public static final int UC_X86_REG_ZMM30 = 216; - public static final int UC_X86_REG_ZMM31 = 217; - public static final int UC_X86_REG_R8B = 218; - public static final int UC_X86_REG_R9B = 219; - public static final int UC_X86_REG_R10B = 220; - public static final int UC_X86_REG_R11B = 221; - public static final int UC_X86_REG_R12B = 222; - public static final int UC_X86_REG_R13B = 223; - public static final int UC_X86_REG_R14B = 224; - public static final int UC_X86_REG_R15B = 225; - public static final int UC_X86_REG_R8D = 226; - public static final int UC_X86_REG_R9D = 227; - public static final int UC_X86_REG_R10D = 228; - public static final int UC_X86_REG_R11D = 229; - public static final int UC_X86_REG_R12D = 230; - public static final int UC_X86_REG_R13D = 231; - public static final int UC_X86_REG_R14D = 232; - public static final int UC_X86_REG_R15D = 233; - public static final int UC_X86_REG_R8W = 234; - public static final int UC_X86_REG_R9W = 235; - public static final int UC_X86_REG_R10W = 236; - public static final int UC_X86_REG_R11W = 237; - public static final int UC_X86_REG_R12W = 238; - public static final int UC_X86_REG_R13W = 239; - public static final int UC_X86_REG_R14W = 240; - public static final int UC_X86_REG_R15W = 241; - public static final int UC_X86_REG_ENDING = 242; -} diff --git a/include/unicorn/unicorn.h b/include/unicorn/unicorn.h index 7cd1ad08..f58ffcd3 100644 --- a/include/unicorn/unicorn.h +++ b/include/unicorn/unicorn.h @@ -95,7 +95,7 @@ typedef enum uc_mode { UC_MODE_MIPS32R6 = 1 << 6, // Mips32r6 ISA UC_MODE_V9 = 1 << 4, // SparcV9 mode (Sparc) UC_MODE_QPX = 1 << 4, // Quad Processing eXtensions mode (PPC) - UC_MODE_BIG_ENDIAN = 1 << 31, // big-endian mode + UC_MODE_BIG_ENDIAN = 1 << 30, // big-endian mode UC_MODE_MIPS32 = UC_MODE_32, // Mips32 ISA (Mips) UC_MODE_MIPS64 = UC_MODE_64, // Mips64 ISA (Mips) } uc_mode;