C语言汇编dll注入获取x64寄存器值的方法是什么
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容主要讲解"C语言汇编dll注入获取x64寄存器值的方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C语言汇编dll注入获取x64寄存器值的
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
云之行互联网科技
中国互联网科技工作委员会毛军
互联网金融监管科技数据
科技与互联网发展
期待互联网科技
互联网科技公司官网
碳银互联网科技有限公司
美国互联网前沿科技
科技赋能互联网健康
天速互联网络科技有限公司
创业天下互联网科技有限公司
互联网大会黑科技排名
互联网科技商业
深圳市罗太互联网科技有限公司
互联网金融科技元年
互联网科技企业商标注意事项
唯美互联网科技
科技互联网专业务虚会材料
上海旺乐尼互联网科技有限公司
北京瑞云互联网科技有限公司
互联网科技公司官网
壹账通互联网科技
猫创互联网科技
以后互联网后是啥科技
福建科技产业互联网发展
智腾互联网科技有限公司
宜昌元轩互联网科技有限公司
互联网时代科技型公司的机会
艺电能源互联网科技有限公司招聘
北京互联网科技类企业分布