逆向
文章平均质量分 78
24号杀手
这个作者很懒,什么都没留下…
展开
-
一步一步走进Linux HOOK API(一)
文章转载自:http://blog.csdn.net/yyttiao/article/details/7346287主要是拷贝到自己博客,做个备份最近我查阅很多参考资料.发现对于讲述Linux HOOK API的资料是很少,让我们这些新人难以去走进Linux HOOK大门.在这里我将全面的讲述Linux HOOK API的全部实现过程,这个过程中我也遇到转载 2016-08-03 17:50:40 · 582 阅读 · 1 评论 -
动态注入技术
我们在讨论动态注入技术的时候,APIHook的技术由来已久,在操作系统未能提供所需功能的情况下,利用APIHook的手段来实现某种必需的功能也算是一种不得已的办法。在Windows平台下开发电子词典的光标取词功能,这项功能就是利用Hook API的技术把系统的字符串输出函数替换成了电子词典中的函数,从而能得到屏幕上任何位置的字符串。无论是16位的Windows95,还是32位的Windws NT,转载 2016-08-06 11:43:49 · 4272 阅读 · 0 评论 -
使用ptrace向已运行进程中注入.so并执行相关函数
1. 简介 使用ptrace向已运行进程中注入.so并执行相关函数,其中的“注入”二字的真正含义为:此.so被link到已运行进程(以下简称为:目标进程)空间中,从而.so中的函数在目标进程空间中有对应的地址,然后通过此地址便可在目标进程中进行调用。 到底是如何注入的呢? 本文实现方案为:在目标进程中,通过dlopen把需要注入的.so加载到目标进转载 2016-08-06 18:49:52 · 672 阅读 · 0 评论 -
GDB下查看内存命令(x命令)
可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示: x/ n、f、u是可选的参数。 n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义。 f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是s转载 2016-08-08 10:12:00 · 2332 阅读 · 0 评论 -
GDB用法及命令大全
原文链接:http://blog.csdn.net/weiwangchao_/article/details/11882617一:列文件清单 1. list(l) (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run(r)命令,在它后面可以跟随发给该程序的任转载 2016-08-08 10:19:02 · 579 阅读 · 0 评论 -
学习windows 应用层 inline hook 原理总结
inline hook 实际上就是指 通过改变目标函数头部的代码来使改变后的代码跳转到我们自己设置的一个函数里,产生hook。今天就拿MessageBoxA这个api函数来做实验。功能就是当程序调用MessageBoxA 时,我们打印出MessageBoxA的参数 大概代码结构应该是这样typedef int (WINAPI *MessageBox_type) (转载 2016-09-12 10:44:22 · 4484 阅读 · 0 评论 -
Inline Hook 之(监视任意函数)
原文转自:http://blog.csdn.net/masefee/article/details/6326634前面已经写过两次inline hook的博文了,第一篇为:《C/C++ HOOK API(原理深入剖析之-LoadLibraryA)》,这篇博文的方法是通过修改任意函数的前面N个字节,实现跳转并进入到我们自定义的hook函数里,执行完毕我们的hook函数之后,再直接调用被h转载 2016-09-12 15:08:23 · 4403 阅读 · 0 评论 -
Linux动态库原理(二)重定位
原文转自:http://www.aichengxu.com/view/81130Linux动态库原理(二)重定位 前面一章《Linux动态库工作原理详解》比较简单浅显的对 Linux 的工作原理进行了阐述,今天打算从 Linux 动态库在加载过程中符号的重定位(Relocation)的角度,更加深入的讲解 Linux 动态库的工作原理。在1980s SunOS 将动转载 2016-08-12 14:21:14 · 3649 阅读 · 1 评论 -
Linux动态库的工作原理详解
关于动态库的原理和加载过程,网上也有很多版本,但是基本都在讲解动态库的编译以及使用,很少能够有文章对动态库的加载以及工作原理进行深入的剖析和讲解。说来也很惭愧,在过去的工作中,没能彻底的去弄清楚动态库的工作原理。直到最近工作中听到一些关于动态库加载以及工作原理的一些错误的理论,一方面为了推翻该理论,另一方面,正好借此机会彻底弄清楚动态库的工作原理。 后面还会详细讲解Linux动态库的加载原理《Li转载 2016-08-12 14:24:19 · 2094 阅读 · 0 评论 -
玩转ptrace
下面是转帖的内容,写的很详细。但是不同的linux发行版中头文件的路径和名称并不相同。如在某些发行版中就不存在,其中定义的变量出现在和中。==================================================================================================by Pradeep PadalaCrea转载 2016-08-05 17:58:43 · 408 阅读 · 0 评论 -
linux-inject:注入代码到运行的Linux进程中
最近,我遇到了linux-inject,它是一个注入程序,可以注入一个.so文件到一个运行中的应用程序进程中。类似于LD_PRELOAD环境变量所实现的功能,但它可以在程序运行过程中进行动态注入,而LD_PRELOAD是定义在程序运行前优先加载的动态链接库。事实上,linux-inject并不取代任何功能。换句话说,可以看成是忽略了LP_PRELOAD.它的文档很匮乏,理由可能是开发人员认转载 2016-08-05 08:28:40 · 7766 阅读 · 1 评论 -
一步一步走进Linux HOOK API(二)
一步一步走进Linux HOOK API(二)从上一篇的ELF Head之后,想必很多读者已经对ELF文件开始感觉不是遥不可及了,今天这一节,主要是讲程序头(Program Headers),程序头主要是从加载执行的角度来看的,很多人想那里面到底是什么东西呢,其实程序头就是一个结构数组,每一个头保存着对应的不同的数据,有的数据是告诉系统把我放入内存,有的数据时告诉系统我是变量.等等...在转载 2016-08-03 17:52:41 · 612 阅读 · 0 评论 -
一步一步走进Linux HOOK API(三)
一步一步走进Linux HOOK API(三)经过前两篇的教程,我很郁闷,CSDN的博客发布出来之后,跟我的排版完全不一样了,等这一系列的内容全部完成完成之后,我会发布该系列的全部doc文件,如果觉得本系列还不错的话,欢迎大家下载收藏..谢谢支持~~~下面进入正题,今天主要讲述的是ELF 文件的另一个大块叫节头(Section Headers),那么什么叫节头呢.节头里面分散着不同转载 2016-08-03 17:54:03 · 567 阅读 · 0 评论 -
一步一步走进Linux HOOK API(四)
一步一步走进Linux HOOK API(四)这一节主要是讲述的是符号节.要怎么才能找到符号节呢,其实只要在上一期讲的遍历节头的时候,判断每一个节类型是不是SHT_SYMTAB或SHT_DYNSYM,那么相应的节就是一个符号节了,符号节存放的是一张符号表,符号表也是一个连续存储的结构数组.那什么叫符号呢?编程过程中用到的变量和函数都可以称之为符号,一个ELF文件中并不只有一个符号节转载 2016-08-03 17:55:05 · 525 阅读 · 0 评论 -
一步一步走进Linux HOOK API(五)
一步一步走进Linux HOOK API(五)这一讲中,我们不在继续进入研究动态符号表的获取了,今天咱们来点实战的话题,对于前面我们研究的那么多知识,做一次总结.来看看这些节表之间是怎么联系起来的.最后我们将经过一个简单的拦截printf函数,修改它的参数,来输出我指定的字符串,这样就达到简单的hook api的目的.好了废话不多说.先看看main.c里面的代码.[转载 2016-08-03 17:56:18 · 633 阅读 · 0 评论 -
一步一步走进Linux HOOK API(六)
一步一步走进Linux HOOK API(六)上一节,我们讲了如何手动通过GDB来拦截printf的参数,其实ELF远远不止我们介绍的那点东西,在经过一轮实战之后,我们得继续回到ELF文件格式的探索之旅了.今天我们这里就要讲什么的,好了,今天我们轻松一点,看一下动态节,动态节的类型是SHT_DYNAMIC,先看一下动态节的定义:[cpp] view转载 2016-08-03 17:57:08 · 424 阅读 · 0 评论 -
一步一步走进Linux HOOK API(七)
一步一步走进Linux HOOK API(七) 我又来啦,今天是本系列介绍ELF文件的最后一篇教程.跟随大家一起了解了ELF文件的大致结构.整个结构其实是很明朗的,根据ELF头,程序头,节头.从节头里提取不同的类型,到不同的节表内去获取不同的信息,今天这里主要介绍重定位表.也是常用的节表之一.有了符号名和动态库的名字操作系统就可以为我们引入函数了,但在我们的程序中是谁会用这些外部函转载 2016-08-03 17:58:21 · 584 阅读 · 0 评论 -
一步一步走进Linux HOOK API(八)
最近实在是太忙了.学校毕业的事情太麻烦,手续啥的,加上公司的事情..实在没心思写了.特转帖来做本系列的最终章...以后有时间空下来.再详细开帖阐述.望见谅.....共享库注射--injectso实例作者:grip2 日期:2002/08/16内容: 1 -- 介绍 2 -- injectso -- 共享库注射技术 3 -- injectso转载 2016-08-03 18:00:04 · 1300 阅读 · 0 评论 -
使用反汇编理解动态库函数调用方式GOT/PLT
文章转载自:http://blog.csdn.net/anzhsoft/article/details/18776111 本文主要讲解动态库函数的地址是如何在运行时被定位的。首先介绍一下PIC和Relocatable的动态库的区别。然后讲解一下GOT和PLT的理论知识。GOT是Global Offset Table,是保存库函数地址的区域。程序运行时,库函数的地址会设置到GOT转载 2016-08-04 15:10:53 · 2166 阅读 · 0 评论 -
linux下查找动态库中函数地址实例代码
dl_iterate_phdr可以查到当前进程所装在的所有符号,每查到一个就会调用你指定的回调函数。下面的代码示例如何使用dl_iterate_phdr和dladdr#define _GNU_SOURCE#include #include #include static intcallback (struct dl_phdr_info *info, size_t转载 2016-08-12 16:12:26 · 5167 阅读 · 0 评论