Chris Eagle
1c73753507
don't try to override native C++ data type
2016-06-06 19:05:05 -07:00
xorstream
6ca8ba16fc
Changed bool typedef from int to unsigned char.
2016-05-10 23:53:39 +10:00
xorstream
544942cc64
Added MSVC bindings for uc_reg_write_batch() and uc_reg_read_batch() and fixed UC_HOOK_INSN hooking.
2016-05-10 23:29:11 +10:00
Nguyen Anh Quynh
c45f791dd2
delete include/unicorn/platform.h
2016-04-30 08:41:12 +08:00
Ryan Hileman
acd88856e1
add batched reg access
2016-04-04 20:51:38 -07:00
Adrian Herrera
fd825fb800
Added stdint include to x86.h
...
x86.h referenced types defined in stdint.h (e.g. uint16_t, etc.), but didn't
actually include stdint.h
2016-04-01 23:38:32 +11:00
feliam
23b3f651f9
Indentation
2016-03-10 07:45:36 -03:00
feliam
0a3799eada
FPU control word and tags
2016-03-09 19:14:33 -03:00
Spl3en
338fb0e81b
Fix a typo in uc_hook_add documentation.
2016-03-07 17:52:08 +01:00
Nicolas PLANEL
1087ba9dea
[query] add UC_QUERY_PAGE_SIZE uc_query helper
...
Return the current page size used by the current arch.
Useful to call uc_mem_map() with memory/size aligned.
Signed-off-by: Nicolas PLANEL <nplanel@redhat.com>
2016-03-04 15:54:24 +11:00
Nguyen Anh Quynh
871cdb692f
Merge branch 'hook'
2016-02-17 09:37:17 +08:00
Nguyen Anh Quynh
f267ff2b17
Update unicorn.h
...
remove an outdated line on UC_QUERY_MODE
2016-02-15 10:27:20 +08:00
Nguyen Anh Quynh
0822c0af85
bump API version to 1.0
2016-02-11 08:05:15 +08:00
Nguyen Anh Quynh
a7a1dcc661
uc_hook_add(): add begin & end arguments for all hook types. also update Python binding after this change
2016-02-11 08:02:13 +08:00
Nguyen Anh Quynh
ed77cacbf3
cosmetic change for uc_x86_mmr
2016-02-06 17:34:19 +08:00
Chris Eagle
49b9f4f8da
uc_x86_mmr type available in qemu/target-i386/unicorn.c
2016-02-04 19:09:41 -08:00
Chris Eagle
59f7bf3be7
file perms
2016-02-04 16:48:27 -08:00
Chris Eagle
e59382e030
updated gdtr/idtr/ldtr/tr read/write code
2016-02-04 16:44:52 -08:00
Chris Eagle
9977054a15
add support for setting gdtr, idtr, ldtr, and tr programatically
2016-02-03 09:22:29 -08:00
Nguyen Anh Quynh
a2ef52172c
add combination hook type UC_HOOK_MEM_VALID to intercept all valid memory access
2016-01-31 13:12:34 +08:00
xorstream
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
Nguyen Anh Quynh
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
Nguyen Anh Quynh
4dbad9aa9b
add new API uc_query() to query internal status of emulator at runtime
2016-01-23 17:14:44 +08:00
Nguyen Anh Quynh
d79925f477
sparc: add SPARC32 mode (= UC_MODE_32)
2016-01-23 10:48:18 +08:00
xorstream
288ef1df0a
Fix uc_mode usage in source code
2016-01-23 12:10:12 +11:00
xorstream
8763d426c2
Fix uc_mode usage in source code
2016-01-23 12:08:49 +11:00
xorstream
82b7599e15
Sorted uc_modes by CPU and added masks
2016-01-23 09:47:29 +11:00
xorstream
b48fbf7520
Sorted uc_modes by CPU and added masks
2016-01-23 00:55:31 +11:00
xorstream
789971eeb9
Sorted uc_modes by CPU and added masks
2016-01-23 00:53:34 +11:00
Nguyen Anh Quynh
f5fa84d985
consistent style for docs of unicorn.h
2016-01-16 18:31:24 +08:00
Nguyen Anh Quynh
978f671fa5
fix some comments in unicorn.h
2016-01-16 18:17:13 +08:00
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
Ryan Hileman
230cbd5330
add permissions to map_ptr api
2015-11-28 11:28:31 -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
Nico01
4127179fe3
fix compilation with capstone next
2015-11-07 16:55:42 +01: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
5055899514
clarify that UC_HOOK_INTR is also for handling syscall events
2015-09-27 11:29:19 +08:00
Nguyen Anh Quynh
dc1e9d3626
remove UC_HOOK_*_ALL hook types as they are not for same hook handlers
2015-09-24 23:23:05 +08:00
Nguyen Anh Quynh
aa546ba7d6
add UC_HOOK_MEM_ALL macro to hook all kind of memory accesses
2015-09-24 20:59:45 +08:00
Nguyen Anh Quynh
2599d41404
add some hooking macros for all kind of memory access events
2015-09-24 19:21:31 +08:00
Nguyen Anh Quynh
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
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
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
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
Sean Heelan
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
mothran
1638372793
fix small whitespace issue
2015-09-14 20:48:31 -07:00
mothran
d4d5631181
updated the sparc.h header so the alignment of certain registers was correct
2015-09-14 20:42:41 -07:00
Nguyen Anh Quynh
113245e12a
fix some comments in unicorn.h
2015-09-09 17:00:00 +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
Nguyen Anh Quynh
7a5d790ade
rename UC_MEM_EXE to UC_MEM_FETCH
2015-09-08 12:55:56 +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
Sean Heelan
41846af60a
Add clarity to the documentation of the UC_HOOK_MEM constants.
...
The previous comments weren't explicit, in all cases, as to what the difference
(mapped versus unmapped) between the access types was.
2015-09-05 00:35:00 +07: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
0962c4822b
cleanup & update bindings' constants
2015-09-04 09:43:31 +08:00
Nguyen Anh Quynh
6ca85a72ed
simplify uc_mem_protect() & uc_mem_unmap()
2015-09-04 01:02:38 +08:00
Jonathon Reinhart
5b62d436a9
change public APIs to use ucengine
...
See #52 .
2015-09-02 22:00:09 -04: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
Chris Eagle
2c4f3769d4
clean up mem_protect related constants and error codes
2015-09-01 12:10:09 -07:00
Chris Eagle
658e399776
clean up mem_protect related constants
2015-08-31 19:08:48 -07:00
Chris Eagle
24dde77ec2
fix uc_mem_type comments
2015-08-30 20:38:38 -07:00
Jonathon Reinhart
3bd705a060
Merge remote-tracking branch 'upstream/master' into change-handle-based-api
2015-08-30 00:23:51 -04:00
Chris Eagle
6beb1b8a13
intermediate commit, working unmap of complete blocks, still need sub-blocks, and cross block
2015-08-29 21:17:30 -07:00
Chris Eagle
160033c36c
Merge branch 'master' into mem_map_ex_cse
2015-08-29 00:23:21 -07:00
Nguyen Anh Quynh
6d8e5b32f4
Merge pull request #72 from cseagle/java_dev
...
Java dev
2015-08-29 15:09:16 +08:00
Chris Eagle
592cbc6eaf
conflict resolution with merge master
2015-08-28 23:51:56 -07:00
Nguyen Anh Quynh
d725e5fee9
improve instruction for uc_mem_map() in unicorn.h
2015-08-29 14:00:31 +08:00
Chris Eagle
e29cdbe867
File permissions
2015-08-28 20:56:16 -07:00
Chris Eagle
1d6bd17a13
Update java bindings for new version of uc_mem_map
2015-08-28 20:54:05 -07:00
Chris Eagle
94ac0f02e6
file permissions changes
2015-08-28 20:03:36 -07:00
Chris Eagle
65787d415a
rename uc_mem_map_ex to uc_mem_map and all associated changes
2015-08-28 20:02:21 -07:00
Chris Eagle
eab6167241
Merge branch 'master' into mem_map_ex_cse
2015-08-28 19:00:39 -07:00
Chris Eagle
9ba59e4988
Step one towards uc_mem_protect, uc_mem_unmap, and support for UC_PROT_EXEC and NX regions
2015-08-28 18:59:45 -07:00
Nguyen Anh Quynh
ff46b91a80
chmod -x some more
2015-08-29 09:30:31 +08:00
Chris Eagle
3452b47f7c
Add code to handle non-readable memory
2015-08-28 03:42:25 -07:00
Chris Eagle
adc254cc74
Roll back uc_mem_protect changes
2015-08-28 01:37:49 -07:00
Chris Eagle
71ddad9474
Doc cleanup
2015-08-28 00:30:50 -07:00
Chris Eagle
9530b2daff
Remove MemoryBlock struct by consolidating in MemoryRegion. add new API uc_mem_protect. Add regress/mem_protect.c. Drop UC_PROT_EXEC for time being
2015-08-27 23:19:32 -07:00
Chris Eagle
686acb7e6e
Detect all occurences of write to read only page. Add callback capability on write to read only. Add new error type UC_ERR_MEM_WRITE_RO and new access type UC_MEM_WRITE_RO for use in callback
2015-08-27 18:03:17 -07:00
Chris Eagle
00944b6cde
Add ability to mark memory are read only. Add new API uc_mem_map_ex to allow permissions to be passed. Change MemoryBlock to track created MemoryRegions. Add regress/ro_mem_test.c
2015-08-26 13:29:54 -07:00
Jonathon Reinhart
20bdbf638d
change uc_hook_del() to take hook handle by value
2015-08-26 09:02:17 -04:00
Jonathon Reinhart
ad59de2b51
remove UC_ERR_UCH
...
not used anymore
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
24caaa07de
change uch to uc_hook_h for hook handles
2015-08-26 09:02:16 -04:00
Jonathon Reinhart
4ea3a3ebbf
change uch to uc_struct (header files)
2015-08-26 08:20:44 -04:00
Chris Eagle
03e8b28d71
First cut at cleaning up uc_mem_map, eliminate map_begin and map_end, move tracking inside uc struct
2015-08-25 21:52:18 -07:00
Nguyen Anh Quynh
70cdbf8c69
uc_mem_map(): enforce address & size to be aligned to 4KB. this fixes bunch of regress tests in regress/
2015-08-26 11:29:14 +08:00
Nguyen Anh Quynh
39d3856871
when block size is unknown because the translation cache is full, assign it value 0
2015-08-25 16:10:05 +08:00
Jonathon Reinhart
9163bba812
restore mode of .[ch] files
...
These were marked as executable in 5c3b6819
, likely due to a Windows
filesystem being involved. This can be avoided:
http://stackoverflow.com/q/1580596/119527
2015-08-24 21:19:12 -04:00
Chris Eagle
5c3b681945
Add const to uc_reg_write and derivitives
2015-08-24 09:42:50 -07:00
pancake
c5d99777f4
Use const in uc_mem_write and derivates
2015-08-24 17:02:14 +02:00
Nguyen Anh Quynh
60099d1d69
x86: add back 2 registers X86_REG_FCW & X86_REG_FPIP
2015-08-24 13:58:52 +08:00
mothran
2516de7ed8
renamed m68k enum constants
2015-08-23 21:56:24 -07:00