Commit Graph

158 Commits

Author SHA1 Message Date
Arnaud Diederen 3ba7253294 Backported fixes 2020-01-13 09:23:59 +01:00
Arnaud Diederen f7e52a0c30 Backported fixes 2019-12-09 10:10:26 +01:00
Arnaud Diederen 5958995d66 IDAPython for IDA 7.4 2019-10-15 15:05:24 +02:00
Arnaud Diederen 7a567eecf0 IDAPython for IDA 7.3 2019-06-26 14:37:39 +02:00
Arnaud Diederen afca63f19a Merge pull request #19 from diamondo25/patch-1
Fix comment, using undefined `isStruc` instead of `is_struct`
2019-05-09 10:43:04 +02:00
Erwin Oegema 5282cf8b7c Fix get_local_tinfo return commentary. 2019-03-31 18:27:51 +02:00
Erwin Oegema df0dc87413 Fix comment, using undefined isStruc instead of is_struct 2019-03-26 22:14:01 +01:00
cclauss d7bacfa611 Modernize Python 2 code to get ready for Python 3 2018-12-01 23:58:26 +01:00
Arnaud Diederen 701bb1b44e IDAPython for IDA 7.2 2018-11-06 08:14:17 +01:00
Arnaud Diederen 29ec1ceba2 IDAPython for IDA 7.1 2018-02-28 07:45:21 +01:00
Arnaud Diederen a0be95b7cd IDAPython for IDA 7.0 SP1 2017-12-05 10:37:09 +01:00
Arnaud Diederen d99a893697 IDAPython for IDA 7.0: Initial commit, plus bugfixes up to 2017 Oct, 13th. 2017-10-13 15:08:08 +02:00
Arnaud Diederen 31c7776117 Applied all fixes to IDAPython 6.95, to this date (2017 Jan 17th.) 2017-01-17 12:15:35 +01:00
Arnaud Diederen e22e859a41 Applied all fixes to IDAPython 6.95, to this date (2016 Sept 26th.) 2016-09-26 11:16:26 +02:00
Arnaud Diederen 62ddab8db6 IDAPython for IDA 6.95: Initial commit 2016-08-09 10:01:18 +02:00
Arnaud Diederen c04b70e0e5 Brought in all fixes since Jan 8th, 2016.
Specifically:
 BUGFIX: IDAPython's choose.choose() was broken.
 BUGFIX: calling idaapi.del_hotkey() twice with the same argument could crash IDA.
 BUGFIX: IDAPython's IDC emulation of idc.GetTevRegMem() was not working.
 BUGFIX: IDAPython: execute_ui_requests() could crash IDA.
 BUGFIX: IDAPython: IDP_Hooks instances could prevent the decompiler from working properly
2016-03-09 10:33:06 +01:00
Arnaud Diederen f9f3ccb63b IDA Pro 6.8 support
What's new: https://www.hex-rays.com/products/ida/6.8/index.shtml
2015-04-20 14:26:30 +02:00
elias.bachaalany@gmail.com bbf628d3a3 IDA Pro 6.7 support 2015-02-08 02:59:53 +00:00
elias.bachaalany@gmail.com 49dcdc5ed3 added idautils.IsBatchMode() 2014-11-21 22:12:14 +00:00
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 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 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
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 8413f9f791 - GetIdaDirectory() was broken
- some function comments were wrong
- other fixes
2011-07-04 13:19:36 +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 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 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 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 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 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 2d763844ed idc.py: added GetManyBytes() and ItemHead() 2010-09-11 08:47:45 +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
elias.bachaalany 15a72289f7 fixed issue 54 2010-08-02 14:13:48 +00:00
elias.bachaalany 686e018bdc - updated debughook example
- wrapped print_type
- minor mods to idc.py
- added idautils.GetIdbDir
- added Names()
- added Modules()
- added idautils.peutils_t()
- simplecustviewer_t.GetLineNo() now returns -1 on failure
- idc.py / setregval: it was not possible to set register values > 0x7fffffff
2010-07-27 14:44:31 +00:00
elias.bachaalany 6b0dfd84c0 IDAPython 1.4.1:
- added AUTHORS.txt and changed the banner
- IDAPython_ExecFile() will print script execution errors to the log window too
- added 'ph' into idaapi. It is a replacement for idaapi.cvar.ph
- added runscript to init.py for backward compatibility
- added cli_t support
2010-07-16 12:07:49 +00:00
elias.bachaalany 8495e5205b - renamed pywraps related utility functions to PyW_
- refactored some code
- fixed some potential PyObject leaks
- added cli_t support
2010-07-13 16:43:53 +00:00
elias.bachaalany 4b1c3cd4c4 GetFchunkAttr() is reimplemented using idaapi rather than Eval() and IDC (issue 52) 2010-07-02 16:10:30 +00:00
elias.bachaalany 3a5063330c IDAPython 1.4.0 - IDA Pro 5.7 support 2010-06-28 12:36:40 +00:00
elias.bachaalany 7da6dd916c idd.i: dbg_can_query() was returning false when called from a bpt condition
idc.py: AskStr() was calling idaapi.askstr w/ wrong parameter
2010-05-13 09:36:56 +00:00