5.7
Hàm
Bên
dưới là một số hàm được sử dụng để làm việc
với những khối hàm trong tập tin bị dảo mã hiện tại
trong IDA. Như đối với phân đoạn và khối hàm là các
vùng, và một vài hàm bên dưới đơn giản chỉ là hàm
bao cho các phương thức của lớp areacb_t cho biến toàn
cục funcs. Tất cả đều được định nghĩa trong
funcs.hpp
5.7.1
get_func_qty
Định nghĩa
|
idaman size t ida export get func qty(void)
|
Chú giải
|
Trả về số lượng hàm trong tập tin
bị disassembe hiện tại
|
Ví dụ
|
#include <funcs.hpp>
msg("%d functions in disassembled
file(s).\n", get func qty());
|
5.7.2
get_func
Định nghĩa
|
idaman func t *ida export get func(ea t ea)
|
Chú giải
|
Trả về con trỏ đến cấu trúc func_t
đại diện cho hàm chứa địa chỉ trong ea. Nếu ea
không thuộc về hàm nào cả, giá trị NULL được trả
về. Chỉ có đoạn đầu của hàm là được trả về
(xem phần 4.2.3.2 để biết thêm thông tin về đoạn và
đuôi)
|
Ví dụ
|
#include
<kernwin.hpp> // For get screen ea() definition #include
<funcs.hpp>
// Get the address
of the user's cursor ea t addr = get screen ea(); func t *func =
get func(addr); if (func != NULL) {
msg("Current function starts at %a\n",
func->startEA);
|
5.7.3
getn_func
Định nghĩa
|
idaman func t *ida export getn func(size t n)
|
Chú giải
|
Trả về một con trỏ đến cấu trúc
func_t được đại diện bằng hàm tại thứ tự thứ
n. Giá trị sẽ trả về NULL nếu n là số thứ tự hàm
không tồn tại. Nó cũng sẽ trả về khối hàm đầu
tiên.
|
Ví dụ
|
#include <funcs.hpp>
// Loop through all
functions for (int i = O; i < get func qty(); i++) { func t
*curFunc = getn func(i); msg("Function at: %a\n",
curFunc->startEA);
i
|
5.7.4
get_func_name
Định nghĩa
|
idaman char *ida
export
get func name(ea t ea, char *buf, size t
bufsize)
|
Chú giải
|
Lấy tên của hàm chưa địa chỉ ea, và
lưu nó vào *buf có độ dài giới hạn bởi bufsize. Nó
sẽ trả về con trỏ đến chuỗi *buf hoặc NULL nếu
hàm không có tên
|
Ví dụ
|
#include
<kernwin.hpp> // For get screen ea() definition #include
<funcs.hpp>
// Get the address
of the user's cursor ea t addr = get screen ea(); func t *func =
get func(addr);
if (func != NULL) T
// Buffer where the
function name will be stored char funcName[MAXSTR];
if (get func
name(func->startEA, funcName, MAXSTR)
!= NULL) T
msg("Current function %a, named %s\n", func->startEA,
funcName);
i
i
|
5.7.5
get_next_func
Định nghĩa
|
idaman func t *
ida export get next func(ea t ea)
|
Chú giải
|
Trả về một con trỏ đến cấu trúc
func_t đại diện cho hàm tiếp theo hàm chứa địa chỉ
ea. Trả về NULL nếu không có hàm nào tiếp theo.
|
Ví dụ
|
#include
<kernwin.hpp> // For get screen ea() definition #include
<funcs.hpp>
ea t addr = get
screen ea();
// Get the function
after the one containing the // address where the user's cursor is
positioned func t *nextFunc = get next func(addr);
if (nextFunc !=
NULL)
msg("Next function starts at %a\n",
nextFunc->startEA);
|
5.7.6
get_prev_func
Định nghĩa
|
idaman func t *
ida export get prev func(ea t ea)
|
Chú giải
|
Trả về con trỏ đến cấu trúc func_t
đại diện cho hàm đứng trước hàm chứa địa chỉ
ea. Trả về NULL nếu không có hàm nào trước đó.
|
Ví dụ
|
#include
<kernwin.hpp> // For get screen ea() definition #include
<funcs.hpp>
ea t addr = get
screen ea();
// Get the function
before the one containing the // address where the user's cursor
is positioned func t *prevFunc = get prev func(addr);
if (prevFunc !=
NULL)
msg("Previous function starts at %a\n",
prevFunc->startEA);
|
5.7.7
get_func_cmt
Định nghĩa
|
inline char *
get func cmt(func t *fn, bool repeatable)
|
Chú giải
|
Trả về bất cứ chú thích nào được
thêm vào hàm bởi người dùng hoặc IDA cho hàm được
xác định bởi *fn. Nếu repeatable có giá trị là đúng,
những ghi chứ lặp lại sẽ được bao gồm. Gía trị
NULL được trả về nếu hàm không có ghi chú nào.
|
Ví dụ
|
#include <funcs.hpp>
// Loop through all
functions, displaying their comments // including repeatable
comments. for (int i = O; i < get func qty(); i++) { func t
*curFunc = getn func(i); msg("%a: %s\n",
curFunc->startEA,
get func
cmt(curFunc, false));
i
|
No comments:
Post a Comment