5.19
Chuỗi
Những
hàm sau đây được sử dụng để đọc danh sách chuỗi
trong cửa sổ Strings của IDA, mà được dẫn xuất từ
những chuỗi được thấy trong tập tin bị đảo mã hiện
tại. Những hàm bên dưới được định nghĩa trong tập
tin strlist.hpp.
5.19.1
refesh_strlist
Định nghĩa
|
idaman void ida
export
refresh strlist(ea t eal, ea t ea2)
|
Chú giải
|
Làm tươi danh sách chuỗi trong cửa sổ
Strings của IDA. Tìm kiếm giữa hai địa chỉ ea1 và ea2
trong tập tin bị đảo mã hiện tại.
|
Ví dụ
|
#include
<strlist.hpp>
// Refresh the string list. refresh strlist();
|
5.19.2
get_strlist_qty
Định nghĩa
|
idaman size t ida export get strlist qty(void)
|
Chú giải
|
Returns the number
of strings found in the currently disassembled file(s).
Trả về số lượng chuỗi được tìm
thấy trong tập tin được đảo mã hiện tại.
|
Ví dụ
|
#include
<strlist.hpp>
msg("%d strings were found in the
currently open file(s)", get strlist qty());
|
5.19.3
get_strlist_item
Định nghĩa
|
idaman bool ida
export
get strlist item(int n, string info t *si)
|
Chú giải
|
Điền vào *si thông tin về chuỗi thứ
n. Trả về false nếu không có chuỗi có thứ tự n.
|
Ví dụ
|
#include
<strlist.hpp> int largest = 0;
// Loop through all
strings, finding the largest one. for (int i = 0; i < get
strlist qty(); i++) { string info t si; get strlist item(i, &si);
if (si.length > largest) largest = si.length;
}
msg("Largest string is %d characters
long.\n", largest);
|
5.20
Misc
Những
hàm sau đây không phù hợp với bất cứ danh mục nào.
Tập tin tiêu đề mà chúng được định nghĩa được đề
cập đến trong mỗi trường hợp.
5.20.1
tag_remove
Định nghĩa
|
idaman int ida
export
tag remove(const char *instr, char *buf, int
bufsize)
|
Chú giải
|
Loại bỏ bất cứ đánh dấu màu sắc
nào trong chuỗi *instr, và lưu kết quả vào vùng nhớ
*buf, được giới hạn bởi bufsize. Cung cấp con trỏ
giống nhau cho *instr và *buf cũng được hỗ trợ, trong
trường hợp này bufsize là 0. Hàm này được định
nghĩa trong lines.hpp.
|
Ví dụ
|
#include <ua.hpp>
// For ua functions #include <lines.hpp>
// Get the entry
point address ea t addr = inf.startIP;
// Fill cmd with
information about the instruction // at the entry point decode
insn(addr);
// Loop through each
operand (until one of o void type // is reached), displaying the
operand text. for (int i = 0; cmd.Operands[i].type != o void; i++)
{ char op[MAXSTR]; _ ua outop(addr, op, sizeof(op)-1, i);
// Strip the colour
tags off tag remove(op, op, 0); msg("Operand %d: %s\n",
i, op);
}
|
5.20.2
open_url
Định nghĩa
|
inline void
open url(const char *url)
|
Chú giải
|
Mở đường dẫn *url trong trình duyệt
web mặc định của hệ thống. Hàm này được định
nghĩa trong kernwin.hpp.
|
Ví dụ
|
#include
<kernwin.hpp>
open
url("http://www.binarypool.com/idapluginwriting/");
|
5.20.3
call_system
Định nghĩa
|
idaman int ida
export
call system(const char *command)
|
Chú giải
|
Chạy lệnh được truyền vào bởi
chuỗi *command, từ dòng lệnh hệ thống. Hàm này được
định nghĩa trong diskio.hpp.
|
Ví dụ
|
#include
<diskio.hpp>
// Run notepad
call system("notepad.exe");
|
5.20.4
ida_dir
Định nghĩa
|
idaman const char *ida export idadir(const char
*subdir)
|
Chú giải
|
Trả về đường
dẫn của IDA nếu giá trị *subdir là NULL, nếu *subdir
không NULL, thư mục con của IDA sẽ được trở về.
Những thư mục con có thể được liệt kê được khai
báo trong diskio.hpp.
#define CFG SUBDIR
"cfg"
#define IDC SUBDIR
"idc"
#define IDS SUBDIR
"ids"
#define IDP SUBDIR
"procs"
#define LDR SUBDIR
"loaders"
#define SIG SUBDIR
"sig"
#define TIL SUBDIR
"til"
#define PLG SUBDIR
"plugins"
Hàm này được định nghĩa trong
diskio.hpp.
|
Ví dụ
|
#include
<diskio.hpp>
msg("IDA directory is %s and your plug-in
lives in %s.\n", idadir(NULL), idadir(PLG SUBDIR));
|
5.20.5
getdspace
Định nghĩa
|
idaman uint64 ida export getdspace(const char
*path)
|
Chú giải
|
Trả về tổng dung lượng đĩa trong ổ
dịa được đại diện bởi *path. Hàm này có thể được
tìm thấy ở diskio.hpp
|
Ví dụ
|
#include <diskio.hpp>
|
5.20.6
str2ea
Định nghĩa
|
idaman bool ida
export
str2ea(const char *str, ea t *ea ptr, ea t
screenEA)
|
Chú giải
|
Chuyển một chuỗi *str thành địa chỉ
và lưu nó vào con trỏ *ea nếu nó tồn tại trong tập
tin bị đảo mã hiện tại, trả về true nếu thành
công. Hàm này được định nghĩa trong kernwin.hpp.
|
Ví dụ
|
#include
<kernwin.hpp>
// Just some random
address char *addr s = "010100F0"; ea t addr;
// If 010100F0 is in
the binary, print the address if (str2ea(addr s, &addr, 0))
msg("Address: %a\n", addr);
|
5.20.7
ea2str
Định nghĩa
|
idaman char *ida
export
ea2str(ea t ea, char *buf, int bufsize)
|
Chú giải
|
Chuyển địa chỉ ea thành chuỗi, và
lưu nó vào vùng đệm ký tự *buf, giới hạn bởi
bufsize. Định dạng của chuỗi được kết xuất là
tên đoạn : địa chỉ, ví dụ, cung cấp địa chỉ
0100102A từ đoạn .text sẽ cho ra .text:0100102A. Hàm này
được định nghĩa trong kernwin.hpp.
|
Ví dụ
|
#include
<kernwin.hpp>
ea t addr = get
screen ea(); char addr s[MAXSTR]; _
// Convert addr into addr s ea2str(addr, addr
s, sizeof(addr s)-1); msg("Address: %s\n", addr s);
|
5.20.8
get_nice_coloured_name
Định nghĩa
|
idaman ssize t ida
export
get nice colored name(ea t ea, char *buf, size
t bufsize, int flags=0);
|
Chú giải
|
Lấy tên được định dạng của địa
chỉ ea, lưu nó vào vùng đệm ký tự *buf giới hạn
bởi kích thước bufsize. Nếu cờ được đặt là
GNCN_NOCOLOR, không có mã màu được thêm vào tên. Nếu
địa chỉ ea không có tên, địa chỉ của nó sẽ được
trả về dưới dạng “có thể đọc được”, như
start + 56 hoặc .text:0100210. Hàm này được định nghĩa
trong name.hpp.
|
Ví dụ
|
#include
<kernwin.hpp> // For get screen ea() definition #include
<name.hpp>
char buf[MAXSTR];
// Get the nicely
formatted name/address of the // current cursor position. No
colour codes will // be included.
get nice colored
name(get screen ea(),
buf,
sizeof(buf)-1,
GNCN NOCOLOR);
msg("Name at cursor position: %s\n",
buf);
|
No comments:
Post a Comment