C++获取寄存器eip的值
程序中需要打印当前代码段位置 如下
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#ifdef WIN32
#include <windows.h>
#endif
typedef void (*pFunGetip)(int n);
void getip(int n);
void __declspec(naked) fun()
{
__asm {
mov eax,[esp];
ret;
}
}
int main()
{
printf("main=0x%p\n",main);
void* p=;
__asm {
lea edi,p
call fun
mov [edi],eax
}
printf("p=0x%x\n",p);
#ifdef WIN32
system("pause");
#endif
return ;
}
来个纯C++的函数
static unsigned char* getEIP()
{
unsigned int n=;
unsigned int* p=&n;
unsigned int* p2=(unsigned int*)getEIP;
unsigned int m=(((unsigned int)p2)&0xfff00000);
unsigned int m2=m+0xfffff;
for(int i=;i<0xff;++i)
{
if(m&p[i])
{
if(p[i]<m2)
{
return (unsigned char*)p[i];
}
}
}
return ;
}
C++获取寄存器eip的值的更多相关文章
- 汇编指令之JMP,CALL,RET(修改EIP的值!!!)
简单介绍了,JMP指令按市面上的意思来说是跳转到指定地址,但我这里不这么说,JMP, CALL, RET三个指令均为修改EIP值的指令,EAX, ECX, EBX, EDX, ESP, EBP, ES ...
- 用jQuery获取表单的值
在日常开发过程中,有许多用到表单的地方.比如登录,注册,比如支付,填写订单,比如后台管理等等. 使用jQuery来获取表单的值是比较常见的做法. 常见表单 单行文字域:<input type=' ...
- 统计文件种类数+获取子shell返回值的其它方法
前言 只是作为一个shell的小小练习和日常统计用,瞎折腾的过程中也是摸到了获取子shell返回值的几种方法: 肯定还有别的方法,跟进程间的通信相关,希望你能提出建议和补充,谢谢~ 完整程序: #! ...
- JavaScript从父页面获取子页面的值(子页面又如何访问父页面)
之前还真没做过类似的东西,,top页面获取子页面的document.. 在百度搜了下即找到这个东东,还好,能用. 主要就是使用 contentWindow方法,获取子页面的所有document,再做处 ...
- 获取程序的SHA1值
android获取程序的SHA1值 public static String getSHA1(Context context) { try { PackageInfo info = context.g ...
- js/jquery获取文本框的值与改变文本框的值
我们就用它来学习获取文本框的值及改变文本框的值. 代码如下 复制代码 <script>function get1(){ document.getElementById("txtb ...
- 从一个复杂的json格式的String内获取某key的值
如题,如何简单的从一个复杂的String格式内获取某个key的值. 例如:从下面String下取到status的值. {"response":{"info":{ ...
- DWZ-JUI 树形Checkbox组件 无法一次获取所有选中的值的解决方法
UI中 tree Checkbox 组件 在官方文档中提供的oncheck事件中只能够获取当前点击的权限值,而无法获取其他选中的值 <ul class="tree treeFolder ...
- JS获取select选中的值,所有option值
<select name="myselect" id="myselect"> <option value="2042"&g ...
随机推荐
- VeryNginx详细配置说明
自定义行为 ( Custom Action ) 匹配器 (Matcher) 匹配器 VeryNginx 会收到各种各样的Http请求,当我们定义一条规则(Action)的时候,我们可能会需要限定,这条 ...
- qtdebug和release加载不同的文件配置
win32:CONFIG(release, debug|release): { LIBS +=$$PWD/../../../thirdparty\qwt\lib\qwt.lib LIBS +=$$PW ...
- Ubuntu安装openssh安装ssh、 免密登录、 创建新用户并免密登录
一.安装openssh sudo apt-get install openssh-server ssh localhost 二.免密登录 cd ~/.ssh ssh-keygen ...
- CentOS下配置Apache HTTPS
一.安装Apache支持SSL/TLS yum install mod_ssl openssl 二.创建证书 证书(Cerificate)的基本作用是将一个公钥和安全个体(个人.公司.组织等)的名字绑 ...
- springboot学习2
项目导入eclipse 先检测是否安装有gradle插件 然后点击 finish 按钮 hello world实例 Application.java package com.example.demo ...
- 第五小节之GUI(图形用户界面)
GUi:全程是Graphical User Interface,即图形用户界面,就是应用程序提供给用户操作的图形界面,包括窗口.菜单.按钮.工具栏和其它各种图形界面元素.提供了丰富的类,这些类分别位于 ...
- puppet自动化安装服务
puppet自动化部署 主机环境: server(master)端:172.25.7.1(server1.example.com) client(agent)端:172.25.7.2 172.25.7 ...
- python基础练习题08
写一个登录程序,让用户输入账号和密码,输入用户和密码输入正确的话,提示你 xxx,欢迎登录,今天的日期是xxx,程序结束.错误的话,提示账号/密码输入错误, 最多输入3次,如果输入3次都没有登录成功, ...
- LVM逻辑卷理论及配置
LVM的概念 LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理.它是 Linux 系统对磁盘分区的一种管理机制. LVM 是在硬盘分区之上建立一个逻辑层,这个逻 ...
- CSS札记(二):级联与继承
一.级联 概念:级联(The cascade),CSS是Cascading Style Sheet的简写,说明级联是非常重要的.从表层来看,级联表明CSS规则的顺序问题,但是级联远比这个复杂,在所有的 ...