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...
This commit is contained in:
elias.bachaalany@gmail.com 2011-12-02 15:42:36 +00:00
parent 930d7cbcd4
commit 06f0ff19d5
5 changed files with 31 additions and 3 deletions

View File

@ -3,6 +3,7 @@ Please see http://code.google.com/p/idapython/source/list for a detailed list of
Changes from version 1.5.2 to 1.5.3 Changes from version 1.5.2 to 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 set_idc_func_ex(): it is now possible to add new IDC functions using Python
- added visit_patched_bytes() (see ex_patch.py) - added visit_patched_bytes() (see ex_patch.py)
- added support for the multiline text input control in the Form class - added support for the multiline text input control in the Form class
@ -13,7 +14,7 @@ Changes from version 1.5.2 to 1.5.3
- added register_timer()/unregister_timer(). Check ex_timer.py - added register_timer()/unregister_timer(). Check ex_timer.py
- added the IDC (Arrays) netnode manipulation layer into idc.py - added the IDC (Arrays) netnode manipulation layer into idc.py
- added idautils.Structs() and StructMembers() generator functions - added idautils.Structs() and StructMembers() generator functions
- removed the "Run Python Statment" menu item. IDA now has a unified dialog. - removed the "Run Python Statement" menu item. IDA now has a unified dialog.
Use RunPlugin("python", 0) to invoke it manually. Use RunPlugin("python", 0) to invoke it manually.
- better error messages for script plugins, loaders and processor modules - better error messages for script plugins, loaders and processor modules
- bugfix: Dbg_Hooks.dbg_run_to() was receiving wrong input - bugfix: Dbg_Hooks.dbg_run_to() was receiving wrong input

View File

@ -418,7 +418,8 @@ def build_binary_package(ea64, nukeold):
binmanifest = [] binmanifest = []
if nukeold: if nukeold:
binmanifest.extend(BINDIST_MANIFEST) binmanifest.extend(BINDIST_MANIFEST)
binmanifest.extend([(x, "python") for x in "python/init.py", "python/idc.py", "python/idautils.py", "idaapi.py"]) if not ea64 or nukeold:
binmanifest.extend([(x, "python") for x in "python/init.py", "python/idc.py", "python/idautils.py", "idaapi.py"])
binmanifest.append((plugin_name, "plugins")) binmanifest.append((plugin_name, "plugins"))
build_distribution(binmanifest, BINDISTDIR, ea64, nukeold) build_distribution(binmanifest, BINDISTDIR, ea64, nukeold)

View File

@ -97,6 +97,7 @@
%rename (unregister_custom_data_type) py_unregister_custom_data_type; %rename (unregister_custom_data_type) py_unregister_custom_data_type;
%rename (register_custom_data_type) py_register_custom_data_type; %rename (register_custom_data_type) py_register_custom_data_type;
%rename (get_many_bytes) py_get_many_bytes; %rename (get_many_bytes) py_get_many_bytes;
%rename (get_ascii_contents) py_get_ascii_contents;
%rename (get_ascii_contents2) py_get_ascii_contents2; %rename (get_ascii_contents2) py_get_ascii_contents2;
%{ %{
//<code(py_bytes)> //<code(py_bytes)>
@ -800,6 +801,30 @@ static PyObject *py_get_ascii_contents2(
qfree(buf); qfree(buf);
return py_buf; return py_buf;
} }
//---------------------------------------------------------------------------
/*
#<pydoc>
def get_ascii_contents(ea, len, type):
"""
Get contents of ascii string
This function returns the displayed part of the string
It works even if the string has not been created in the database yet.
@param ea: linear address of the string
@param len: length of the string in bytes (including terminating 0)
@param type: type of the string
@return: string contents (not including terminating 0) or None
"""
pass
#</pydoc>
*/
static PyObject *py_get_ascii_contents(
ea_t ea,
size_t len,
int32 type)
{
return py_get_ascii_contents2(ea, len, type);
}

View File

@ -152,6 +152,7 @@
%ignore append_type_name; %ignore append_type_name;
%ignore for_all_types_ex; %ignore for_all_types_ex;
%ignore fix_idb_type;
%ignore pdb2ti; %ignore pdb2ti;
%include "typeinf.hpp" %include "typeinf.hpp"

View File

@ -858,7 +858,7 @@ class op_t(py_clinked_object_t):
def is_reg(self, r): def is_reg(self, r):
"""Checks if the register operand is the given processor register""" """Checks if the register operand is the given processor register"""
return self.type == _idaapi.o_reg and self == r return self.type == o_reg and self.reg == r
def has_reg(self, r): def has_reg(self, r):
"""Checks if the operand accesses the given processor register""" """Checks if the operand accesses the given processor register"""