能力值:
( LV2,RANK:10 )
|
-
-
2 楼
同求C++的EPO相关代码! 如有大牛赐教重谢!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
typedef struct EPO_Info
{
U32 raw_;
U32 from;
U32 to;
} EPO_Info;
U32 SearchForEntry(U8* file_buf, U32 image_base, U32 raw_entry, U32 entry, int code_size, EPO_Info* epo_info)
{
EPO_Info valid_call[MAX_EPO_CALL] = { { 0 } };
U32 _eip = entry + image_base;
int total_instr_len = 0, cur_instr_len, i = 0;
char code_text[1000] = { 0 };
__try {
file_buf += raw_entry;
while (total_instr_len < code_size) {
cur_instr_len = Disasm(file_buf, code_text);
if (cur_instr_len <= 0) {
break;
}
if (file_buf[0] == 0xE8 && cur_instr_len == 5) {
valid_call[i].raw_ = (U32)file_buf;
valid_call[i].from = _eip;
valid_call[i].to = (_eip + *(U32*)(file_buf + 1) + 5);
// We have find enough valid call
if (++i >= MAX_EPO_CALL) {
break;
}
}
file_buf += cur_instr_len, total_instr_len += cur_instr_len, _eip += (U32)cur_instr_len;
}
} __except (1) {
return 0;
}
if (i == 0) {
return 0;
}
srand(GetTickCount());
// Do not modify the first call if possible
i = (i == 1) ? 0 : (1 + rand() % (i - 1));
*epo_info = valid_call[i];
return 1;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
楼上能否给个注释,代码好像不全.看不明白.
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
http://www.80dfj.org/showthread.php?t=19
|
|
|