linux hook demo
来源:互联网 发布:拍照的姿势软件 编辑:程序博客网 时间:2024/05/29 08:20
#include <stdio.h> #include <string.h>#include <unistd.h> #include <dlfcn.h>#include <sys/mman.h>void *orignal_=0;unsigned char orignal_text_[12];int orignal_page_;int pagesize_;void set(void *orignal, void * mock_func) { int ret; pagesize_ = sysconf(_SC_PAGE_SIZE); orignal_page_ = reinterpret_cast<unsigned long int>(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"); 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"); return; } memcpy(orignal_, orignal_text_, sizeof(orignal_text_)); mprotect(reinterpret_cast<void*>(orignal_page_), pagesize_, PROT_READ | PROT_EXEC); orignal_ = 0; } }void original(int a,int b){ int c = a+b; c=c*100; printf("original out:%d\n",c);}void newfunc(int a,int b){ int c = a-b; printf("newfunc out:%d\n",c);}int main(){ set((void*)original,(void*)newfunc); original(1,2); return 0;}
0 0
- linux hook demo
- VC IAI HOOK demo
- HOOK Linux
- linux hook
- Linux hook
- linux hook
- Linux hook
- Hook框架xposed的简单demo
- Hook框架xposed的简单demo
- 一个Demo了解android中的hook技术
- linux 下的hook
- linux 中的hook
- linux hook api
- linux hook 初探
- linux的HOOK
- linux hook 初探
- linux hook 技术
- linux dl_open hook
- 统一修改UINavigationController的返回按钮
- ibatis 模糊查询只认识美元
- BZOJ 1834 网络扩容
- HACMP启停Oracle 两个常用脚本
- TestNG-Excute selenium with TestNG.
- linux hook demo
- css 标签格式
- linux epoll
- 探讨LoadRunner的并发用户和集合点
- poj1149 PIGS --- 最大流EK
- Hadoop namenode无法启动问题解决
- 做一名合格的程序员
- Android自动化测试之MonkeyRunner工具
- Using MS Shell Dlg and MS Shell Dlg 2 (zz)