20b01a6933
fix merge conflict
2016-02-01 12:08:38 +08:00
a2ef52172c
add combination hook type UC_HOOK_MEM_VALID to intercept all valid memory access
2016-01-31 13:12:34 +08:00
e750a4e97c
when uc_mem_exec() remove EXE permission, quit current TB & continue emulating with TB flushed. this fixes issue in PR #378
2016-01-28 00:56:55 +08:00
48ab148d1c
Merge branch 'hook'
2016-01-26 22:52:29 +08:00
26d3b1e7d6
Added ppc 32bit mode and added sparc mode checks to bring it in line with other archs
2016-01-24 22:27:33 +11:00
6f3d48077e
rename UC_QUERY_ARM_MODE to a more generic name UC_QUERY_MODE. make all bindings support this new constant
2016-01-24 01:08:23 +08:00
4dbad9aa9b
add new API uc_query() to query internal status of emulator at runtime
2016-01-23 17:14:44 +08:00
38d1443504
Merge branch 'hook-refactor' of https://github.com/lunixbochs/unicorn into lunixbochs-hook-refactor
2016-01-23 13:24:12 +08:00
9f9bd7098b
patch hook bounds to be inclusive
2016-01-22 19:24:45 -08:00
249e2ac0a0
Merge branch 'hook-refactor' of https://github.com/lunixbochs/unicorn into lunixbochs-hook-refactor
2016-01-23 10:58:37 +08:00
d79925f477
sparc: add SPARC32 mode (= UC_MODE_32)
2016-01-23 10:48:18 +08:00
93052f6566
refactor to allow multiple hooks for one type
2016-01-22 18:41:43 -08:00
288ef1df0a
Fix uc_mode usage in source code
2016-01-23 12:10:12 +11:00
8763d426c2
Fix uc_mode usage in source code
2016-01-23 12:08:49 +11:00
82b7599e15
Sorted uc_modes by CPU and added masks
2016-01-23 09:47:29 +11:00
b48fbf7520
Sorted uc_modes by CPU and added masks
2016-01-23 00:55:31 +11:00
789971eeb9
Sorted uc_modes by CPU and added masks
2016-01-23 00:53:34 +11:00
f5fa84d985
consistent style for docs of unicorn.h
2016-01-16 18:31:24 +08:00
978f671fa5
fix some comments in unicorn.h
2016-01-16 18:17:13 +08:00
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
036763d6ae
Fix memory leaks as reported by DrMemory and Valgrind.
...
ARM and probably the rest of the arches have significant memory leaks as
they have no release interface.
Additionally, DrMemory does not have 64-bit support and thus I can't
test the 64-bit version under Windows. Under Linux valgrind supports
both 32-bit and 64-bit but there are different macros and code for Linux
and Windows.
2016-01-08 01:42:56 +02:00
230cbd5330
add permissions to map_ptr api
2015-11-28 11:28:31 -08:00
6d21ebabea
implement host-controlled memory mapping for #261
2015-11-27 23:30:36 -08:00
2f297bdd3a
handle some errors properly so avoid exit() during initialization. this fixes issue #237
2015-11-12 01:43:41 +08:00
4127179fe3
fix compilation with capstone next
2015-11-07 16:55:42 +01:00
389bc06b49
Fix crash on 00 opcode.
...
l1_map should be an array of pointers, thus void **
2015-11-06 14:08:12 +02:00
3a36e327ab
support memory redirection, so the issue #217 is fixed
2015-10-27 14:37:03 +08:00
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
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
2b0b4169bc
mips: advance PC for SYSCALL instruction. this fixes issue #157
2015-09-28 10:58:43 +08:00
5055899514
clarify that UC_HOOK_INTR is also for handling syscall events
2015-09-27 11:29:19 +08:00
dc1e9d3626
remove UC_HOOK_*_ALL hook types as they are not for same hook handlers
2015-09-24 23:23:05 +08:00
aa546ba7d6
add UC_HOOK_MEM_ALL macro to hook all kind of memory accesses
2015-09-24 20:59:45 +08:00
2599d41404
add some hooking macros for all kind of memory access events
2015-09-24 19:21:31 +08:00
738b8d89f9
correct instructions for uc_cb_hookmem_t & uc_cb_eventmem_t. this fixes a part of issue #151
2015-09-24 18:50:49 +08:00
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
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
2ef59e5727
Renamed UC_HOOK_MEM_INVALID_[READ/WRITE/FETCH] to
...
UC_HOOK_MEM_[READ/WRITE/FETCH]_INVALID as per aquynh's feedback.
2015-09-23 12:48:13 +07:00
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
75c5904ec1
Makes the hook types consistent, with a single indicator for each of
...
read, write and fetch.
This commit only adds the enum values. The functionality still has to be
updated.
As per issue #111
2015-09-22 12:26:01 +07:00
1638372793
fix small whitespace issue
2015-09-14 20:48:31 -07:00
d4d5631181
updated the sparc.h header so the alignment of certain registers was correct
2015-09-14 20:42:41 -07:00
113245e12a
fix some comments in unicorn.h
2015-09-09 17:00:00 +08:00
39ac1bcb4e
rename UC_ERR_INVAL to UC_ERR_ARG
2015-09-09 16:54:47 +08:00
d7ef204398
rename error codes ERR_MEM_READ, ERR_MEM_WRITE, ERR_MEM_FETCH
2015-09-09 16:25:48 +08:00
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
7a5d790ade
rename UC_MEM_EXE to UC_MEM_FETCH
2015-09-08 12:55:56 +08:00
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
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
84a374e876
Merge remote-tracking branch 'upstream/master' into hook_mem_constants_documentation
2015-09-05 00:41:23 +07:00