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