mirror of
https://github.com/icicle-emu/icicle-python
synced 2026-06-21 13:53:41 +00:00
Initial commit
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
.idea/
|
||||
target/
|
||||
debug/
|
||||
**/*.rs.bk
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "icicle-emu"]
|
||||
path = icicle-emu
|
||||
url = https://github.com/mrexodia/icicle-emu
|
||||
Generated
+808
@@ -0,0 +1,808 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.20.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
|
||||
dependencies = [
|
||||
"cpp_demangle",
|
||||
"fallible-iterator",
|
||||
"gimli",
|
||||
"memmap2",
|
||||
"object",
|
||||
"rustc-demangle",
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "adler"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.8.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.71"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84"
|
||||
|
||||
[[package]]
|
||||
name = "bstr"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
version = "1.13.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "cpp_demangle"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2c76f98bdfc7f66172e6c7065f981ebb576ffc903fe4c0561d9f0c2509226dc6"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50babaf4da30fd349e1b913760300266143535f15a0b7be7ce1ce9efafa8ff5e"
|
||||
dependencies = [
|
||||
"cranelift-codegen",
|
||||
"cranelift-frontend",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-bforest"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1277fbfa94bc82c8ec4af2ded3e639d49ca5f7f3c7eeab2c66accd135ece4e70"
|
||||
dependencies = [
|
||||
"cranelift-entity",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-codegen"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c6e8c31ad3b2270e9aeec38723888fe1b0ace3bea2b06b3f749ccf46661d3220"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"cranelift-bforest",
|
||||
"cranelift-codegen-meta",
|
||||
"cranelift-codegen-shared",
|
||||
"cranelift-entity",
|
||||
"cranelift-isle",
|
||||
"gimli",
|
||||
"hashbrown 0.13.2",
|
||||
"log",
|
||||
"regalloc2",
|
||||
"smallvec",
|
||||
"target-lexicon",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-codegen-meta"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8ac5ac30d62b2d66f12651f6b606dbdfd9c2cfd0908de6b387560a277c5c9da"
|
||||
dependencies = [
|
||||
"cranelift-codegen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-codegen-shared"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dd82b8b376247834b59ed9bdc0ddeb50f517452827d4a11bccf5937b213748b8"
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-entity"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0"
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-frontend"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "64a25d9d0a0ae3079c463c34115ec59507b4707175454f0eee0891e83e30e82d"
|
||||
dependencies = [
|
||||
"cranelift-codegen",
|
||||
"log",
|
||||
"smallvec",
|
||||
"target-lexicon",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-isle"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "80de6a7d0486e4acbd5f9f87ec49912bf4c8fb6aea00087b989685460d4469ba"
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-jit"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ca96b05988aa057eda09a817a6e31915fabd7f476b513123aff08053cd193dd"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cranelift-codegen",
|
||||
"cranelift-entity",
|
||||
"cranelift-module",
|
||||
"cranelift-native",
|
||||
"libc",
|
||||
"log",
|
||||
"region",
|
||||
"target-lexicon",
|
||||
"wasmtime-jit-icache-coherence",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-module"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5112c0be9cc5da064e0620570d67852f11ce44f2e572a58ecf7f11df73978b8"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cranelift-codegen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cranelift-native"
|
||||
version = "0.95.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bb6b03e0e03801c4b3fd8ce0758a94750c07a44e7944cc0ffbf0d3f2e7c79b00"
|
||||
dependencies = [
|
||||
"cranelift-codegen",
|
||||
"libc",
|
||||
"target-lexicon",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crc32fast"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crunchy"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
|
||||
|
||||
[[package]]
|
||||
name = "fallible-iterator"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
|
||||
|
||||
[[package]]
|
||||
name = "fixedbitset"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
version = "1.0.26"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"
|
||||
dependencies = [
|
||||
"crc32fast",
|
||||
"miniz_oxide",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fxhash"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.27.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
|
||||
dependencies = [
|
||||
"fallible-iterator",
|
||||
"indexmap",
|
||||
"stable_deref_trait",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "half"
|
||||
version = "2.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
|
||||
dependencies = [
|
||||
"crunchy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icicle-cpu"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"bitflags 2.3.1",
|
||||
"bytemuck",
|
||||
"half",
|
||||
"hashbrown 0.13.2",
|
||||
"icicle-mem",
|
||||
"object",
|
||||
"pcode",
|
||||
"sleigh-runtime",
|
||||
"target-lexicon",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icicle-jit"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"cranelift",
|
||||
"cranelift-codegen",
|
||||
"cranelift-jit",
|
||||
"cranelift-module",
|
||||
"cranelift-native",
|
||||
"icicle-cpu",
|
||||
"memoffset",
|
||||
"pcode",
|
||||
"target-lexicon",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icicle-linux"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bitflags 2.3.1",
|
||||
"bstr",
|
||||
"bytemuck",
|
||||
"icicle-cpu",
|
||||
"object",
|
||||
"pcode",
|
||||
"sleigh-runtime",
|
||||
"target-lexicon",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icicle-mem"
|
||||
version = "0.3.0"
|
||||
dependencies = [
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icicle-unicorn"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"icicle-cpu",
|
||||
"icicle-vm",
|
||||
"pcode",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "icicle-vm"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"icicle-cpu",
|
||||
"icicle-jit",
|
||||
"icicle-linux",
|
||||
"object",
|
||||
"pcode",
|
||||
"serde",
|
||||
"serde-xml-rs",
|
||||
"sleigh-compile",
|
||||
"sleigh-runtime",
|
||||
"target-lexicon",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"hashbrown 0.12.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.144"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mach"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
|
||||
[[package]]
|
||||
name = "memmap2"
|
||||
version = "0.5.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
|
||||
dependencies = [
|
||||
"adler",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.31.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
|
||||
dependencies = [
|
||||
"crc32fast",
|
||||
"flate2",
|
||||
"hashbrown 0.13.2",
|
||||
"indexmap",
|
||||
"memchr",
|
||||
"ruzstd",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.17.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
|
||||
|
||||
[[package]]
|
||||
name = "pcode"
|
||||
version = "0.2.0"
|
||||
|
||||
[[package]]
|
||||
name = "petgraph"
|
||||
version = "0.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4"
|
||||
dependencies = [
|
||||
"fixedbitset",
|
||||
"indexmap",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.59"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6aeca18b86b413c660b781aa319e4e2648a3e6f9eadc9b47e9038e6fe9f3451b"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regalloc2"
|
||||
version = "0.6.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "80535183cae11b149d618fbd3c37e38d7cda589d82d7769e196ca9a9042d7621"
|
||||
dependencies = [
|
||||
"fxhash",
|
||||
"log",
|
||||
"slice-group-by",
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "region"
|
||||
version = "2.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"libc",
|
||||
"mach",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
||||
|
||||
[[package]]
|
||||
name = "ruzstd"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a15e661f0f9dac21f3494fe5d23a6338c0ac116a2d22c2b63010acd89467ffe"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"thiserror",
|
||||
"twox-hash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.163"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde-xml-rs"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb3aa78ecda1ebc9ec9847d5d3aba7d618823446a049ba2491940506da6e2782"
|
||||
dependencies = [
|
||||
"log",
|
||||
"serde",
|
||||
"thiserror",
|
||||
"xml-rs",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.163"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sleigh-compile"
|
||||
version = "0.3.0"
|
||||
dependencies = [
|
||||
"pcode",
|
||||
"petgraph",
|
||||
"sleigh-parse",
|
||||
"sleigh-runtime",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sleigh-parse"
|
||||
version = "0.3.0"
|
||||
|
||||
[[package]]
|
||||
name = "sleigh-runtime"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"pcode",
|
||||
"sleigh-parse",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slice-group-by"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7"
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
||||
|
||||
[[package]]
|
||||
name = "stable_deref_trait"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
|
||||
|
||||
[[package]]
|
||||
name = "static_assertions"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "target-lexicon"
|
||||
version = "0.12.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5"
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"pin-project-lite",
|
||||
"tracing-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-core"
|
||||
version = "0.1.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
|
||||
|
||||
[[package]]
|
||||
name = "twox-hash"
|
||||
version = "1.6.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"static_assertions",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
||||
|
||||
[[package]]
|
||||
name = "wasmtime-jit-icache-coherence"
|
||||
version = "8.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aecae978b13f7f67efb23bd827373ace4578f2137ec110bbf6a4a7cde4121bbd"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"windows-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
"winapi-x86_64-pc-windows-gnu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "windows-sys"
|
||||
version = "0.45.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
|
||||
dependencies = [
|
||||
"windows-targets",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm",
|
||||
"windows_aarch64_msvc",
|
||||
"windows_i686_gnu",
|
||||
"windows_i686_msvc",
|
||||
"windows_x86_64_gnu",
|
||||
"windows_x86_64_gnullvm",
|
||||
"windows_x86_64_msvc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.42.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
|
||||
|
||||
[[package]]
|
||||
name = "xml-rs"
|
||||
version = "0.8.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2d8f380ae16a37b30e6a2cf67040608071384b1450c189e61bea3ff57cde922d"
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
[package]
|
||||
name = "icicle-unicorn"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
icicle-cpu = { path = "icicle-emu/icicle-cpu" }
|
||||
icicle-vm = { path = "icicle-emu/icicle-vm" }
|
||||
pcode = { path = "icicle-emu/sleigh/pcode" }
|
||||
Submodule
+1
Submodule icicle-emu added at 9c97c94c8c
+356
@@ -0,0 +1,356 @@
|
||||
use std::thread::sleep;
|
||||
use icicle_vm::cpu::{Environment, ExceptionCode};
|
||||
use icicle_vm::cpu::mem::{AllocLayout, Mapping, perm};
|
||||
use icicle_vm::linux::LinuxCpu;
|
||||
use icicle_vm::VmExit;
|
||||
use crate::rawenv::RawEnvironment;
|
||||
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
||||
mod rawenv;
|
||||
|
||||
fn main() {
|
||||
// Setup the CPU state for the target triple
|
||||
let mut cpu_config = icicle_vm::cpu::Config::from_target_triple("x86_64-none");
|
||||
cpu_config.enable_jit = true;
|
||||
cpu_config.enable_recompilation = false;
|
||||
|
||||
let mut vm = icicle_vm::build(&cpu_config).unwrap();
|
||||
|
||||
let shellcode: [u8; 2780] =
|
||||
[
|
||||
0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x48, 0x89,
|
||||
0x7C, 0x24, 0x18, 0x55, 0x48, 0x8B, 0xEC, 0x48, 0x83, 0xEC, 0x10, 0xB8,
|
||||
0x63, 0x72, 0x65, 0x61, 0xC7, 0x45, 0xF0, 0x37, 0x13, 0x00, 0x00, 0x41,
|
||||
0xBA, 0x62, 0x69, 0x6E, 0x67, 0xC7, 0x45, 0xF4, 0x69, 0x00, 0x00, 0x00,
|
||||
0xC7, 0x45, 0xF8, 0x20, 0x04, 0x00, 0x00, 0xBB, 0x80, 0x96, 0x98, 0x00,
|
||||
0xC7, 0x45, 0xFC, 0x66, 0x06, 0x00, 0x00, 0xBE, 0x40, 0x6E, 0xDE, 0x8D,
|
||||
0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x33, 0xC9, 0x45,
|
||||
0x33, 0xC0, 0x45, 0x8D, 0x59, 0x04, 0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00,
|
||||
0x41, 0x83, 0xE0, 0x03, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x8B, 0xD0, 0xC1,
|
||||
0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x03, 0xD0, 0x41,
|
||||
0x03, 0xC9, 0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x33, 0xD1, 0x45,
|
||||
0x8B, 0xC1, 0x44, 0x03, 0xD2, 0x41, 0x83, 0xE0, 0x03, 0x41, 0x8B, 0xCA,
|
||||
0x41, 0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41,
|
||||
0x8B, 0xC9, 0x48, 0xC1, 0xE9, 0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03,
|
||||
0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B,
|
||||
0xC8, 0x8B, 0xD0, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42,
|
||||
0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x03, 0xD0, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1,
|
||||
0x41, 0x8B, 0xCA, 0x41, 0x83, 0xE0, 0x03, 0xC1, 0xE1, 0x04, 0x41, 0x8B,
|
||||
0xD2, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9,
|
||||
0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xC8, 0x8B, 0xD0, 0xC1, 0xE1,
|
||||
0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41,
|
||||
0x03, 0xC9, 0x03, 0xD0, 0x33, 0xD1, 0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37,
|
||||
0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1, 0x41, 0x8B, 0xCA, 0x41, 0x8B,
|
||||
0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9,
|
||||
0x48, 0xC1, 0xE9, 0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C,
|
||||
0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xD0, 0x8B,
|
||||
0xC8, 0xC1, 0xEA, 0x05, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE0, 0x03, 0x33,
|
||||
0xD1, 0x03, 0xD0, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x41,
|
||||
0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x33, 0xD1, 0x45, 0x8B, 0xC1, 0x44,
|
||||
0x03, 0xD2, 0x41, 0x83, 0xE0, 0x03, 0x41, 0x8B, 0xCA, 0x41, 0x8B, 0xD2,
|
||||
0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48,
|
||||
0xC1, 0xE9, 0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D,
|
||||
0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xC8, 0x8B, 0xD0,
|
||||
0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85,
|
||||
0xF0, 0x41, 0x03, 0xC9, 0x03, 0xD0, 0x33, 0xD1, 0x41, 0x81, 0xC1, 0xB9,
|
||||
0x79, 0x37, 0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1, 0x41, 0x8B, 0xCA,
|
||||
0x41, 0x83, 0xE0, 0x03, 0xC1, 0xE1, 0x04, 0x41, 0x8B, 0xD2, 0xC1, 0xEA,
|
||||
0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9, 0x0B, 0x41, 0x03,
|
||||
0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33,
|
||||
0xD1, 0x03, 0xC2, 0x8B, 0xC8, 0x8B, 0xD0, 0xC1, 0xE1, 0x04, 0xC1, 0xEA,
|
||||
0x05, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x03,
|
||||
0xD0, 0x33, 0xD1, 0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x44, 0x03,
|
||||
0xD2, 0x45, 0x8B, 0xC1, 0x41, 0x8B, 0xCA, 0x41, 0x8B, 0xD2, 0xC1, 0xE1,
|
||||
0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9,
|
||||
0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xD0, 0x8B, 0xC8, 0xC1, 0xEA,
|
||||
0x05, 0xC1, 0xE1, 0x04, 0x33, 0xD1, 0x03, 0xD0, 0x41, 0x83, 0xE0, 0x03,
|
||||
0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x41, 0x81, 0xC1, 0xB9,
|
||||
0x79, 0x37, 0x9E, 0x33, 0xD1, 0x45, 0x8B, 0xC1, 0x44, 0x03, 0xD2, 0x41,
|
||||
0x83, 0xE0, 0x03, 0x41, 0x8B, 0xCA, 0x41, 0x8B, 0xD2, 0xC1, 0xE1, 0x04,
|
||||
0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9, 0x0B,
|
||||
0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03,
|
||||
0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xC8, 0x8B, 0xD0, 0xC1, 0xE1, 0x04,
|
||||
0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03,
|
||||
0xC9, 0x03, 0xD0, 0x33, 0xD1, 0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E,
|
||||
0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1, 0x41, 0x83, 0xE0, 0x03, 0x41, 0x8B,
|
||||
0xCA, 0xC1, 0xE1, 0x04, 0x41, 0x8B, 0xD2, 0xC1, 0xEA, 0x05, 0x33, 0xD1,
|
||||
0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9, 0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1,
|
||||
0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2,
|
||||
0x8B, 0xC8, 0x8B, 0xD0, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1,
|
||||
0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x03, 0xD0, 0x33, 0xD1,
|
||||
0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B,
|
||||
0xC1, 0x41, 0x8B, 0xCA, 0x41, 0x83, 0xE0, 0x03, 0xC1, 0xE1, 0x04, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1,
|
||||
0xE9, 0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0,
|
||||
0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xD0, 0x8B, 0xC8, 0xC1,
|
||||
0xEA, 0x05, 0xC1, 0xE1, 0x04, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0,
|
||||
0x03, 0xD0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x41, 0x81, 0xC1, 0xB9, 0x79,
|
||||
0x37, 0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1, 0x41, 0x83, 0xE0, 0x03,
|
||||
0x41, 0x8B, 0xCA, 0xC1, 0xE1, 0x04, 0x41, 0x8B, 0xD2, 0xC1, 0xEA, 0x05,
|
||||
0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9, 0x0B, 0x41, 0x03, 0xD2,
|
||||
0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1,
|
||||
0x03, 0xC2, 0x8B, 0xC8, 0x8B, 0xD0, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05,
|
||||
0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x03, 0xD0,
|
||||
0x33, 0xD1, 0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x44, 0x03, 0xD2,
|
||||
0x45, 0x8B, 0xC1, 0x41, 0x8B, 0xCA, 0x41, 0x83, 0xE0, 0x03, 0xC1, 0xE1,
|
||||
0x04, 0x41, 0x8B, 0xD2, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9,
|
||||
0x48, 0xC1, 0xE9, 0x0B, 0x41, 0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C,
|
||||
0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xC8, 0x8B,
|
||||
0xD0, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B, 0x4C,
|
||||
0x85, 0xF0, 0x41, 0x03, 0xC9, 0x03, 0xD0, 0x33, 0xD1, 0x41, 0x81, 0xC1,
|
||||
0xB9, 0x79, 0x37, 0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1, 0x41, 0x8B,
|
||||
0xCA, 0x41, 0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE0, 0x03, 0xC1,
|
||||
0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9, 0x0B, 0x41,
|
||||
0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9,
|
||||
0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xD0, 0x8B, 0xC8, 0xC1, 0xEA, 0x05, 0xC1,
|
||||
0xE1, 0x04, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9,
|
||||
0x03, 0xD0, 0x33, 0xD1, 0x44, 0x03, 0xD2, 0x41, 0x81, 0xC1, 0xB9, 0x79,
|
||||
0x37, 0x9E, 0x45, 0x8B, 0xC1, 0x41, 0x8B, 0xCA, 0xC1, 0xE1, 0x04, 0x41,
|
||||
0x83, 0xE0, 0x03, 0x41, 0x8B, 0xD2, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41,
|
||||
0x8B, 0xC9, 0x41, 0x03, 0xD2, 0x48, 0xC1, 0xE9, 0x0B, 0x83, 0xE1, 0x03,
|
||||
0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B,
|
||||
0xC8, 0x8B, 0xD0, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42,
|
||||
0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x03, 0xD0, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1,
|
||||
0x41, 0x83, 0xE0, 0x03, 0x41, 0x8B, 0xCA, 0xC1, 0xE1, 0x04, 0x41, 0x8B,
|
||||
0xD2, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x41, 0x03, 0xD2,
|
||||
0x48, 0xC1, 0xE9, 0x0B, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xC9, 0x33, 0xD1, 0x03, 0xC2, 0x8B, 0xC8, 0x8B, 0xD0, 0xC1, 0xEA,
|
||||
0x05, 0xC1, 0xE1, 0x04, 0x33, 0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41,
|
||||
0x03, 0xC9, 0x03, 0xD0, 0x33, 0xD1, 0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37,
|
||||
0x9E, 0x44, 0x03, 0xD2, 0x45, 0x8B, 0xC1, 0x41, 0x8B, 0xCA, 0x41, 0x83,
|
||||
0xE0, 0x03, 0xC1, 0xE1, 0x04, 0x41, 0x8B, 0xD2, 0xC1, 0xEA, 0x05, 0x33,
|
||||
0xD1, 0x41, 0x8B, 0xC9, 0x41, 0x03, 0xD2, 0x48, 0xC1, 0xE9, 0x0B, 0x83,
|
||||
0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9, 0x33, 0xD1, 0x03,
|
||||
0xC2, 0x8B, 0xD0, 0x8B, 0xC8, 0xC1, 0xEA, 0x05, 0xC1, 0xE1, 0x04, 0x33,
|
||||
0xD1, 0x42, 0x8B, 0x4C, 0x85, 0xF0, 0x41, 0x03, 0xC9, 0x03, 0xD0, 0x33,
|
||||
0xD1, 0x41, 0x81, 0xC1, 0xB9, 0x79, 0x37, 0x9E, 0x44, 0x03, 0xD2, 0x45,
|
||||
0x8B, 0xC1, 0x41, 0x8B, 0xD2, 0xC1, 0xEA, 0x05, 0x41, 0x8B, 0xCA, 0xC1,
|
||||
0xE1, 0x04, 0x33, 0xD1, 0x41, 0x8B, 0xC9, 0x48, 0xC1, 0xE9, 0x0B, 0x41,
|
||||
0x03, 0xD2, 0x83, 0xE1, 0x03, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xC9,
|
||||
0x33, 0xD1, 0x03, 0xC2, 0x49, 0x83, 0xEB, 0x01, 0x0F, 0x85, 0x06, 0xFB,
|
||||
0xFF, 0xFF, 0x44, 0x8B, 0xDE, 0x4C, 0x8B, 0xCE, 0xBF, 0x04, 0x00, 0x00,
|
||||
0x00, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x49, 0xC1, 0xE9, 0x0B, 0x41, 0x8B, 0xCA, 0xC1, 0xE1, 0x04, 0x41, 0x83,
|
||||
0xE1, 0x03, 0x41, 0x8B, 0xD2, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xD2, 0x41, 0x03, 0xCB, 0x41, 0x81, 0xC3,
|
||||
0x47, 0x86, 0xC8, 0x61, 0x33, 0xD1, 0x45, 0x8B, 0xCB, 0x2B, 0xC2, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x41, 0x83, 0xE1, 0x03, 0x8B, 0xC8, 0xC1, 0xE1, 0x04,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE1, 0x03,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x8B,
|
||||
0xC8, 0x44, 0x8B, 0xC0, 0xC1, 0xE1, 0x04, 0x41, 0xC1, 0xE8, 0x05, 0x44,
|
||||
0x33, 0xC1, 0x41, 0x8B, 0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B,
|
||||
0x54, 0x8D, 0xF0, 0x41, 0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0,
|
||||
0x41, 0x8B, 0xD2, 0x41, 0x8B, 0xCA, 0xC1, 0xEA, 0x05, 0xC1, 0xE1, 0x04,
|
||||
0x33, 0xD1, 0x49, 0xC1, 0xE9, 0x0B, 0x41, 0x03, 0xD2, 0x41, 0x83, 0xE1,
|
||||
0x03, 0x42, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x81, 0xC3,
|
||||
0x47, 0x86, 0xC8, 0x61, 0x33, 0xD1, 0x45, 0x8B, 0xCB, 0x2B, 0xC2, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x41, 0x83, 0xE1, 0x03, 0x8B, 0xC8, 0xC1, 0xE1, 0x04,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE1, 0x03,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x8B,
|
||||
0xC8, 0x44, 0x8B, 0xC0, 0xC1, 0xE1, 0x04, 0x41, 0xC1, 0xE8, 0x05, 0x44,
|
||||
0x33, 0xC1, 0x41, 0x8B, 0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B,
|
||||
0x54, 0x8D, 0xF0, 0x41, 0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0,
|
||||
0x41, 0x8B, 0xD2, 0x41, 0x8B, 0xCA, 0xC1, 0xEA, 0x05, 0xC1, 0xE1, 0x04,
|
||||
0x33, 0xD1, 0x41, 0x03, 0xD2, 0x49, 0xC1, 0xE9, 0x0B, 0x41, 0x83, 0xE1,
|
||||
0x03, 0x42, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x81, 0xC3,
|
||||
0x47, 0x86, 0xC8, 0x61, 0x33, 0xD1, 0x45, 0x8B, 0xCB, 0x2B, 0xC2, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x41, 0x83, 0xE1, 0x03, 0x8B, 0xC8, 0xC1, 0xE1, 0x04,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE1, 0x03,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x8B,
|
||||
0xC8, 0x49, 0xC1, 0xE9, 0x0B, 0xC1, 0xE1, 0x04, 0x44, 0x8B, 0xC0, 0x41,
|
||||
0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B, 0xCB, 0x83, 0xE1, 0x03,
|
||||
0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41, 0x03, 0xD3, 0x44, 0x33,
|
||||
0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xD2, 0x41, 0x8B, 0xCA, 0xC1, 0xEA,
|
||||
0x05, 0xC1, 0xE1, 0x04, 0x33, 0xD1, 0x41, 0x03, 0xD2, 0x41, 0x83, 0xE1,
|
||||
0x03, 0x42, 0x8B, 0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x81, 0xC3,
|
||||
0x47, 0x86, 0xC8, 0x61, 0x33, 0xD1, 0x45, 0x8B, 0xCB, 0x2B, 0xC2, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x41, 0x83, 0xE1, 0x03, 0x8B, 0xC8, 0xC1, 0xE1, 0x04,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE1, 0x03,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x8B,
|
||||
0xC8, 0x49, 0xC1, 0xE9, 0x0B, 0xC1, 0xE1, 0x04, 0x44, 0x8B, 0xC0, 0x41,
|
||||
0xC1, 0xE8, 0x05, 0x41, 0x83, 0xE1, 0x03, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xD2, 0x41,
|
||||
0x8B, 0xCA, 0xC1, 0xEA, 0x05, 0xC1, 0xE1, 0x04, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x2B,
|
||||
0xC2, 0x41, 0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x8B, 0xC8, 0xC1, 0xE1,
|
||||
0x04, 0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x45,
|
||||
0x8B, 0xCB, 0x44, 0x03, 0xC0, 0x49, 0xC1, 0xE9, 0x0B, 0x41, 0x83, 0xE1,
|
||||
0x03, 0x41, 0x8B, 0xCB, 0x83, 0xE1, 0x03, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE1, 0x03,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xCA, 0x41,
|
||||
0x8B, 0xD2, 0xC1, 0xE1, 0x04, 0xC1, 0xEA, 0x05, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x41,
|
||||
0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x2B, 0xC2, 0x45, 0x8B, 0xCB, 0x49,
|
||||
0xC1, 0xE9, 0x0B, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x41, 0x83, 0xE1, 0x03,
|
||||
0x44, 0x8B, 0xC0, 0x41, 0xC1, 0xE8, 0x05, 0x44, 0x33, 0xC1, 0x41, 0x8B,
|
||||
0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B, 0x54, 0x8D, 0xF0, 0x41,
|
||||
0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0, 0x41, 0x8B, 0xD2, 0x41,
|
||||
0x8B, 0xCA, 0xC1, 0xEA, 0x05, 0xC1, 0xE1, 0x04, 0x33, 0xD1, 0x42, 0x8B,
|
||||
0x4C, 0x8D, 0xF0, 0x41, 0x03, 0xCB, 0x41, 0x03, 0xD2, 0x33, 0xD1, 0x2B,
|
||||
0xC2, 0x41, 0x81, 0xC3, 0x47, 0x86, 0xC8, 0x61, 0x44, 0x8B, 0xC0, 0x45,
|
||||
0x8B, 0xCB, 0x41, 0xC1, 0xE8, 0x05, 0x8B, 0xC8, 0xC1, 0xE1, 0x04, 0x44,
|
||||
0x33, 0xC1, 0x41, 0x8B, 0xCB, 0x83, 0xE1, 0x03, 0x44, 0x03, 0xC0, 0x8B,
|
||||
0x54, 0x8D, 0xF0, 0x41, 0x03, 0xD3, 0x44, 0x33, 0xC2, 0x45, 0x2B, 0xD0,
|
||||
0x48, 0x83, 0xEF, 0x01, 0x0F, 0x85, 0xB6, 0xFA, 0xFF, 0xFF, 0x48, 0x83,
|
||||
0xEB, 0x01, 0x0F, 0x85, 0x8C, 0xF5, 0xFF, 0xFF, 0x48, 0x8B, 0x5C, 0x24,
|
||||
0x20, 0x41, 0x33, 0xC2, 0x48, 0x8B, 0x74, 0x24, 0x28, 0x48, 0x8B, 0x7C,
|
||||
0x24, 0x30, 0x48, 0x83, 0xC4, 0x10, 0x5D, 0xC3
|
||||
];
|
||||
|
||||
// &[0xFF, 0xC0, 0x90, 0x90, 0xC3]
|
||||
|
||||
// Setup an environment to run inside of.
|
||||
let mut renv = Box::new(RawEnvironment::new());
|
||||
|
||||
renv.load(&mut vm.cpu, &shellcode).unwrap();
|
||||
vm.env = renv;
|
||||
|
||||
let stack_base = 0xF0000;
|
||||
vm.cpu.mem.alloc_memory(
|
||||
AllocLayout {
|
||||
addr: Some(stack_base),
|
||||
size: 0x2000,
|
||||
align: 0x1000,
|
||||
},
|
||||
Mapping {
|
||||
perm: perm::READ | perm::WRITE,
|
||||
value: 0xAA,
|
||||
},
|
||||
).unwrap();
|
||||
|
||||
// Set up the stack
|
||||
let rsp_node = vm.cpu.sleigh().get_reg("RSP").unwrap().var;
|
||||
vm.cpu.write_reg(rsp_node, stack_base + 0x2000 - 0x100);
|
||||
|
||||
// Add instrumentation
|
||||
let counter = vm.cpu.trace.register_store(vec![0_u64]);
|
||||
//vm.add_injector(BlockCounter { counter });
|
||||
|
||||
// Run until the VM exits.
|
||||
let limit = 1000000;
|
||||
let mut start = SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_millis();
|
||||
println!("start: {start}");
|
||||
sleep(Duration::from_millis(100));
|
||||
start = SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_millis();
|
||||
println!("start: {start}");
|
||||
let mut count = 0;
|
||||
let exit = loop {
|
||||
vm.icount_limit = limit;
|
||||
vm.cpu.icount = 0;
|
||||
let exit = vm.run();
|
||||
let now = SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_millis();
|
||||
let elapsed = now - start;
|
||||
count += 1;
|
||||
if count == 50 {
|
||||
panic!("nein");
|
||||
}
|
||||
let freq = (limit as f64) / ((elapsed as f64) / 1000.0);
|
||||
println!("{limit} instructions in {elapsed}ms ({freq:.2}/s)");
|
||||
start = now;
|
||||
match exit {
|
||||
VmExit::InstructionLimit => {
|
||||
println!("Instruction limit")
|
||||
}
|
||||
_ => break exit
|
||||
}
|
||||
};
|
||||
|
||||
println!("execution finished!");
|
||||
println!("{exit:?}");
|
||||
//println!("{}", icicle_vm::debug::current_disasm(&mut vm));
|
||||
|
||||
// Read instrumentation data.
|
||||
let blocks_hit = vm.cpu.trace[counter]
|
||||
.as_any()
|
||||
.downcast_ref::<Vec<u64>>()
|
||||
.unwrap()[0];
|
||||
let blocks_executed = blocks_hit.saturating_sub(1);
|
||||
println!("{blocks_executed} blocks were executed");
|
||||
|
||||
let rax = vm.cpu.sleigh().get_reg("RAX").unwrap().var;
|
||||
let rax_val = vm.cpu.read_reg(rax);
|
||||
println!("rax: 0x{rax_val:X}");
|
||||
}
|
||||
|
||||
struct BlockCounter {
|
||||
counter: icicle_vm::cpu::StoreRef,
|
||||
}
|
||||
|
||||
impl icicle_vm::CodeInjector for BlockCounter {
|
||||
fn inject(
|
||||
&mut self,
|
||||
_cpu: &mut icicle_vm::cpu::Cpu,
|
||||
group: &icicle_vm::cpu::BlockGroup,
|
||||
code: &mut icicle_vm::BlockTable,
|
||||
) {
|
||||
let store_id = self.counter.get_store_id();
|
||||
for block in &mut code.blocks[group.range()] {
|
||||
// counter += 1
|
||||
let counter = block.pcode.alloc_tmp(8);
|
||||
let instrumentation = [
|
||||
(counter, pcode::Op::Load(store_id), 0_u64).into(),
|
||||
(counter, pcode::Op::IntAdd, (counter, 1_u64)).into(),
|
||||
(pcode::Op::Store(store_id), (0_u64, counter)).into(),
|
||||
];
|
||||
|
||||
// Inject the instrumentation at the start of the block.
|
||||
block.pcode.instructions.splice(..0, instrumentation);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
use std::{any::Any};
|
||||
|
||||
use icicle_vm::{VmExit};
|
||||
use icicle_vm::cpu::{Cpu, Environment, debug_info::{DebugInfo, SourceLocation}};
|
||||
use icicle_vm::cpu::mem::{AllocLayout, Mapping, perm};
|
||||
|
||||
pub struct RawEnvironment {
|
||||
debug_info: DebugInfo,
|
||||
}
|
||||
|
||||
impl RawEnvironment {
|
||||
pub fn new() -> Self {
|
||||
Self { debug_info: DebugInfo::default() }
|
||||
}
|
||||
}
|
||||
|
||||
/*impl ElfLoader for RawEnvironment {
|
||||
const DYNAMIC_MEMORY: bool = true;
|
||||
}*/
|
||||
|
||||
impl Environment for RawEnvironment {
|
||||
fn load(&mut self, cpu: &mut Cpu, code_bytes: &[u8]) -> Result<(), String> {
|
||||
let layout = AllocLayout { addr: Some(0x10000), size: 0x1000, align: 0x1000 };
|
||||
|
||||
let base_addr = cpu
|
||||
.mem
|
||||
.alloc_memory(layout, Mapping { perm: perm::MAP, value: 0xaa })
|
||||
.map_err(|e| format!("Failed to allocate memory: {e:?}"))?;
|
||||
|
||||
// NOTE: without READ we cannot translate the code and a confusing exception is raised
|
||||
cpu.mem.update_perm(layout.addr.unwrap(), layout.size, perm::EXEC | perm::READ)
|
||||
.map_err(|e| format!("Failed to update perm: {e:?}"))?;
|
||||
|
||||
cpu.mem.write_bytes(base_addr, code_bytes, perm::NONE)
|
||||
.map_err(|e|format!("Failed to write memory: {e:?}"))?;
|
||||
|
||||
(cpu.arch.on_boot)(cpu, base_addr);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_exception(&mut self, _: &mut Cpu) -> Option<VmExit> {
|
||||
None
|
||||
}
|
||||
|
||||
fn symbolize_addr(&mut self, _: &mut Cpu, addr: u64) -> Option<SourceLocation> {
|
||||
self.debug_info.symbolize_addr(addr)
|
||||
}
|
||||
|
||||
fn lookup_symbol(&mut self, symbol: &str) -> Option<u64> {
|
||||
self.debug_info.symbols.resolve_sym(symbol)
|
||||
}
|
||||
|
||||
fn snapshot(&mut self) -> Box<dyn Any> {
|
||||
Box::new(())
|
||||
}
|
||||
|
||||
fn restore(&mut self, _: &Box<dyn Any>) {}
|
||||
}
|
||||
Reference in New Issue
Block a user