Saturday 8 November 2014

Xây dựng trình cắm cho IDA Pro - Phần 13

5.6 Đoạn
Những hàm bên dưới được sử dụng để làm việc với các phân đoạn (.text, .idata, etc) và được định nghĩa trong segment.hpp. Rất nhiều những hàm này là những hàm bao của các phương thức trong areacb_t của biến toàn cục segs.
5.6.1 get_segm_qty
Định nghĩa
inline int
get_segm_qty(void)
Chú giải
Trả về số lượng phân đoạn tronng tập tin bị đảo mã hiện tại. Câu lệnh đơn giản là gọi segs.get_area_qty().
Ví dụ
#include <segment.hpp>
msg("%d segments in disassembled file(s).\n", get_segm_qty());


5.6.2 getnseg
Định nghĩa
inline segment_t * getnseg(int n)
Chú giải
Trả về con trỏ đến cấu trúc segment_t của segment ở vị trí thứ n được truyền vào. Đây là hàm bao của phương thức gets.getn_area()
Ví dụ
#include <segment.hpp>
// Get the address of segment 0 (the first segment)
Segment_t *firstSeg = getnseg(0);
msg("Address of the first segment is %a\n", firstSeg->startEA);


5.6.3 get_segm_by_name
Định nghĩa
idaman segment_t *ida_export get_segm_by_name(const char *name)
Chú giải
Trả về con trỏ đến cấu trúc segment_t của phân đoạn có tên được truyền vào bởi tham số *name. Nó trả về NULL nếu không có phân đoạn như vậy. Nếu có nhiều phân đoạn với tên giống nhau, phân đoạn đầu tiên sẽ được trả về.
Ví dụ
#include <segment.hpp>
// Get the segment_t structure for the .text segment.
Segment_t *textSeg = get_segm_by_name(".text");
msg("Text segment is at %a\n", textSeg->startEA);


5.6.4 getseg
Định nghĩa
inline segment_t * getseg(ea_t ea)
Chú giải
Trả về cấu trúc segment_t cho phân đoạn chứa địa chỉ ea. Hàm này là hàm bao cho hàm segs.get_area()
Ví dụ
#include <kernwin.hpp> // For get screen ea() #include <segment.hpp>


5.6.5 get_segm_name
Định nghĩa
idaman ssize_t ida_export
get_segm_name(const segment_t *s, char *buf, size_t bufsize)
Chú giải
Lấy tên của phân đoạn và gán vào vùng đệm *buf, được giới hạn bởi bufsize với tên (“_text”,”_idata”,etc) của đoạn *s. Trả về kích cỡ của tên phân đoạn, hoặc -1 nếu *s là NULL
Ví dụ
#include <segment.hpp>



No comments: