diff options
| author | Axel Souchet <0vercl0k@tuxfamily.org> | 2018-09-09 06:11:00 -0700 |
|---|---|---|
| committer | serpilliere <serpilliere@users.noreply.github.com> | 2018-09-09 15:11:00 +0200 |
| commit | 8e6b39d80e9f8db8389bd2a8106d0f64b91c19e9 (patch) | |
| tree | dbf342089690704e89c10532b83d1d81709a49f4 /miasm2/jitter/vm_mngr.c | |
| parent | e61116884ac7879db08313542c6c28a8b00297c5 (diff) | |
| download | focaccia-miasm-8e6b39d80e9f8db8389bd2a8106d0f64b91c19e9.tar.gz focaccia-miasm-8e6b39d80e9f8db8389bd2a8106d0f64b91c19e9.zip | |
Adds Windows support and AppVeyor CI (#835)
* Get miasm to work on Windows, also add AppVeyor CI * Fix gcc jitter on Linux * Make the dse_crackme tests work on Windows * calling build and then install is less confusing than install twice * fix os.rename race condition on Windows * clean it up * Clean up after the unused cl.exe's artifacts * Use is_win instead of an additional check * Fix issue on Windows where 'w' and 'wb' modes are different * Address review feedback * setuptools is actually not required, so reverting
Diffstat (limited to 'miasm2/jitter/vm_mngr.c')
| -rw-r--r-- | miasm2/jitter/vm_mngr.c | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/miasm2/jitter/vm_mngr.c b/miasm2/jitter/vm_mngr.c index 9b7a4c98..bd1de2f4 100644 --- a/miasm2/jitter/vm_mngr.c +++ b/miasm2/jitter/vm_mngr.c @@ -15,18 +15,14 @@ ** with this program; if not, write to the Free Software Foundation, Inc., ** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include <Python.h> - -#include <stdio.h> -#include <stdlib.h> +#include "vm_mngr.h" -#include <stdint.h> #include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> #include "queue.h" -#include "vm_mngr.h" - @@ -192,11 +188,11 @@ static uint64_t memory_page_read(vm_mngr_t* vm_mngr, unsigned int my_size, uint6 break; case 16: ret = *((unsigned short*)addr)&0xFFFF; - ret = set_endian16(vm_mngr, ret); + ret = set_endian16(vm_mngr, (uint16_t)ret); break; case 32: ret = *((unsigned int*)addr)&0xFFFFFFFF; - ret = set_endian32(vm_mngr, ret); + ret = set_endian32(vm_mngr, (uint32_t)ret); break; case 64: ret = *((uint64_t*)addr)&0xFFFFFFFFFFFFFFFFULL; @@ -227,10 +223,10 @@ static uint64_t memory_page_read(vm_mngr_t* vm_mngr, unsigned int my_size, uint6 ret = ret; break; case 16: - ret = set_endian16(vm_mngr, ret); + ret = set_endian16(vm_mngr, (uint16_t)ret); break; case 32: - ret = set_endian32(vm_mngr, ret); + ret = set_endian32(vm_mngr, (uint32_t)ret); break; case 64: ret = set_endian64(vm_mngr, ret); @@ -278,11 +274,11 @@ static void memory_page_write(vm_mngr_t* vm_mngr, unsigned int my_size, *((unsigned char*)addr) = src&0xFF; break; case 16: - src = set_endian16(vm_mngr, src); + src = set_endian16(vm_mngr, (uint16_t)src); *((unsigned short*)addr) = src&0xFFFF; break; case 32: - src = set_endian32(vm_mngr, src); + src = set_endian32(vm_mngr, (uint32_t)src); *((unsigned int*)addr) = src&0xFFFFFFFF; break; case 64: @@ -303,10 +299,10 @@ static void memory_page_write(vm_mngr_t* vm_mngr, unsigned int my_size, src = src; break; case 16: - src = set_endian16(vm_mngr, src); + src = set_endian16(vm_mngr, (uint16_t)src); break; case 32: - src = set_endian32(vm_mngr, src); + src = set_endian32(vm_mngr, (uint32_t)src); break; case 64: src = set_endian64(vm_mngr, src); @@ -484,21 +480,21 @@ unsigned char vm_MEM_LOOKUP_08(vm_mngr_t* vm_mngr, uint64_t addr) { unsigned char ret; add_mem_read(vm_mngr, addr, 1); - ret = memory_page_read(vm_mngr, 8, addr); + ret = (unsigned char)memory_page_read(vm_mngr, 8, addr); return ret; } unsigned short vm_MEM_LOOKUP_16(vm_mngr_t* vm_mngr, uint64_t addr) { unsigned short ret; add_mem_read(vm_mngr, addr, 2); - ret = memory_page_read(vm_mngr, 16, addr); + ret = (unsigned short)memory_page_read(vm_mngr, 16, addr); return ret; } unsigned int vm_MEM_LOOKUP_32(vm_mngr_t* vm_mngr, uint64_t addr) { unsigned int ret; add_mem_read(vm_mngr, addr, 4); - ret = memory_page_read(vm_mngr, 32, addr); + ret = (unsigned int)memory_page_read(vm_mngr, 32, addr); return ret; } uint64_t vm_MEM_LOOKUP_64(vm_mngr_t* vm_mngr, uint64_t addr) @@ -533,7 +529,7 @@ int vm_read_mem(vm_mngr_t* vm_mngr, uint64_t addr, char** buffer_ptr, uint64_t s } len = MIN(size, mpn->size - (addr - mpn->ad)); - memcpy(buffer, (char*)(mpn->ad_hp + (addr - mpn->ad)), len); + memcpy(buffer, (char*)mpn->ad_hp + (addr - mpn->ad), len); buffer += len; addr += len; size -= len; @@ -556,7 +552,7 @@ int vm_write_mem(vm_mngr_t* vm_mngr, uint64_t addr, char *buffer, uint64_t size) } len = MIN(size, mpn->size - (addr - mpn->ad)); - memcpy(mpn->ad_hp + (addr-mpn->ad), buffer, len); + memcpy((char*)mpn->ad_hp + (addr-mpn->ad), buffer, len); buffer += len; addr += len; size -= len; @@ -800,7 +796,7 @@ char* dump(vm_mngr_t* vm_mngr) struct memory_page_node * mpn; /* 0x1234567812345678 0x1234567812345678 */ char* intro = "Addr Size Access Comment\n"; - int total_len = strlen(intro) + 1; + size_t total_len = strlen(intro) + 1; buf_final = malloc(total_len); if (buf_final == NULL) { @@ -883,7 +879,7 @@ void remove_memory_breakpoint(vm_mngr_t* vm_mngr, uint64_t ad, unsigned int acce void hexdump(char* m, unsigned int l) { - int i, j, last; + unsigned int i, j, last; last = 0; for (i=0;i<l;i++){ if (!(i%0x10) && i){ @@ -922,7 +918,7 @@ void hexdump(char* m, unsigned int l) // Return vm_mngr's exception flag value -uint64_t get_exception_flag(vm_mngr_t* vm_mngr) +_MIASM_EXPORT uint64_t get_exception_flag(vm_mngr_t* vm_mngr) { return vm_mngr->exception_flags; } |