函数hack
来源:互联网 发布:环境监测总站数据 编辑:程序博客网 时间:2024/05/02 00:49
void set(void *orignal, void * mock_func) {
int ret;
pagesize_ = sysconf(_SC_PAGE_SIZE);
orignal_page_ = reinterpret_cast<int64_t>(orignal) / pagesize_;
orignal_page_ *= pagesize_;
unsigned char machine_code[] = { 0x48, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xff, 0xe0 };
ret = mprotect(reinterpret_cast<void*>(orignal_page_), pagesize_, PROT_READ | PROT_WRITE | PROT_EXEC);
if (ret < 0) {
printf("mproterct error: %d %s:%d", errno, __FILE__, __LINE__);
return;
}
if (0 == orignal_) {
memcpy(orignal_text_, orignal, sizeof(orignal_text_));
}
memcpy(machine_code + 2, &mock_func, sizeof(mock_func));
memcpy(orignal, machine_code, sizeof(machine_code));
mprotect(reinterpret_cast<void*>(orignal_page_), pagesize_, PROT_READ | PROT_EXEC);
orignal_ = orignal;
int ret;
pagesize_ = sysconf(_SC_PAGE_SIZE);
orignal_page_ = reinterpret_cast<int64_t>(orignal) / pagesize_;
orignal_page_ *= pagesize_;
unsigned char machine_code[] = { 0x48, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xff, 0xe0 };
ret = mprotect(reinterpret_cast<void*>(orignal_page_), pagesize_, PROT_READ | PROT_WRITE | PROT_EXEC);
if (ret < 0) {
printf("mproterct error: %d %s:%d", errno, __FILE__, __LINE__);
return;
}
if (0 == orignal_) {
memcpy(orignal_text_, orignal, sizeof(orignal_text_));
}
memcpy(machine_code + 2, &mock_func, sizeof(mock_func));
memcpy(orignal, machine_code, sizeof(machine_code));
mprotect(reinterpret_cast<void*>(orignal_page_), pagesize_, PROT_READ | PROT_EXEC);
orignal_ = orignal;
}
void clear() {
if (0 != orignal_) {
int ret;
ret = mprotect(reinterpret_cast<void*>(orignal_page_), pagesize_,
PROT_READ | PROT_WRITE | PROT_EXEC);
if (ret < 0) {
printf("mproterct error: %d %s:%d", errno, __FILE__, __LINE__);
return;
}
memcpy(orignal_, orignal_text_, sizeof(orignal_text_));
mprotect(reinterpret_cast<void*>(orignal_page_), pagesize_, PROT_READ | PROT_EXEC);
orignal_ = 0;
}
}
0 0
- 函数hack
- HACK
- HACK
- hack
- Hack
- hack
- hack
- hack
- hack
- HACK
- hack
- hack
- 【Hack】ie 条件Hack
- 查看虚函数表和类内存布局,以及使用MSVC与GCC hack验证
- JavaScript 逻辑中断(hack技巧-处理函数的默认参数/早期浏览器兼容处理)
- bzoj 4134: ljw和lzr的hack比赛 sg函数+字典树合并
- Google Hack
- XOOPS HACK
- ZStack ZDO和AF层API解读
- androidpn-server笔记及BUG修改
- ACE 示例中的 ACE_DEBUG 不在窗口输出信息的原因
- android开发之Eclipse主题颜色插件
- ResGen.exe已退出
- 函数hack
- 拨动我每一根敏感脆弱的神经
- Linux Slub分配器(一)--概述
- 第一次
- redhat oracle 9i安装
- 最长公共子序列
- 我们约好的
- .NET的一些指令
- Java Collection 迭代器