|
1 | 1 | #!/usr/bin/env python3 |
2 | | -# |
| 2 | +# |
3 | 3 | # Cross Platform and Multi Architecture Advanced Binary Emulation Framework |
4 | 4 | # |
5 | 5 |
|
6 | | -from binascii import unhexlify |
7 | 6 | import sys |
8 | 7 |
|
9 | 8 | sys.path.append("..") |
10 | 9 | from qiling import Qiling |
11 | | -from qiling.const import QL_VERBOSE |
12 | | - |
13 | | -X86_LIN = unhexlify('31c050682f2f7368682f62696e89e3505389e1b00bcd80') |
14 | | -X8664_LIN = unhexlify('31c048bbd19d9691d08c97ff48f7db53545f995257545eb03b0f05') |
15 | | -MIPS32EL_LIN = unhexlify('ffff0628ffffd004ffff05280110e4270ff08424ab0f02240c0101012f62696e2f7368') |
16 | | -X86_WIN = unhexlify('fce8820000006089e531c0648b50308b520c8b52148b72280fb74a2631ffac3c617c022c20c1cf0d01c7e2f252578b52108b4a3c8b4c1178e34801d1518b592001d38b4918e33a498b348b01d631ffacc1cf0d01c738e075f6037df83b7d2475e4588b582401d3668b0c4b8b581c01d38b048b01d0894424245b5b61595a51ffe05f5f5a8b12eb8d5d6a01eb2668318b6f87ffd5bbf0b5a25668a695bd9dffd53c067c0a80fbe07505bb4713726f6a0053ffd5e8d5ffffff63616c6300') |
17 | | -X8664_WIN = unhexlify('fc4881e4f0ffffffe8d0000000415141505251564831d265488b52603e488b52183e488b52203e488b72503e480fb74a4a4d31c94831c0ac3c617c022c2041c1c90d4101c1e2ed5241513e488b52203e8b423c4801d03e8b80880000004885c0746f4801d0503e8b48183e448b40204901d0e35c48ffc93e418b34884801d64d31c94831c0ac41c1c90d4101c138e075f13e4c034c24084539d175d6583e448b40244901d0663e418b0c483e448b401c4901d03e418b04884801d0415841585e595a41584159415a4883ec204152ffe05841595a3e488b12e949ffffff5d49c7c1000000003e488d95fe0000003e4c8d850f0100004831c941ba45835607ffd54831c941baf0b5a256ffd548656c6c6f2c2066726f6d204d534621004d657373616765426f7800') |
18 | | -ARM_LIN = unhexlify('01108fe211ff2fe102200121921a0f02193701df061c08a11022023701df3f270221301c01df0139fbd505a0921a05b469460b2701dfc046020012340a0002022f73797374656d2f62696e2f736800') |
19 | | -ARM64_LIN = unhexlify('420002ca210080d2400080d2c81880d2010000d4e60300aa01020010020280d2681980d2010000d4410080d2420002cae00306aa080380d2010000d4210400f165ffff54e0000010420002ca210001caa81b80d2010000d4020004d27f0000012f62696e2f736800') |
20 | | -X8664_FBSD = unhexlify('6a61586a025f6a015e990f054897baff02aaaa80f2ff524889e699046680c2100f05046a0f05041e4831f6990f0548976a035852488d7424f080c2100f0548b8523243427730637257488d3e48af74084831c048ffc00f055f4889d04889fe48ffceb05a0f0575f799043b48bb2f62696e2f2f73685253545f5257545e0f05') |
21 | | -X8664_MACOS = unhexlify('4831f65648bf2f2f62696e2f7368574889e74831d24831c0b00248c1c828b03b0f05') |
| 10 | +from qiling.const import QL_ARCH, QL_OS, QL_VERBOSE |
| 11 | + |
| 12 | +X86_LIN = bytes.fromhex('31c050682f2f7368682f62696e89e3505389e1b00bcd80') |
| 13 | +X8664_LIN = bytes.fromhex('31c048bbd19d9691d08c97ff48f7db53545f995257545eb03b0f05') |
| 14 | + |
| 15 | +MIPS32EL_LIN = bytes.fromhex(''' |
| 16 | + ffff0628ffffd004ffff05280110e4270ff08424ab0f02240c0101012f62696e |
| 17 | + 2f7368 |
| 18 | +''') |
| 19 | + |
| 20 | +X86_WIN = bytes.fromhex(''' |
| 21 | + fce8820000006089e531c0648b50308b520c8b52148b72280fb74a2631ffac3c |
| 22 | + 617c022c20c1cf0d01c7e2f252578b52108b4a3c8b4c1178e34801d1518b5920 |
| 23 | + 01d38b4918e33a498b348b01d631ffacc1cf0d01c738e075f6037df83b7d2475 |
| 24 | + e4588b582401d3668b0c4b8b581c01d38b048b01d0894424245b5b61595a51ff |
| 25 | + e05f5f5a8b12eb8d5d6a01eb2668318b6f87ffd5bbf0b5a25668a695bd9dffd5 |
| 26 | + 3c067c0a80fbe07505bb4713726f6a0053ffd5e8d5ffffff63616c6300 |
| 27 | +''') |
| 28 | + |
| 29 | +X8664_WIN = bytes.fromhex(''' |
| 30 | + fc4881e4f0ffffffe8d0000000415141505251564831d265488b52603e488b52 |
| 31 | + 183e488b52203e488b72503e480fb74a4a4d31c94831c0ac3c617c022c2041c1 |
| 32 | + c90d4101c1e2ed5241513e488b52203e8b423c4801d03e8b80880000004885c0 |
| 33 | + 746f4801d0503e8b48183e448b40204901d0e35c48ffc93e418b34884801d64d |
| 34 | + 31c94831c0ac41c1c90d4101c138e075f13e4c034c24084539d175d6583e448b |
| 35 | + 40244901d0663e418b0c483e448b401c4901d03e418b04884801d0415841585e |
| 36 | + 595a41584159415a4883ec204152ffe05841595a3e488b12e949ffffff5d49c7 |
| 37 | + c1000000003e488d95fe0000003e4c8d850f0100004831c941ba45835607ffd5 |
| 38 | + 4831c941baf0b5a256ffd548656c6c6f2c2066726f6d204d534621004d657373 |
| 39 | + 616765426f7800 |
| 40 | +''') |
| 41 | + |
| 42 | +ARM_LIN = bytes.fromhex(''' |
| 43 | + 01108fe211ff2fe102200121921a0f02193701df061c08a11022023701df3f27 |
| 44 | + 0221301c01df0139fbd505a0921a05b469460b2701dfc046020012340a000202 |
| 45 | + 2f73797374656d2f62696e2f736800 |
| 46 | +''') |
| 47 | + |
| 48 | +ARM64_LIN = bytes.fromhex(''' |
| 49 | + 420002ca210080d2400080d2c81880d2010000d4e60300aa01020010020280d2 |
| 50 | + 681980d2010000d4410080d2420002cae00306aa080380d2010000d4210400f1 |
| 51 | + 65ffff54e0000010420002ca210001caa81b80d2010000d4020004d27f000001 |
| 52 | + 2f62696e2f736800 |
| 53 | +''') |
| 54 | + |
| 55 | +X8664_FBSD = bytes.fromhex(''' |
| 56 | + 6a61586a025f6a015e990f054897baff02aaaa80f2ff524889e699046680c210 |
| 57 | + 0f05046a0f05041e4831f6990f0548976a035852488d7424f080c2100f0548b8 |
| 58 | + 523243427730637257488d3e48af74084831c048ffc00f055f4889d04889fe48 |
| 59 | + ffceb05a0f0575f799043b48bb2f62696e2f2f73685253545f5257545e0f05 |
| 60 | +''') |
| 61 | + |
| 62 | +X8664_MACOS = bytes.fromhex(''' |
| 63 | + 4831f65648bf2f2f62696e2f7368574889e74831d24831c0b00248c1c828b03b |
| 64 | + 0f05 |
| 65 | +''') |
| 66 | + |
22 | 67 |
|
23 | 68 | if __name__ == "__main__": |
24 | 69 | print("\nLinux ARM 64bit Shellcode") |
25 | | - ql = Qiling(code=ARM64_LIN, archtype="arm64", ostype="linux", verbose=QL_VERBOSE.DEBUG) |
| 70 | + ql = Qiling(code=ARM64_LIN, archtype=QL_ARCH.ARM64, ostype=QL_OS.LINUX, verbose=QL_VERBOSE.DEBUG) |
26 | 71 | ql.run() |
27 | 72 |
|
28 | 73 | print("\nLinux ARM 32bit Shellcode") |
29 | | - ql = Qiling(code=ARM_LIN, archtype="arm", ostype="linux", verbose=QL_VERBOSE.DEBUG) |
| 74 | + ql = Qiling(code=ARM_LIN, archtype=QL_ARCH.ARM, ostype=QL_OS.LINUX, verbose=QL_VERBOSE.DEBUG) |
30 | 75 | ql.run() |
31 | 76 |
|
32 | | - print("\nLinux X86 32bit Shellcode") |
33 | | - ql = Qiling(code=X86_LIN, archtype="x86", ostype="linux", verbose=QL_VERBOSE.DEBUG) |
| 77 | + print("\nLinux x86 32bit Shellcode") |
| 78 | + ql = Qiling(code=X86_LIN, archtype=QL_ARCH.X86, ostype=QL_OS.LINUX, verbose=QL_VERBOSE.DEBUG) |
34 | 79 | ql.run() |
35 | 80 |
|
36 | 81 | print("\nLinux MIPS 32bit EL Shellcode") |
37 | | - ql = Qiling(code=MIPS32EL_LIN, archtype="mips", ostype="linux", verbose=QL_VERBOSE.DEBUG) |
| 82 | + ql = Qiling(code=MIPS32EL_LIN, archtype=QL_ARCH.MIPS, ostype=QL_OS.LINUX, verbose=QL_VERBOSE.DEBUG) |
38 | 83 | ql.run() |
39 | 84 |
|
40 | | - print("\nLinux X86 64bit Shellcode") |
41 | | - ql = Qiling(code=X8664_LIN, archtype="x8664", ostype="linux", verbose=QL_VERBOSE.DEBUG) |
| 85 | + print("\nLinux x86-64 Shellcode") |
| 86 | + ql = Qiling(code=X8664_LIN, archtype=QL_ARCH.X8664, ostype=QL_OS.LINUX, verbose=QL_VERBOSE.DEBUG) |
42 | 87 | ql.run() |
43 | 88 |
|
44 | | - print("\nWindows X86 32bit Shellcode") |
45 | | - ql = Qiling(code=X86_WIN, archtype="x86", ostype="windows", rootfs="rootfs/x86_windows") |
| 89 | + print("\nWindows x86 Shellcode") |
| 90 | + ql = Qiling(code=X86_WIN, archtype=QL_ARCH.X86, ostype=QL_OS.WINDOWS, rootfs=r'rootfs/x86_windows') |
46 | 91 | ql.run() |
47 | 92 |
|
48 | | - print("\nWindows X8664 64bit Shellcode") |
49 | | - ql = Qiling(code=X8664_WIN, archtype="x8664", ostype="windows", rootfs="rootfs/x8664_windows") |
| 93 | + print("\nWindows x86-64 Shellcode") |
| 94 | + ql = Qiling(code=X8664_WIN, archtype=QL_ARCH.X8664, ostype=QL_OS.WINDOWS, rootfs=r'rootfs/x8664_windows') |
50 | 95 | ql.run() |
51 | 96 |
|
52 | | - print("\nFreeBSD X86 64bit Shellcode") |
53 | | - ql = Qiling(code=X8664_FBSD, archtype="x8664", ostype="freebsd", verbose=QL_VERBOSE.DEBUG) |
54 | | - ql.run() |
| 97 | + # FIXME: freebsd sockets are currently broken. |
| 98 | + # |
| 99 | + # print("\nFreeBSD x86-64 Shellcode") |
| 100 | + # ql = Qiling(code=X8664_FBSD, archtype=QL_ARCH.X8664, ostype=QL_OS.FREEBSD, verbose=QL_VERBOSE.DEBUG) |
| 101 | + # ql.run() |
55 | 102 |
|
56 | | - print("\nmacos X86 64bit Shellcode") |
57 | | - ql = Qiling(code=X8664_MACOS, archtype="x8664", ostype="macos", verbose=QL_VERBOSE.DEBUG) |
58 | | - ql.run() |
| 103 | + # FIXME: macos shellcode loader is currently broken |
| 104 | + # |
| 105 | + # print("\nMacOS x86-64 Shellcode") |
| 106 | + # ql = Qiling(code=X8664_MACOS, archtype=QL_ARCH.X8664, ostype=QL_OS.MACOS, verbose=QL_VERBOSE.DEBUG) |
| 107 | + # ql.run() |
0 commit comments