C语言汇编dll注入获取x64寄存器值的方法是什么
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"C语言汇编dll注入获取x64寄存器值的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言汇编dll注入获取x64寄存器值的
千家信息网最后更新 2025年12月03日C语言汇编dll注入获取x64寄存器值的方法是什么
本篇内容主要讲解"C语言汇编dll注入获取x64寄存器值的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言汇编dll注入获取x64寄存器值的方法是什么"吧!
/* * @Author: https://github.com/zengfr * @Date: 2020-10-27 10:35:05 * @Last Modified by: https://github.com/zengfr * @Last Modified time: 2020-10-27 10:35:05 */#include#include extern "C" __declspec(dllexport) __cdecl char* getAuthor(){ char author[] = "Author:https://github.com/zengfr"; char *pstr = author; return pstr;}extern "C" __declspec(dllexport) __cdecl void * getRegisters(){ static uint64_t rs[16]={ 0l,0,0,0l, 0,0,0,0, 0,0,0,0, 0,0,0,0l}; __asm__ __volatile__( " mov %%eax,%0 ;\n\t" " mov %%ebx,%1 ;\n\t" " mov %%ecx,%2 ;\n\t" " mov %%edx,%3 ;\n\t" " mov %%ebp,%4 ;\n\t" " mov %%esp,%5 ;\n\t" " mov %%esi,%6 ;\n\t" " mov %%edi,%7 ;\n\t" " mov %%r8,%8 ;\n\t" " mov %%r9,%9 ;\n\t" " mov %%cs, ;\n\t" " mov %%ds, ;\n\t" " mov %%es, ;\n\t" " mov %%ss, ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]),"=m"(rs[6]) ,"=m"(rs[7]) ,"=m"(rs[8]),"=m"(rs[9]),"=m"(rs[10]),"=m"(rs[11]) ,"=m"(rs[12]),"=m"(rs[13]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl void * getBaseRegisters(){ static uint64_t rs[8]={0l,0,0,0l,0,0l,0,0l}; __asm__ __volatile__( " mov %%eax,%0 ;\n\t" " mov %%ebx,%1 ;\n\t" " mov %%ecx,%2 ;\n\t" " mov %%edx,%3 ;\n\t" " mov %%ebp,%4 ;\n\t" " mov %%esp,%5 ;\n\t" " mov %%esi,%6 ;\n\t" " mov %%edi,%7 ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]),"=m"(rs[6]) ,"=m"(rs[7]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl void * getSegmentRegisters(){ static uint64_t rs[8]={0l,0,0,0l,0,0l,0,0l}; __asm__ __volatile__( " mov %%cs,%0 ;\n\t" " mov %%ds,%1 ;\n\t" " mov %%es,%2 ;\n\t" " mov %%fs,%3 ;\n\t" " mov %%gs,%4 ;\n\t" " mov %%ss,%5 ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl void * getCpRegisters(){ static uint64_t rs[8]={ 0l,0l,0l,0l, 0l,0l,0l,0l }; __asm__ __volatile__( " mov %%r8,%0 ;\n\t" " mov %%r9,%1 ;\n\t" " mov %%r10,%2 ;\n\t" " mov %%r11,%3 ;\n\t" " mov %%r12,%4 ;\n\t" " mov %%r13,%5 ;\n\t" " mov %%r14,%6 ;\n\t" " mov %%r15,%7 ;\n\t" :"=m"(rs[0]),"=m"(rs[1]),"=m"(rs[2]) ,"=m"(rs[3]) ,"=m"(rs[4]),"=m"(rs[5]),"=m"(rs[6]) ,"=m"(rs[7]) //: /* no registers */ //: /* no registers */ ); return rs;}extern "C" __declspec(dllexport) __cdecl inline uint64_t readMem64(uint64_t *reg){ uint64_t value; __asm__ __volatile__( "mov %[reg], %[val]\n" : [val] "=rm" (value) : [reg] "rm" (*reg) ); return value;}extern "C" __declspec(dllexport) __cdecl inline uint32_t readMem32(uint32_t *reg){ uint32_t value; __asm__ __volatile__( "mov %[reg], %[val]\n" : [val] "=rm" (value) : [reg] "rm" (*reg) ); return value;}
到此,相信大家对"C语言汇编dll注入获取x64寄存器值的方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
方法
寄存器
语言
内容
学习
实用
更深
兴趣
实用性
实际
操作简单
更多
朋友
网站
频道
查询
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术对我的帮助
软件开发培训大会
禅城软件开发培训有哪些
什么不是数据库的管理工具
网络安全心形字体
网络安全监测实施细则
哈尔滨旋律互联网科技骗
蚂蚁集团与国企分享数据库
网络安全人员具备条件
c语言服务器
服务器承受能力
莆田战雷网络技术有限公司
事业单位网络安全考核制度
世界软件开发大国排名
台州数据库培训学校
软件开发者宣言
魔兽从服务器断开什么原因
计算机三级网络技术考c语言
软件开发流程与架构
泰州纬立网络技术
河南一七网络技术有限公司
单位抓网络安全
湖北软件开发参考价格
ibm 3500 服务器
扬州青鸾网络技术运营部
广东省最大的软件开发公司
网络安全的不幸
服务器的线路主要有哪几种
c 数据库连接 关闭
重庆电商软件开发定制费用