写程序取自己进程的AEP
测试程序功能
打印出自己进程的程序入口点地址.
结合OD载入程序,看到的入口点确实是0x004014f0, 说明程序入口点找到了
测试程序
- /// @file exam_1_1.c
- #include <stdlib.h>
- #include <stdio.h>
- void fnGetProgEntry();
- int main(int agrc, char** argv)
- {
- fnGetProgEntry();
- printf("END, press any key to quit\n");
- getchar();
- return 0;
- }
- void fnGetProgEntry()
- {
- #define PE_SIGNTURE 0x4550 ///< "PE"
- int* pFileAddressOfNewHeader = NULL;
- int* pCOFFFileHeader = NULL;
- int* pAEP = NULL;
- const int iAddrPeImgBase = 0x400000;
- /// iOffsetX 为偏移
- /// iContent 为地址中的内容
- const int iOffsetFileAddressOfNewHeader = (16 * 4 - 4); ///< File address of new header 相对于DosHeader的偏移
- const int iOffsetAEPToFileAddressOfNewHeader = 0x28;
- int iContentFileAddressOfNewHeader = 0;
- int iPeSignature = 0;
- int iOffsetAddressOfEntryPoint = 0; ///< 程序入口点偏移地址
- do
- {
- pFileAddressOfNewHeader = (int*)(iAddrPeImgBase + iOffsetFileAddressOfNewHeader);
- iContentFileAddressOfNewHeader = *pFileAddressOfNewHeader; ///< iContentFileAddressOfNewHeader = 0xd0
- pCOFFFileHeader = (int*)(iAddrPeImgBase + iContentFileAddressOfNewHeader);
- iPeSignature = *pCOFFFileHeader;
- if (PE_SIGNTURE != iPeSignature)
- {
- printf("error pe file\n");
- }
- pAEP = (int*)((int)pCOFFFileHeader + iOffsetAEPToFileAddressOfNewHeader);
- iOffsetAddressOfEntryPoint = iAddrPeImgBase + *pAEP;
- printf("my address entry point is 0x%x\n", iOffsetAddressOfEntryPoint);
- } while (0);
- printf("END, press any key to quit\n");
- }
运行结果
http://blog.csdn.net/lostspeed/article/details/49506193
写程序取自己进程的AEP的更多相关文章
- 在Python程序中的进程操作,multiprocess.Process模块
在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...
- Python程序中的进程操作
之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起来的python程序也是一个进程 ...
- python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)
昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...
- Python程序中的进程操作-开启多进程(multiprocess.process)
目录 一.multiprocess模块 二.multiprocess.process模块 三.process模块介绍 3.1 方法介绍 3.2 属性介绍 3.3 在windows中使用process模 ...
- Python程序中的进程操作--—--开启多进程
Python程序中的进程操作-----开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创 ...
- 用CIL写程序:写个函数做加法
前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点 ...
- 用CIL写程序:定义一个叫“慕容小匹夫”的类
前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样 ...
- ADS 下 flash 烧写程序原理及结构
本原理:在 windows 环境下借助 ADS 仿真器将在 SDRAM 中的一段存储区域中的数据写到 Nand flash 存 储空间中.烧写程序在纵向上分三层完成: 第一层: 主烧写函数(完成将在 ...
- Java程序与其它进程的数据通信
Java程序中可以启动其他的应用程序,这种在Java中启动的进程称为子进程,启动子进程的Java程序称为父进程,其实这个父进程就是一个Java虚拟机1.在Java程序中可以用Process类的实例对象 ...
随机推荐
- server配置学习 ---- 关闭防火墙
iptables 一种网络防火墙,在LINUX下使用,RedHat9.0版本号以上自带. 它能够实现NAT转换.能够做上网代理. 首先对于server的配置第一步来说就是关闭防火墙.在没有图形化中的l ...
- SQL语句简单记录
SQL SERVER 新增列与默认值 alter table 表名 add 列明 bit default 0 not null 删除列(容易删除失败) alter table 表名 drop colu ...
- 小猪猪逆袭成博士之C++基础篇(二) 常量、处理类型、自定义头文件
小猪猪逆袭成博士之C++基础篇(二) const .auto. decltype 上一章我们介绍了一些常用的类型和常见的问题,下面再介绍一些学习的时候不是特别常用但是在实际工程中很有用的一些东西. 一 ...
- BZOJ 2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛( dp )
树形dp..水 ------------------------------------------------------------------------ #include<cstdio& ...
- pay包注释(二)
@login_required()def to_register(request): return render_to_response("pay/register_yeepay.ht ...
- DW8051调试终结
都不记得自己到底揪心了多久 —— 归根结底还是自己太菜了.终于找到了DW8051移植的bug. 这么大的一个图居然没有看到,真是气煞老夫也. 在原来移植的基础之上加两个反相器就OK 了
- 同步机制Lock初学(转)
前段时间review同事的代码,发现可以简化成如下的模型: Thread 1 Thread 2 lock.lock(); condition.await(); lock.unlock() lock.l ...
- cocos2d-x游戏开发系列教程-超级玛丽02-代码结构
代码下载链接 http://download.csdn.net/detail/yincheng01/6864893 解压密码:c.itcast.cn 前景回顾 上一篇博文提到超级马里奥的游戏效果,大家 ...
- 新买一款打印机hp5525N
11900 RMB 彩色.激光.彩打. 让法国的工艺工程师给改成法语的了.
- eclipse No Default Proposals 无提示
链接地址:http://blog.csdn.net/rogerjava/article/details/5689785 今天特抑郁,早上开机后发现eclipse的代码提示功能不好使了,Alt+/ 这么 ...