激活所有代码段的小程序
来源:互联网 发布:Windows 命令行脚本 编辑:程序博客网 时间:2024/06/11 19:12
Linux系统开启MMU后,应用程序的所有页面并不是一口气加载进来,而是遇到访问未映射的线性地址时,通过触发PageFault触发从
对应的二进制文件加载指定位置的内容到页面。这不便于对应用程序进行分析,故写此代码激活应用程序指定范围内的线性地址。
#include <sys/ptrace.h>
#include <sys/types.h>#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#define ARG_COUNT 4
int main(int iArgc, char* ppchArgv[])
{
int iPid = 0;
unsigned long ulStartAddr = 0;
unsigned long ulEndAddr = 0;
unsigned long ulTmp = 0;
unsigned long i = 0;
unsigned long ulCurValue = 0;
if (ARG_COUNT != iArgc)
{
printf("Usage: ./try1 pid startAddr endAddr\n");
return 0;
}
iPid = atoi(ppchArgv[1]);
ulStartAddr = strtoul(ppchArgv[2], NULL, 10);
ulEndAddr = strtoul(ppchArgv[3], NULL, 10);
if (ulStartAddr > ulEndAddr)
{
ulTmp = ulStartAddr;
ulStartAddr = ulEndAddr;
ulEndAddr = ulTmp;
}
printf("Pid:%d,StartAddr:%lu,EndAddr:%lu\n",
iPid, ulStartAddr, ulEndAddr);
errno = 0;
ptrace(PTRACE_ATTACH, iPid, NULL, NULL);
if (0 != errno)
{
printf("Attach %d Failed,errno:%d\n", iPid, errno);
return 0;
}
wait(NULL);
for (i = ulStartAddr; i <= ulEndAddr; i += sizeof(unsigned long))
{
errno = 0;
ulCurValue = ptrace(PTRACE_PEEKDATA, iPid, i, NULL);
if (0 != errno)
{
continue;
}
printf("%08X ", ulCurValue);
}
printf("\n");
errno = 0;
ptrace(PTRACE_DETACH, iPid, NULL, NULL);
if (0 != errno)
{
printf("Detach %d Failed,errno:%d\n", iPid, errno);
return 0;
}
return 0;
}
0 0
- 激活所有代码段的小程序
- 通过小代码体验程序中BSS段和DATA段的差异
- 通过小代码体验程序中BSS段和DATA段的差异
- 反射的小代码段
- 代码段与程序段的区别
- 再来一个一键关闭所有程序的小代码
- C程序的BSS段 代码段 数据段
- 一段汇编小程序及说明——将数据,代码,栈放入不同的段
- iOS 的小功能代码段
- 小代码段
- linux下的程序内存分布 代码段,数据段,BSS段,.rodata段,堆,栈
- C程序的存储布局---代码段
- 测试程序片段执行时间的代码段
- 第一段JS小程序
- SublimeText自定义小代码段
- 黑马程序员-几段重要的小程序
- VS2008中注释整段代码的小技巧
- 程序布局:数据段、代码段
- 【哈希】USACO-cha2-sec2.2 Preface Numbering
- Android笔记009_StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)
- 第十三周 项目二 成绩处理
- 基本sql,轻松入门 2
- Eclipse如何进行在当前工程下查找
- 激活所有代码段的小程序
- PHP导出Excel 之 Spreadsheet_Excel_Writer
- Java SSH 项目总结——Jquery LigerUI-表格的使用
- Qt下Android环境的配置之离线下载SDK包
- JAVA开发者应该去的20个英文网站【转】
- javascript深入理解js闭包
- java程序读取资源文件时路径如何指定
- [Java基础] 成员变量和局部变量
- A Period Summary