Nguyen Anh Quynh
3d8f413ce8
new API uc_mem_regions() to retrieve the list of memory regions mapped by uc_mem_map_*()
2016-01-16 16:57:17 +08:00
Nguyen Anh Quynh
71ad9310fc
sanity check on arguments of uc_mem_map_ptr()
2016-01-12 00:59:56 +08:00
farmdve
89eac66bf7
Move sanity checks before uc->memory_map is called.
2016-01-11 18:26:23 +02:00
Nguyen Anh Quynh
7e16f7a50d
disallow mapping memory range that is already mapped. this fixes issue #350
2015-12-30 09:17:47 +08:00
Nguyen Anh Quynh
f935469658
mips: handle memory redirect for all APIs. this fixes issue #347
2015-12-28 15:19:30 +08:00
Nguyen Anh Quynh
771f9f7c3b
fix conflicts when merging map-ptr branch to master branch
2015-12-17 08:12:02 +08:00
farmdve
8b79a872d0
Fix segfault introduced in my previous commits.
2015-12-11 22:35:25 +02:00
Nguyen Anh Quynh
3c72809373
end address of mapping memory is not inclusive, and can wrap around to 0. fix issue #299
2015-12-12 01:37:13 +08:00
Nguyen Anh Quynh
74986cc59a
g_free() can handle NULL pointer
2015-12-11 11:25:35 +08:00
farmdve
3e57615c76
Fix uc_mem_unmap memory leak and in uc_close.
...
It appears the problem is that we are not calling the memory region
destructor. After modifying memory_unmap to include the destructor call
for the memory region, the memory is freed.
Furthermore in uc_close we must explicitly free any blocks that were not
unmapped by the user to prevent leaks.
This should fix issue 305.
2015-12-11 02:42:31 +02:00
Ryan Hileman
230cbd5330
add permissions to map_ptr api
2015-11-28 11:28:31 -08:00
Nguyen Anh Quynh
f4882ae1a2
simplify code by replacing mem_map_start()/mem_map_finish() in uc.c with mem_map()
2015-11-28 18:26:08 +08:00
Nguyen Anh Quynh
f57c098056
declare variables at begin of function
2015-11-28 15:56:19 +08:00
Ryan Hileman
6d21ebabea
implement host-controlled memory mapping for #261
2015-11-27 23:30:36 -08:00
Nguyen Anh Quynh
2f297bdd3a
handle some errors properly so avoid exit() during initialization. this fixes issue #237
2015-11-12 01:43:41 +08:00
Nguyen Anh Quynh
272293556a
do not abort() when memory is insufficient. this fixes issue #244
2015-11-10 11:44:29 +08:00
practicalswift
4151d1d600
Fix segfault-on-emu_stop() bug.
2015-11-03 14:34:31 +01:00
Nguyen Anh Quynh
b41db5abd9
Merge pull request #229 from practicalswift/typos
...
Fix typos. Remove trailing whitespace.
2015-10-31 10:39:35 +08:00
practicalswift
4f521c371c
Fix typos.
2015-10-30 22:32:59 +01:00
Nguyen Anh Quynh
b66a323b19
do not free MemoryRegion in memory_unmap() because it will be unref later in memory_region_unref(). this fixes issue #202
2015-10-28 01:26:59 +08:00
Nguyen Anh Quynh
3a36e327ab
support memory redirection, so the issue #217 is fixed
2015-10-27 14:37:03 +08:00
coco
dd56621bbb
fix for use after free in case of double unmap
2015-10-21 22:25:49 +02:00
Willi Ballenthin
34c7b70bcb
uc.c: fix minor typo
...
s/argumet/argument/g
2015-10-19 16:52:56 -04:00
Nguyen Anh Quynh
b1d41d414b
on some hook events, uc_hook_add() should not allow more than 1 handler. this add UC_ERR_HOOK_EXIST error type
2015-10-10 18:01:47 +08:00
Nguyen Anh Quynh
9e64cba6ec
Rename some hook related enums:
...
- UC_ERR_READ_INVALID -> UC_ERR_READ_UNMAPPED
- UC_ERR_WRITE_INVALID -> UC_ERR_WRITE_UNMAPPED
- UC_ERR_FETCH_INVALID -> UC_ERR_FETCH_UNMAPPED
- UC_MEM_READ_INVALID -> UC_MEM_READ_UNMAPPED
- UC_MEM_WRITE_INVALID -> UC_MEM_WRITE_UNMAPPED
- UC_MEM_FETCH_INVALID -> UC_MEM_FETCH_UNMAPPED
- UC_HOOK_MEM_READ_INVALID -> UC_HOOK_MEM_READ_UNMAPPED
- UC_HOOK_MEM_WRITE_INVALID -> UC_HOOK_MEM_WRITE_UNMAPPED
- UC_HOOK_MEM_FETCH_INVALID -> UC_HOOK_MEM_FETCH_UNMAPPED
- UC_HOOK_MEM_INVALID -> UC_HOOK_MEM_UNMAPPED
This also renames some newly added macros to use _INVALID postfix:
- UC_HOOK_MEM_READ_ERR -> UC_HOOK_MEM_READ_INVALID
- UC_HOOK_MEM_WRITE_ERR -> UC_HOOK_MEM_WRITE_INVALID
- UC_HOOK_MEM_FETCH_ERR -> UC_HOOK_MEM_FETCH_INVALID
- UC_HOOK_MEM_ERR -> UC_HOOK_MEM_INVALID
Fixed all the bindings Java, Go & Python.
2015-09-30 14:46:55 +08:00
Nguyen Anh Quynh
90eb8f2e72
This commit continues the PR #111
...
- Allow to register handler separately for invalid memory access
- Add new memory events for hooking:
- UC_MEM_READ_INVALID, UC_MEM_WRITE_INVALID, UC_MEM_FETCH_INVALID
- UC_HOOK_MEM_READ_PROT, UC_HOOK_MEM_WRITE_PROT, UC_HOOK_MEM_FETCH_PROT
- Rename UC_ERR_EXEC_PROT to UC_ERR_FETCH_PROT
- Change API uc_hook_add() so event type @type can be combined from hooking types
2015-09-24 14:18:02 +08:00
Sean Heelan
dfb4a9d9ad
Revert "Remove uc_cb_eventmem_t as it is identical to uc_cb_hookmem_t"
...
As pointed out by aquynh the return types are actually different. A
uc_cb_eventmem_t callback returns a bool, while uc_cb_hookmem_t has a
void return type.
This reverts commit cb2b97f26c
.
2015-09-23 12:51:47 +07:00
Sean Heelan
cb2b97f26c
Remove uc_cb_eventmem_t as it is identical to uc_cb_hookmem_t, as per
...
issue #111
2015-09-22 12:37:05 +07:00
Nguyen Anh Quynh
26ee533303
return NULL in memory_mapping() if no memory is mapped. this fixes test_bad_unmap in test_x86.c
2015-09-21 22:17:26 +08:00
Nguyen Anh Quynh
39ac1bcb4e
rename UC_ERR_INVAL to UC_ERR_ARG
2015-09-09 16:54:47 +08:00
Nguyen Anh Quynh
d7ef204398
rename error codes ERR_MEM_READ, ERR_MEM_WRITE, ERR_MEM_FETCH
2015-09-09 16:25:48 +08:00
Nguyen Anh Quynh
d3d38d3f21
handle read/write/fetch from unaligned addresses. this adds new error codes UC_ERR_READ_UNALIGNED, UC_ERR_WRITE_UNALIGNED & UC_ERR_FETCH_UNALIGNED
2015-09-09 15:52:15 +08:00
Jonathon Reinhart
f6cecf45d2
change mem read/write APIs to use void*
...
Don't force the user to use uint8_t pointers, or cast their
pointers-to-other-objects to uint8_t* when calling these APIs.
2015-09-07 12:44:03 -04:00
Nguyen Anh Quynh
d1bdbd11e7
rename uchook to uc_hook, ucengine to uc_engine, uc_hook_t to uc_hook_type
2015-09-05 11:20:32 +08:00
Nguyen Anh Quynh
d506b900eb
cache the last entry of mapped blocks in memory_mapping() for better performance
2015-09-04 15:40:47 +08:00
Nguyen Anh Quynh
022f8d82d1
handle memory fetch as invalid memory access. now we can also report error if exec memory is unmapped (UC_ERR_MEM_FETCH)
2015-09-04 11:55:17 +08:00
Jonathon Reinhart
5f32e2c1ae
s/uc_hook_h/uchook/g
2015-09-03 22:39:23 -04:00
Jonathon Reinhart
da46071c7d
bring new code and samples up-to-date with API changes
2015-09-03 22:15:49 -04:00
Jonathon Reinhart
5e9d07a40a
Merge remote-tracking branch 'upstream/master' into change-handle-based-api
2015-09-03 22:01:52 -04:00
Nguyen Anh Quynh
e54519c09f
cleanup
2015-09-04 09:20:13 +08:00
Chris Eagle
2da46caef7
smooth out split_region related code
2015-09-03 12:26:36 -07:00
Nguyen Anh Quynh
6ca85a72ed
simplify uc_mem_protect() & uc_mem_unmap()
2015-09-04 01:02:38 +08:00
Nguyen Anh Quynh
9f9d57e84f
cleaning & indentation
2015-09-03 18:16:49 +08:00
Nguyen Anh Quynh
b8d4240240
solve merging conflict
2015-09-03 18:05:21 +08:00
Jonathon Reinhart
5b62d436a9
change public APIs to use ucengine
...
See #52 .
2015-09-02 22:00:09 -04:00
Jonathon Reinhart
bd0a6921cc
Merge remote-tracking branch 'upstream/master' into change-handle-based-api
2015-09-02 21:04:43 -04:00
Nguyen Anh Quynh
03683a7960
fix an warning caused by _hook_mem_access()
2015-09-03 01:18:41 +08:00
Nguyen Anh Quynh
be659d201d
fix confusion betweet UC_MEM_xxx & UC_HOOK_MEM_xxx. fix issue #93
2015-09-03 01:13:57 +08:00
Nguyen Anh Quynh
8b39ec5b0c
initial support to remove a static variable in qemu-thread-win32.c
2015-09-02 16:13:12 +08:00
Chris Eagle
ad877e6af0
Add error value UC_ERR_INVAL and rename UC_ERR_OOM to UC_ERR_NOMEM to provide more error specificity
2015-09-01 13:40:19 -07:00