diff --git a/asmloader.c b/asmloader.c index a68c236..563c787 100644 --- a/asmloader.c +++ b/asmloader.c @@ -132,7 +132,7 @@ # error Unsupported or unrecognized architecture. #endif -#define STUB_SIZE 0x200 +#define STUB_SIZE 0x400 #define STUB_PAD 1 typedef int (*func_t)(); diff --git a/stubs/x86_32_stub.c b/stubs/x86_32_stub.c index 9519c1a..d5541fc 100644 --- a/stubs/x86_32_stub.c +++ b/stubs/x86_32_stub.c @@ -1,68 +1,68 @@ -#pragma once - -unsigned char STUB_x86_32_stub[] = { - 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0x89, 0xd9, 0xe9, - 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +#pragma once + +unsigned char STUB_x86_32_stub[] = { + 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0x89, 0xd9, 0xe9, + 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/stubs/x86_64_linux_stub b/stubs/x86_64_linux_stub index 556d9d8..e46fbcc 100644 Binary files a/stubs/x86_64_linux_stub and b/stubs/x86_64_linux_stub differ diff --git a/stubs/x86_64_linux_stub.c b/stubs/x86_64_linux_stub.c index 202ac18..d484e62 100644 --- a/stubs/x86_64_linux_stub.c +++ b/stubs/x86_64_linux_stub.c @@ -1,68 +1,132 @@ -#pragma once - -unsigned char STUB_x86_64_linux_stub[] = { - 0x48, 0x8d, 0x1d, 0xf9, 0x00, 0x00, 0x00, 0x48, - 0x8d, 0x0d, 0x1a, 0x01, 0x00, 0x00, 0xe9, 0xed, - 0x01, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x08, - 0xff, 0x25, 0x0a, 0x01, 0x00, 0x00, 0x48, 0x89, - 0x3d, 0x2b, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x7c, - 0x24, 0x08, 0xff, 0x15, 0x00, 0x01, 0x00, 0x00, - 0x48, 0x8b, 0x3d, 0x19, 0x01, 0x00, 0x00, 0xc3, - 0xff, 0x25, 0xfa, 0x00, 0x00, 0x00, 0xff, 0x35, - 0xfc, 0x00, 0x00, 0x00, 0xeb, 0x08, 0xff, 0x35, - 0xfc, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x48, 0x89, - 0x3d, 0xfb, 0x00, 0x00, 0x00, 0x48, 0x89, 0x35, - 0xfc, 0x00, 0x00, 0x00, 0x48, 0x89, 0x15, 0xfd, - 0x00, 0x00, 0x00, 0x48, 0x89, 0x0d, 0xfe, 0x00, - 0x00, 0x00, 0x4c, 0x89, 0x05, 0xff, 0x00, 0x00, - 0x00, 0x4c, 0x89, 0x0d, 0x00, 0x01, 0x00, 0x00, - 0x5a, 0x58, 0x48, 0x89, 0x05, 0xff, 0x00, 0x00, - 0x00, 0x48, 0x89, 0xd0, 0x48, 0x8b, 0x3c, 0x24, - 0x48, 0x8b, 0x74, 0x24, 0x08, 0x48, 0x8b, 0x54, - 0x24, 0x10, 0x48, 0x8b, 0x4c, 0x24, 0x18, 0x4c, - 0x8b, 0x44, 0x24, 0x20, 0x4c, 0x8b, 0x4c, 0x24, - 0x28, 0xff, 0xd0, 0x48, 0x8b, 0x3d, 0xa6, 0x00, - 0x00, 0x00, 0x48, 0x8b, 0x35, 0xa7, 0x00, 0x00, - 0x00, 0x48, 0x8b, 0x15, 0xa8, 0x00, 0x00, 0x00, - 0x48, 0x8b, 0x0d, 0xa9, 0x00, 0x00, 0x00, 0x4c, - 0x8b, 0x05, 0xaa, 0x00, 0x00, 0x00, 0x4c, 0x8b, - 0x0d, 0xab, 0x00, 0x00, 0x00, 0xff, 0x25, 0xad, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x1e, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x38, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x3e, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x46, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x00, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x01, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x02, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x03, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x04, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +#pragma once + +unsigned char STUB_x86_64_linux_stub[] = { + 0x48, 0x8d, 0x1d, 0xf9, 0x01, 0x00, 0x00, 0x48, + 0x8d, 0x0d, 0x1a, 0x02, 0x00, 0x00, 0xe9, 0xed, + 0x03, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x08, + 0xff, 0x25, 0x0a, 0x02, 0x00, 0x00, 0x48, 0x89, + 0x3d, 0x2b, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x7c, + 0x24, 0x08, 0xff, 0x15, 0x00, 0x02, 0x00, 0x00, + 0x48, 0x8b, 0x3d, 0x19, 0x02, 0x00, 0x00, 0xc3, + 0xff, 0x25, 0xfa, 0x01, 0x00, 0x00, 0xff, 0x35, + 0xfc, 0x01, 0x00, 0x00, 0xeb, 0x08, 0xff, 0x35, + 0xfc, 0x01, 0x00, 0x00, 0xeb, 0x00, 0x4c, 0x89, + 0x3d, 0x2b, 0x02, 0x00, 0x00, 0x48, 0x89, 0x3d, + 0xf4, 0x01, 0x00, 0x00, 0x48, 0x89, 0x35, 0xf5, + 0x01, 0x00, 0x00, 0x48, 0x89, 0x15, 0xf6, 0x01, + 0x00, 0x00, 0x48, 0x89, 0x0d, 0xf7, 0x01, 0x00, + 0x00, 0x4c, 0x89, 0x05, 0xf8, 0x01, 0x00, 0x00, + 0x4c, 0x89, 0x0d, 0xf9, 0x01, 0x00, 0x00, 0x5a, + 0x41, 0x5f, 0x4c, 0x89, 0x3d, 0xff, 0x01, 0x00, + 0x00, 0x49, 0x89, 0xd7, 0x48, 0x8b, 0x3c, 0x24, + 0x48, 0x8b, 0x74, 0x24, 0x08, 0x48, 0x8b, 0x54, + 0x24, 0x10, 0x48, 0x8b, 0x4c, 0x24, 0x18, 0x4c, + 0x8b, 0x44, 0x24, 0x20, 0x4c, 0x8b, 0x4c, 0x24, + 0x28, 0x48, 0x89, 0x3d, 0xe0, 0x01, 0x00, 0x00, + 0x48, 0x89, 0x35, 0xe1, 0x01, 0x00, 0x00, 0x48, + 0x89, 0x15, 0xe2, 0x01, 0x00, 0x00, 0x48, 0x89, + 0x0d, 0xe3, 0x01, 0x00, 0x00, 0x4c, 0x89, 0x05, + 0xe4, 0x01, 0x00, 0x00, 0x4c, 0x89, 0x0d, 0xe5, + 0x01, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x30, 0x48, + 0x31, 0xc0, 0x41, 0xff, 0xd7, 0xff, 0x35, 0xd5, + 0x01, 0x00, 0x00, 0xff, 0x35, 0xc7, 0x01, 0x00, + 0x00, 0xff, 0x35, 0xb9, 0x01, 0x00, 0x00, 0xff, + 0x35, 0xab, 0x01, 0x00, 0x00, 0xff, 0x35, 0x9d, + 0x01, 0x00, 0x00, 0xff, 0x35, 0x8f, 0x01, 0x00, + 0x00, 0x48, 0x8b, 0x3d, 0x48, 0x01, 0x00, 0x00, + 0x48, 0x8b, 0x35, 0x49, 0x01, 0x00, 0x00, 0x48, + 0x8b, 0x15, 0x4a, 0x01, 0x00, 0x00, 0x48, 0x8b, + 0x0d, 0x4b, 0x01, 0x00, 0x00, 0x4c, 0x8b, 0x05, + 0x4c, 0x01, 0x00, 0x00, 0x4c, 0x8b, 0x0d, 0x4d, + 0x01, 0x00, 0x00, 0x4c, 0x8b, 0x3d, 0x4e, 0x01, + 0x00, 0x00, 0xff, 0x25, 0x50, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x1e, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x38, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x3e, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x46, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x00, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x01, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x02, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x03, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x04, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/stubs/x86_64_linux_stub.nasm b/stubs/x86_64_linux_stub.nasm index f739408..503c0ee 100644 --- a/stubs/x86_64_linux_stub.nasm +++ b/stubs/x86_64_linux_stub.nasm @@ -37,6 +37,7 @@ stub_scanf: ; Expects function-to-be-called's address on the stack. vaarg_converter: ; Order of arguments: rdi, rsi, rdx, rcx, r8, r9, + mov [rel saved_r15], r15 mov [rel saved_rdi], rdi mov [rel saved_rsi], rsi mov [rel saved_rdx], rdx @@ -45,9 +46,9 @@ vaarg_converter: mov [rel saved_r9], r9 pop rdx ; Function to be called. - pop rax ; Return address. - mov [rel saved_ret], rax - mov rax, rdx + pop r15 ; Return address. + mov [rel saved_ret], r15 + mov r15, rdx mov rdi, [rsp+8*0] mov rsi, [rsp+8*1] @@ -56,7 +57,58 @@ vaarg_converter: mov r8, [rsp+8*4] mov r9, [rsp+8*5] - call rax + ; remove args passed via registers from stack to avoid printing + ; them twice in case of more than 6 printf arguments + ; no easy way to detect exact number of arguments so we have to save the stack + ; to rebuild it in case of less then 6 params + mov [rel saved_stack_top], rdi + mov [rel saved_stack_nd], rsi + mov [rel saved_stack_rd], rdx + mov [rel saved_stack_fourth], rcx + mov [rel saved_stack_fifth], r8 + mov [rel saved_stack_sixth], r9 + add rsp, 48 + + ; When calling printf stub uses rax, so this register is nonzero. + ; This causes printf to "see" floating point arguments and starts using SSE. + ; At the same time if the stack does not have the proper 16 byte alignment asmloader will crash. + ; After first [rbx + 3 * 8] call rax may be nonzero again + ; so code like: + ; + ; [bits 64] + ; + ; call no_arg_procedure + ; + ; push 0 + ; call [rbx + 0 * 8] + ; + ; no_arg_procedure: ; no_arg_procedure() + ; + ; call _print + ; db "abc", 0xa, 0 + ; _print: + ; call [rbx + 3 * 8] + ; add rsp, 8 + ; + ; call _print2 + ; db "cde", 0xa, 0 + ; _print2: + ; call [rbx + 3 * 8] + ; add rsp, 8 + ; ret + ; ;end + ; + ; will leave stack unaligned and nonzero rax, this will crash, so: + xor rax, rax + call r15 + + ; restore 6 stack elements + push QWORD [rel saved_stack_sixth] + push QWORD [rel saved_stack_fifth] + push QWORD [rel saved_stack_fourth] + push QWORD [rel saved_stack_rd] + push QWORD [rel saved_stack_nd] + push QWORD [rel saved_stack_top] mov rdi, [rel saved_rdi] mov rsi, [rel saved_rsi] @@ -64,10 +116,15 @@ vaarg_converter: mov rcx, [rel saved_rcx] mov r8, [rel saved_r8] mov r9, [rel saved_r9] + + + ; r12, r13, r14, r15, rbx, rsp, rbp are the callee-saved registers - they have a + ; "Yes" in the "Preserved across function calls" column. + mov r15, [rel saved_r15] jmp [rel saved_ret] ; Attempt to move out the data part to another cache-line. -times (0x100 - ($ - start)) db 0x00 +times (0x200 - ($ - start)) db 0x00 jump_table: dq stub_exit @@ -90,10 +147,18 @@ storage_area: saved_rcx: dq 0 saved_r8: dq 0 saved_r9: dq 0 + saved_r15: dq 0 saved_ret: dq 0 - + ; space for saving 6 params taken off the stack + saved_stack_top: dq 0 + saved_stack_nd: dq 0 + saved_stack_rd: dq 0 + saved_stack_fourth: dq 0 + saved_stack_fifth: dq 0 + saved_stack_sixth: dq 0 + ; Align to STUB_SIZE. -times (0x200 - ($ - start)) db 0x0 +times (0x400 - ($ - start)) db 0x0 real_start: diff --git a/stubs/x86_64_mswin_stub.c b/stubs/x86_64_mswin_stub.c index e310435..d6a2a81 100644 --- a/stubs/x86_64_mswin_stub.c +++ b/stubs/x86_64_mswin_stub.c @@ -1,68 +1,68 @@ -#pragma once - -unsigned char STUB_x86_64_mswin_stub[] = { - 0x48, 0x8d, 0x1d, 0xf9, 0x00, 0x00, 0x00, 0x48, - 0x8d, 0x0d, 0x1a, 0x01, 0x00, 0x00, 0xe9, 0xed, - 0x01, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x08, - 0x48, 0x83, 0xec, 0x20, 0xff, 0x25, 0x06, 0x01, - 0x00, 0x00, 0x51, 0x48, 0x8b, 0x4c, 0x24, 0x08, - 0x48, 0x83, 0xec, 0x20, 0xff, 0x15, 0xfe, 0x00, - 0x00, 0x00, 0x48, 0x83, 0xc4, 0x20, 0x59, 0xc3, - 0x48, 0x83, 0xec, 0x20, 0xff, 0x15, 0xf6, 0x00, - 0x00, 0x00, 0x48, 0x83, 0xc4, 0x20, 0xc3, 0xff, - 0x35, 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x08, 0xff, - 0x35, 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x48, - 0x89, 0x0d, 0xf2, 0x00, 0x00, 0x00, 0x48, 0x89, - 0x15, 0xf3, 0x00, 0x00, 0x00, 0x4c, 0x89, 0x05, - 0xf4, 0x00, 0x00, 0x00, 0x4c, 0x89, 0x0d, 0xf5, - 0x00, 0x00, 0x00, 0x5a, 0x58, 0x48, 0x89, 0x05, - 0xf4, 0x00, 0x00, 0x00, 0x48, 0x89, 0xd0, 0x48, - 0x8b, 0x0c, 0x24, 0x48, 0x8b, 0x54, 0x24, 0x08, - 0x4c, 0x8b, 0x44, 0x24, 0x10, 0x4c, 0x8b, 0x4c, - 0x24, 0x18, 0x48, 0x89, 0x15, 0xdf, 0x00, 0x00, - 0x00, 0x4c, 0x89, 0x05, 0xe0, 0x00, 0x00, 0x00, - 0x4c, 0x89, 0x0d, 0xe1, 0x00, 0x00, 0x00, 0xff, - 0xd0, 0x48, 0x8b, 0x15, 0xc8, 0x00, 0x00, 0x00, - 0x4c, 0x8b, 0x05, 0xc9, 0x00, 0x00, 0x00, 0x4c, - 0x8b, 0x0d, 0xca, 0x00, 0x00, 0x00, 0x48, 0x89, - 0x54, 0x24, 0x08, 0x4c, 0x89, 0x44, 0x24, 0x10, - 0x4c, 0x89, 0x4c, 0x24, 0x18, 0x48, 0x8b, 0x0d, - 0x7c, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x15, 0x7d, - 0x00, 0x00, 0x00, 0x4c, 0x8b, 0x05, 0x7e, 0x00, - 0x00, 0x00, 0x4c, 0x8b, 0x0d, 0x7f, 0x00, 0x00, - 0x00, 0xff, 0x25, 0x81, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x22, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x38, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x47, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x4f, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0x00, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x01, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x02, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x03, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x04, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +#pragma once + +unsigned char STUB_x86_64_mswin_stub[] = { + 0x48, 0x8d, 0x1d, 0xf9, 0x00, 0x00, 0x00, 0x48, + 0x8d, 0x0d, 0x1a, 0x01, 0x00, 0x00, 0xe9, 0xed, + 0x01, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x08, + 0x48, 0x83, 0xec, 0x20, 0xff, 0x25, 0x06, 0x01, + 0x00, 0x00, 0x51, 0x48, 0x8b, 0x4c, 0x24, 0x08, + 0x48, 0x83, 0xec, 0x20, 0xff, 0x15, 0xfe, 0x00, + 0x00, 0x00, 0x48, 0x83, 0xc4, 0x20, 0x59, 0xc3, + 0x48, 0x83, 0xec, 0x20, 0xff, 0x15, 0xf6, 0x00, + 0x00, 0x00, 0x48, 0x83, 0xc4, 0x20, 0xc3, 0xff, + 0x35, 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x08, 0xff, + 0x35, 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x48, + 0x89, 0x0d, 0xf2, 0x00, 0x00, 0x00, 0x48, 0x89, + 0x15, 0xf3, 0x00, 0x00, 0x00, 0x4c, 0x89, 0x05, + 0xf4, 0x00, 0x00, 0x00, 0x4c, 0x89, 0x0d, 0xf5, + 0x00, 0x00, 0x00, 0x5a, 0x58, 0x48, 0x89, 0x05, + 0xf4, 0x00, 0x00, 0x00, 0x48, 0x89, 0xd0, 0x48, + 0x8b, 0x0c, 0x24, 0x48, 0x8b, 0x54, 0x24, 0x08, + 0x4c, 0x8b, 0x44, 0x24, 0x10, 0x4c, 0x8b, 0x4c, + 0x24, 0x18, 0x48, 0x89, 0x15, 0xdf, 0x00, 0x00, + 0x00, 0x4c, 0x89, 0x05, 0xe0, 0x00, 0x00, 0x00, + 0x4c, 0x89, 0x0d, 0xe1, 0x00, 0x00, 0x00, 0xff, + 0xd0, 0x48, 0x8b, 0x15, 0xc8, 0x00, 0x00, 0x00, + 0x4c, 0x8b, 0x05, 0xc9, 0x00, 0x00, 0x00, 0x4c, + 0x8b, 0x0d, 0xca, 0x00, 0x00, 0x00, 0x48, 0x89, + 0x54, 0x24, 0x08, 0x4c, 0x89, 0x44, 0x24, 0x10, + 0x4c, 0x89, 0x4c, 0x24, 0x18, 0x48, 0x8b, 0x0d, + 0x7c, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x15, 0x7d, + 0x00, 0x00, 0x00, 0x4c, 0x8b, 0x05, 0x7e, 0x00, + 0x00, 0x00, 0x4c, 0x8b, 0x0d, 0x7f, 0x00, 0x00, + 0x00, 0xff, 0x25, 0x81, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x22, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x38, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x47, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x4f, 0xc0, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0x00, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x01, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x02, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x03, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x04, 0x00, 0xde, 0xc0, 0xde, 0xc0, 0xde, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +};