- 博客(19)
- 资源 (3)
- 收藏
- 关注
转载 Detour开发包介绍(2):使用
<br /><br />一般来说,使用Detours 的代码都具有固定的模式。 Detours 1.5 和 Detours 2.1 的接口函数变了很多,这里按照 2.1 版本对基本的使用方法进行说明。常用的函数有下面几个:<br />DetourTransactionBegin():开始一次 截获 或者 解除截获 过程。<br />DetourUpdateThread():列入一个在 DetourTransaction 过程中要进行 update 的线程。这个函数的作用稍微有一些复杂,会在后面专门说明。<b
2010-12-30 16:06:00 1012
转载 Detour开发包介绍(1):概述
<br /><br />微软研究院Detours 开发包是一个用来在二进制级别上对程序中的函数 (Function) 或者过程 (Procedure) 进行修改的工具库。一般我们将这种技术称为 Hook 。在现实中,这种技术可以应用在很多场景下。比如截获某些 Windows API ,在实际调用到系统函数前进行一些过滤工作;软件中使用到了一些没有源代码的第三方库,但是又想增强其中某些函数的功能;修改函数返回值;为调试以及性能测试加入附加的代码;或者截获函数的输入输出作研究;破解使用。等等。 Detours
2010-12-30 16:05:00 1065
转载 微软研究院Detour开发包之API拦截技术
<br />我们截获函数执行最直接的目的就是为函数增添功能,修改返回值,或者为调试以及性能测试加入附加的代码,或者截获函数的输入输出作研究,破解使用。通过访 问源代码,我们可以轻而易举的使用重建(Rebuilding)操作系统或者应用程序的方法在它们中间插入新的功能或者做功能扩展。然而,在今天这个商业 化的开发世界里,以及在只有二进制代码发布的系统中,研究人员几乎没有机会可以得到源代码。本文主要讨论Detour在Windows二进制PE文件基础 上的API截获技术。对于Linux平台,作这件事情将会非常的简
2010-12-30 16:02:00 827
转载 关于Detours的一些介绍(出处不详)
<br />---- Detours是微软开发的一个函数库(源代码可在http://research.microsoft.com/sn/detours 免费获得), 用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为。具体用途是: <br /><br />拦截WIN32 API调用,将其引导到自己的子程序,从而实现WIN32 API的定制。 <br />为一个已在运行的进程创建一新线程,装入自己的代码并运行。 <br />---- 本文将简介Detours的原理,Detours库函数的
2010-12-30 16:01:00 699
原创 关于拦截VB中的MsgBox
原先不知道, 从网上看到人家都说MsgBox最终调用的是MessageBox(A/W)。 但是事实证明(我拦截了N次MessageBox,然而都是以失败告终),这是错的。 不知道是本人愚钝,在哪个过程出错,还是什么其他问题。最终没办法,只有自己亲自动手去验证它。首先写一个最简单的VB程序调用MsgBox的小例子,通过OllyDbg载入它(test.exe),再一步一步跟进去。经过分析,大致过程是这样的载入test.exe --> 形成在内存中的映像 test.exe --> 找到MSVBVM60.DLL
2010-12-30 01:39:00 2098 1
转载 OllyDbg 的快捷命令栏插件快捷命令
<br /><br />OllyDbg 的快捷命令栏插件快捷命令来源:http://www.anqn.com/article/d/2005-07-13/a091225.shtml 自己验证了一下,挺好用的。<br />CALC <br />判断表达式<br />WATCH <br />添加监视表达式<br />AT / FOLLOW <br />Disassemble at address <br />在地址进行反汇编<br />ORIG <br />Disassemble at EIP <br />反汇编
2010-12-27 20:50:00 1033
转载 OllyDBG 入门之一--汇编语言
<br /><br />汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊? eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。<br />比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。<br />这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。<b
2010-12-27 20:34:00 1060
转载 OllyDBG 入门之五-- 破解注意事项
<br /><br />1.断点:<br />所谓断点就是程序被中断的地方,中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打电话告诉你他从外地坐火车过来,要你去火车站接他。然后你就向老板临时请假,赶往火车站去接同学,接着将他安顿好,随后你又返回公司继续上班,这就是一个中断过程。解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程
2010-12-27 20:32:00 1292 1
转载 OllyDBG 入门之六--汇编指令、机器码表
<br />一、状态寄存器<br /><br />PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:<br /><br />15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 <br /> OF DF IF TF SF ZF AF PF CF <br /><br /><br />条件码:<br />①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。<br />②SF(S
2010-12-27 20:32:00 1745
转载 OllyDBG 入门之三--简介及常用命令
<br /><br />反汇编窗口<br />在反汇编器中双击以下的栏或选项完成相应操作:<br />· 地址栏: 显示相对被单击地址的地址;再次双击其地址返回到标准地址模式。<br />· 十六进制转存栏:触发设置无条件断点。<br />· 反汇编命令栏: 调用汇编器(可以直接修改汇编代码)。<br />· 注释栏: 允许你增加或编辑与该行汇编命令相关性的注释。<br /> <br />常用快捷键<br />Alt+E → Modules窗口,查找输入函数 <br />Ctrl
2010-12-27 20:31:00 2135 1
转载 OllyDBG 入门之二--破解预备知识
<br /><br />一、机械码,又称机器码<br />ultraedit 打开,编辑exe文件时你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 组成的数码,这些数码就是机器码。<br />修改程序时必须通过修改机器码来修改exe文件。<br /><br />二、需要熟练掌握的全部汇编知识<br />不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了<br /><br />cmp a,b 比较 a 与 b<br />mov a,b 把 b 的值送给 a<br
2010-12-27 20:30:00 2164
转载 OllyDBG 入门之四--破解常用断点设置
<br /><br />bpx hmemcpy 破解万能断点,拦截内存拷贝动作<br />bpx Lockmytask 当你用其它断点都无效时可以试一下,这个断点拦截按键的动作<br />bmsg handle wm_gettext 拦截注册码(handle为对应窗口的句柄)<br />bmsg handle wm_command 拦截OK按钮(handle为对应窗口的句柄)<br /><br />拦截窗口:<br />bpx CreateWindow 创建窗口<br />bpx Creat
2010-12-27 20:28:00 2603
转载 C语言的(...)参数
<br />关键字: c语言 (...)<br />C语言中有一种长度不确定的参数,形如:"…",它主要用在参数个数不确定的函数中,我们最容易想到的例子是printf函数。<br /><br /> 原型:int printf( const char *format [, argument]... );<br /><br /> 使用例:printf("Enjoy yourself everyday!/n");<br />printf("The value is %d!/n", value);<br /><
2010-12-27 17:06:00 1626
转载 C中可变参数函数实现
<br />一、 从printf()开始<br />原型:int printf(const char * format, ...);<br />参数format表示如何来格式字符串的指令,…<br />表示可选参数,调用时传递给"..."的参数可有可无,根据实际情况而定。<br />系统提供了vprintf系列格式化字符串的函数,用于编程人员封装自己的I/O函数。<br />int vprintf / vscanf(const char * format, va_list ap); // 从标准输入/输出格
2010-12-27 16:55:00 780
转载 在C++中实现foreach循环
使用过C#、PHP这些更高级语言的朋友一定知道foreach循环。foreach语句给编程带来了很大的方便,减少了代码,并增加了程序的可读性。C++虽然不支持foreach关键字,但C++是一门强大的语言,只要稍微用一点小技巧,也可以在C++中使用foreach循环。 在C#中,foreach语句的效果让人吃惊。foreach语句省去了复杂而又类似的循环控制语句,使代码非常简洁明了。下面的例子可以清楚地看到这一点。 假有一个类型为ContainerType类型的容器Container,它的每
2010-12-19 15:55:00 17459
转载 学习Objective-C:入门手册
<br />学习Objective-C:入门手册<br />Objective-C是一种简单的计算机语言,设计为可以支持真正的面向对象编程。Objective-C通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的ANSI C语言。类的语法和设计主要是基于Smalltalk,最早的面向对象编程语言之一。<br />如果你以前使用过其他面向对象编程语言,那么下面的信息可以帮助你学习Objective-C的基本语法。许多传统的面向对象概念,例如封装,继承以及多态,在Obje
2010-12-14 22:17:00 857
原创 GCC 编译错误
<br /><br />$ gcc.sh Main<br />Info: resolving ___objc_class_name_NSAutoreleasePool by linking to __imp____objc<br />_class_name_NSAutoreleasePool (auto-import)<br />Info: resolving ___objc_class_name_NSConstantString by linking to __imp____objc_<br />clas
2010-12-14 01:35:00 2573
转载 GCC 简单使用
<br />编译生成目标文件(.*), -I表示被检索的头文件路径<br /> <br />gcc -c Main.m -I/GNUstep/System/Library/Headers/<br /> <br /> <br />-I 表示头文件查找的路径<br />-L 表示库文件查找路径<br />- l 表示需要链接的库文件<br /> <br /> <br />gcc -o helloworld helloworld.m /<br />-fconstant-string-class=NSC
2010-12-14 01:13:00 1334
转载 linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向
<br /><br />#include <sys/stat.h><br />#include <string.h><br />#include <fcntl.h><br />#include <io.h><br />int main(void)<br />{<br /> #define STDOUT 1 //标准输出文件描述符 号<br /> int nul, oldstdout;<br /> char msg[] = "This is a test";<br /> /* create
2010-12-07 17:00:00 871
经典MDB数据库存储系统
2010-02-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人