Commit Graph

333 Commits

Author SHA1 Message Date
elias.bachaalany@gmail.com
fbb5bfabd6 IDA Pro 6.6 support
What's new:
- added the decompiler bindings
- Expose simpleline_t type to IDAPython. That lets the user to set the bgcolor & text for each line in the decompilation.
- Wrapped new functions from the IDA SDK

Various fixes:
for non-code locations, idc.GetOpnd() would create instructions instead of returning empty result
- idb_event::area_cmt_changed was never received in IDB_Hooks (and descendants)
- idb_event::ti_changed, and idb_event::op_ti_changed notifications were not accessible in IDAPython
- op_t.value was truncated to 32 bits under IDA64.
- print_tinfo() wouldn't return a valid string.
- readsel2() was not usable.
- read_selection() was buggy for 64-bit programs.
- StructMembers() considered holes in structures, and didn't properly iterate through the whole structure definition.
- There was no way to call calc_switch_cases() from IDAPython.
- when using multi-select/multi-edit choosers, erroneous event codes could be sent at beginning & end of batch deletion of lines.
- When, in a PluginForm#OnCreate, the layout of IDA was requested to change (for example by starting a debugging session), that PluginForm could be deleted and create an access violation.
- tinfo_t objects created from IDAPython could cause an assertion failure at exit time.
- Usage of IDAPython's DropdownListControl was broken.
2014-07-04 22:02:42 +00:00
elias.bachaalany@gmail.com
1c6752de40 - Fixed idaapi.read_selection() 2014-04-08 00:11:43 +00:00
elias.bachaalany@gmail.com
866e631dc7 Added IDA Pro 6.1 SP1 changes (thanks to Arnaud from Hex-Rays) 2014-02-04 02:31:52 +00:00
elias.bachaalany@gmail.com
78c79f85b9 IDA Pro 6.5 support
What's new:
- Proper multi-threaded support 
- Better PyObject reference counting with ref_t and newref_t helper classes
- Improved the pywraps/deployment script
- Added IDAViewWrapper class and example
- Added idc.GetDisasmEx()
- Added idc.AddSegEx()
- Added idc.GetLocalTinfo()
- Added idc.ApplyType()
- Updated type information implementation
- Introduced the idaapi.require() - see http://www.hexblog.com/?p=749
- set REMOVE_CWD_SYS_PATH=1 by default in python.cfg (remove current directory from the import search path).

Various bugfixes:
- fixed various memory leaks
- asklong/askaddr/asksel (and corresponding idc.py functions) were returning results truncated to 32 bits in IDA64
- fix wrong documentation for idc.SizeOf
- GetFloat/GetDouble functions did not take into account endianness of the processor
- idaapi.NO_PROCESS was not defined, and was causing GetProcessPid() to fail
- idc.py: insert escape characters to string parameter when call Eval()
- idc.SaveFile/savefile were always overwriting an existing file instead of writing only the new data
- PluginForm.Close() wasn't passing its arguments to the delegate function, resulting in an error.
2013-12-30 01:34:23 +00:00
elias.bachaalany@gmail.com
c88a77e809 Contributed by EiNSTeiN_:
- added support for 'long' addresses 
- updated copyright notice in hexrays.i
- added methods to remove or insert elements in the qlist<cinsn_t> list
- added support for ctree_visitor_t / ctree_parentee_t / cfunc_parentee_t / user_lvar_visitor_t
- updated vds3 sample
- added vds4 and vds7 python samples (ported from their C++ counter parts)
2013-07-16 23:09:33 +00:00
elias.bachaalany@gmail.com
7eb6d04c6e Contributed by EiNSTeiN_:
- Fixed compilation error on Linux
- Minor bugfix in hexrays.i
- Added two more samples: vds3.py and vds_xrefs.py
2013-07-05 23:12:04 +00:00
elias.bachaalany@gmail.com
db58b31711 - Experimental: integrated Hex-Rays Decompiler bindings that were contributed by EiNSTeiN:
https://github.com/EiNSTeiN-/hexrays-python
- Added '--with-hexrays' switch to the build script so it wrap Hex-Rays Decompiler API
- Added one Hex-Rays decompiler sample: vds1.py
2013-07-03 01:40:54 +00:00
elias.bachaalany@gmail.com
ce06fdd7d2 Added VS2012 solution files 2013-06-28 22:32:32 +00:00
elias.bachaalany@gmail.com
4e295155bb Fixed compilation bugs:
- Fixed small mismatch between SWIG define and CL defines (/DNO_OBSOLETE_FUNCS)
- Use print_type2() instead of the deprecated function print_type()
2013-06-28 01:32:56 +00:00
elias.bachaalany@gmail.com
21cd5a95eb - applied patchs for IDA 6.4 SP from Hex-Rays
- fixed idc.CommentEx()
- minor mods
2013-03-08 19:33:51 +00:00
elias.bachaalany@gmail.com
223e4a5268 Applied patches from Hex-Rays:
- added MakeYword
- wrap obsolete IDA API functions too, so that old scripts continue to work
- added debugger trace related functions in idc.py
BUGFIX: IDAPython would fail with a cryptic error message if there was no free space on the current disk
BUGFIX: site-packages directory was missing from sys.path
BUGFIX: functions for working with additional lines (LineA/LineB etc) were broken
BUGFIX: GetFixup* functions from idc.py were broken
BUGFIX: IDA could not start if another python27.dll was present in PATH and importing site.py for that Python installation failed
BUGFIX: SaveBase() was broken
BUGFIX: IDAPython would fail with a cryptic error message if there was no free space on the current disk
BUGFIX: IDAPython: site-packages directory was missing from sys.path
BUGFIX: IDAPython: functions for working with additional lines (LineA/LineB etc) were broken
BUGFIX: IDAPython: GetFixup* functions from idc.py were broken
BUGFIX: IDAPython: IDA could not start if another python27.dll was present in PATH and importing site.py for that Python installation failed
BUGFIX: IDAPython: SaveBase() was broken
BUGFIX: Dbg/Idp hooks automatically unhook when hook object is not referenced anymore

note: these patches are already applied in IDAPython that comes with IDA Pro 6.4
2013-03-06 07:44:10 +00:00
elias.bachaalany
69d5c83d28 - IDA Pro 6.3 support
- The Functions() generator function now accepts function tail start parameter
- Added into idc.py: DbgRead/DbgWrite/SetTargetAssembler and stack pointer related functions
- Wrapped more type info related functions
2012-06-24 20:49:11 +00:00
elias.bachaalany@gmail.com
4d21b10dc4 removed dead code 2012-04-04 07:45:15 +00:00
skochinsky@gmail.com
0282e67982 IDAPython 1.5.4
- fix for Python autorun script vulnerability reported by Greg MacManus
- remove current directory from sys.path during initialization
2012-03-26 13:39:09 +00:00
elias.bachaalany@gmail.com
06f0ff19d5 bugfixes:
- op_t.is_reg() was buggy
- build.py: build.py was putting duplicate files into the .zip
- added backed wrapped version of get_ascii_contents()
- misc changes...
2011-12-02 15:42:36 +00:00
elias.bachaalany@gmail.com
930d7cbcd4 added PyWraps sources. This will facilitate deployment, development and debugging of IDAPython additions 2011-12-02 15:40:11 +00:00
skochinsky@gmail.com
1258fab948 IDAPython 1.5.3
- IDA Pro 6.2 support
- added set_idc_func_ex(): it is now possible to add new IDC functions using Python
- added visit_patched_bytes() (see ex_patch.py)
- added support for the multiline text input control in the Form class
- added support for the editable/readonly dropdown list control in the Form class
- added execute_sync() to register a function call into the UI message queue
- added execute_ui_requests() / check ex_uirequests.py
- added add_hotkey() / del_hotkey() to bind Python methods to hotkeys
- added register_timer()/unregister_timer(). Check ex_timer.py
- added the IDC (Arrays) netnode manipulation layer into idc.py
- added idautils.Structs() and StructMembers() generator functions
- removed the "Run Python Statement" menu item. IDA now has a unified dialog. 
  Use RunPlugin("python", 0) to invoke it manually.
- better error messages for script plugins, loaders and processor modules
- bugfix: Dbg_Hooks.dbg_run_to() was receiving wrong input
- bugfix: A few Enum related functions were not properly working in idc.py
- bugfix: GetIdaDirectory() and GetProcessName() were broken in idc.py
- bugfix: idaapi.get_item_head() / idc.ItemHead() were not working
2011-10-14 14:24:38 +00:00
elias.bachaalany@gmail.com
96cd02db6c - fixed idc.ItemHead()
- update some IDC functions documentation
2011-08-08 15:42:25 +00:00
elias.bachaalany@gmail.com
7bd77d534c vuln bugfix: check for swig_runtime_dataN.py was not done properly (MSVR-11-0084)
The bug is due to the following faulty line: http://code.google.com/p/idapython/source/browse/tags/build-1.5.1/swig/idaapi.i#611
2011-07-27 08:51:29 +00:00
elias.bachaalany@gmail.com
8413f9f791 - GetIdaDirectory() was broken
- some function comments were wrong
- other fixes
2011-07-04 13:19:36 +00:00
elias.bachaalany
f5ec434bf7 IDAPython 1.5.2
- added ui_term/ui_save/ui_saved/ui_get_ea_hint UI notifications
- added ph_get_operand_info() to retrieve operand information while debugging
- added PteDump.py script
- some code refactoring
- bugfix: idaapi.netnode.getblob() was limited to MAXSPECSIZE
- bugfix: idc.GetString()/idaapi.get_ascii_contents()/idautils.Strings() were limited to MAXSTR string length
- bugfix: idaapi.del_menu_item() was failing to delete some menu items
- bugfix: dbg_bpt was called instead of dbg_trace for a DBG_Hooks class implementation (old bug from 0.9.x)
- bugfix: Form.GetControlValue() was not working with numeric controls
- bugfix: SetBptCnd() was broken
- bugfix: idaapi.get_func_cmt() was memory leaking
2011-06-10 15:21:21 +00:00
elias.bachaalany
88aa875c55 bugfixes:
- ph_get_operand_info() would crash IDA sometimes
- idc.SetBptCond() was broken
- idc.GetFunctionCmt() was memory leaking
- Form.GetFieldValue() was failing for numeric controls
- Exceptions originating from the director classes will be displayed

And other minor mods...
2011-06-10 14:54:03 +00:00
elias.bachaalany
c29e1ef2da - added ph_get_operand_info() 2011-05-23 15:54:27 +00:00
elias.bachaalany
2327aada40 bugfix: dbg_bpt was called instead of dbg_trace for a DBG_Hooks class implementation
(old bug from version < 1.0)
2011-05-23 13:01:22 +00:00
elias.bachaalany
7e63ea0747 - bugfix: idaapi.del_menu_item() was failing to delete some menu items 2011-05-19 15:06:49 +00:00
elias.bachaalany
a12974b66c - bugfix: idc.GetString()/idaapi.get_ascii_contents()/idautils.Strings() were limited to MAXSTR string length
- minor mods
2011-05-19 15:06:31 +00:00
elias.bachaalany
c94f5c10bb bugfix: IDAPython: get_blob() was returning a buffer with at most MAXSPECSIZE bytes 2011-05-19 15:03:01 +00:00
elias.bachaalany
a52b90c771 bugfix: Previous implementation set_script_timeout() was causing the script wait dialog box to open and never close upon the invocation of callbacks (add_menu_item callback or other callbacks) that take longer than the timeout value. 2011-05-09 10:29:08 +00:00
elias.bachaalany
7179b2c654 - Choose2.Show(modal=True) was broken 2011-05-09 10:22:44 +00:00
elias.bachaalany
50b66d0264 - added VirusTotal script. Check http://www.hexblog.com/?p=324 2011-05-09 10:21:32 +00:00
elias.bachaalany
47f7f2e48b forgot to add python.cfg to SVN 2011-04-21 14:28:37 +00:00
elias.bachaalany
8375368d6d IDAPython 1.5.1
- Introduced the CLI '?' pseudo-command to retrieve doc strings
- Introduced the CLI '!' pseudo-command to shell execute a command
- Added IDP/assemble notification event
- bugfix: High 64 bit addresses were not parsed correctly in IDA64
- bugfix: AskUsingForm() C function was not wrapped by SWIG
- NextHead()/PrevHead() have optional 2nd parameter now
2011-04-21 14:23:46 +00:00
elias.bachaalany
58a002ce5b bugfix: High 64 bit addresses were not parsed correctly in IDA64 2011-04-18 16:14:58 +00:00
elias.bachaalany
109158fabb - IDA Pro 6.1 support
- Added AskUsingForm() with embedded forms support (check ex_askusingform.py example and formchooser.py in the SDK)
- Added idautils.DecodePreviousInstruction() / DecodePrecedingInstruction()
- Added idc.BeginTypeUpdating() / EndTypeUpdating() for fast batch type update operations
- Added more IDP callbacks
- Added UI_Hooks with a few notification events
- Added idaapi.process_ui_action() / idc.ProcessUiAction()
- Added netnode.index() to get netnode number
- Better handling of ea_t values with bitwise negation
- Execute statement hotkey (Ctrl-F3), script timeout, and other options are now configurable with Python.cfg
- bugfix: idaapi.msg() / error() and warning() so they don't accept vararg
- bugfix: processor_t.id constants were incorrect
- bugfix: get_debug_names() was broken with IDA64
- Various bugfixes
2011-04-18 16:07:00 +00:00
elias.bachaalany
63b22d00d5 - Fixed issue 59
- Fixed idaapi.msg() / error() and warning() so they don't accept vararg
- Fixed processor_t.id constants
- idaapi.BasicBlock and FlowChart are now new-style classes
2010-12-17 16:50:35 +00:00
ero.carrera
1bd58bda60 Fixed the docstring of DataRefsFrom/To. The example was copy-pasted from the CodeRefs* functions and included the "flow" argument. 2010-11-29 15:19:24 +00:00
elias.bachaalany
197a94f5d7 Added PySide and PyQt examples 2010-11-10 14:05:29 +00:00
elias.bachaalany
ac5d88a83b IDAPython 1.4.3:
- IDA 6.0 support
- Python CLI now prints expression evaluation result (no need to use print())
- Changed Alt-8 to Ctrl-F3 (because it conflicts with window switching key Alt+n)
- Added get_highlighted_identifier()
- Added PluginForm class to allow UI development with either PyQt4 or PySide
- Added idautils.Entries() to enumerate entrypoints
- idc / AddConst() was broken
- Minor fixes
2010-11-10 13:58:08 +00:00
elias.bachaalany
1d2f1d1f07 Committed last updates to IDAPython 1.4.2 2010-10-07 09:47:04 +00:00
ero.carrera@gmail.com
faf5063818 Fixed a bug in GetIdbPath() when working in an IDA instance that has dealt with more than one IDB.
idaapi.cvar.database_idb seems to point to a realloc'ed buffer. When IDA is working on an IDB stored in a directory with a long path and a second IDB with a shorter path is loaded, the buffer will be overwritten with the new path to the IDB, which will end in "\x00" and the leftovers of the older, longer path will follow.
The problem with GetIdbPath() is that it returns the whole bufer, NULL and "leftovers" included, which leads to trouble in Python. Specifically some functions like os.path.splitext which will look for the extension starting from the end of the buffer and will return an invalid split.
The patch simply post-processes the contents of idaapi.cvar.database_idb returning a Python string with all characters up to the "\x00"
2010-09-23 18:57:37 +00:00
elias.bachaalany
80896bc1d9 Minor modifications:
- function documentation update
- removed some white spaces
2010-09-17 12:06:30 +00:00
elias.bachaalany
36c814331a Some Appcall methods would fail if passed addresses with value zero 2010-09-17 12:04:27 +00:00
elias.bachaalany
0f64f33981 Command completion was broken after last changes 2010-09-17 12:03:24 +00:00
elias.bachaalany
930b333d3b bugfix: idaapi.enable_extlang_python() could not be called from init.py 2010-09-11 09:34:14 +00:00
elias.bachaalany
2d763844ed idc.py: added GetManyBytes() and ItemHead() 2010-09-11 08:47:45 +00:00
elias.bachaalany
40d46c34a9 command completion will propose '(' for callables and '[' for iterables 2010-08-17 12:32:59 +00:00
elias.bachaalany
67c94b2f02 idaapi.dbg_get_registers() was crashing with registers that had a custom format 2010-08-17 12:31:36 +00:00
elias.bachaalany
2c33ce00c5 fixed issue 55 2010-08-14 15:43:09 +00:00
elias.bachaalany
4867b405a9 idc.py: Til2Idb() was broken 2010-08-10 11:45:36 +00:00
elias.bachaalany
f216eb9a6d - IDAPython 1.4.2: should work now with Python 2.7
- Hide the Python plugin from the plugins menu (it already installs the run statement functionality in the File menu)
2010-08-10 11:44:59 +00:00