逆向工程
文章平均质量分 73
oathevil
夢,是抹不掉的記憶
展开
-
Trojan-Downloader.Win32.Geral.iql 样本 不完全分析
【加壳方式】: UPX【使用工具】: OD【软件介绍】: dowloader【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!peid检查是upx壳,脱壳后od载入.0040314A > $ 55 push ebp0040314B . 8BEC mov ebp, esp0040314D . 81EC转载 2010-03-16 22:32:00 · 797 阅读 · 0 评论 -
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 />汇编语言里 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 · 1061 阅读 · 0 评论 -
关于拦截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 评论 -
关于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 阅读 · 0 评论 -
微软研究院Detour开发包之API拦截技术
<br />我们截获函数执行最直接的目的就是为函数增添功能,修改返回值,或者为调试以及性能测试加入附加的代码,或者截获函数的输入输出作研究,破解使用。通过访 问源代码,我们可以轻而易举的使用重建(Rebuilding)操作系统或者应用程序的方法在它们中间插入新的功能或者做功能扩展。然而,在今天这个商业 化的开发世界里,以及在只有二进制代码发布的系统中,研究人员几乎没有机会可以得到源代码。本文主要讨论Detour在Windows二进制PE文件基础 上的API截获技术。对于Linux平台,作这件事情将会非常的简转载 2010-12-30 16:02:00 · 827 阅读 · 0 评论 -
Detour开发包介绍(1):概述
<br /><br />微软研究院Detours 开发包是一个用来在二进制级别上对程序中的函数 (Function) 或者过程 (Procedure) 进行修改的工具库。一般我们将这种技术称为 Hook 。在现实中,这种技术可以应用在很多场景下。比如截获某些 Windows API ,在实际调用到系统函数前进行一些过滤工作;软件中使用到了一些没有源代码的第三方库,但是又想增强其中某些函数的功能;修改函数返回值;为调试以及性能测试加入附加的代码;或者截获函数的输入输出作研究;破解使用。等等。 Detours转载 2010-12-30 16:05:00 · 1065 阅读 · 0 评论 -
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 · 1013 阅读 · 0 评论 -
从C语言到汇编,从汇编到C语言
<br /><br />看雪一同志写的文章,我觉得很基础和有用,知识着眼于小处。积累才是王道!<br />一、循环语句与发汇编后的机器语言<br />1、for循环<br /> 下面是一段C语言的代码,我们的目的是来看其反汇编的结果:<br /> int myfunction(int a,int b) <br /> { <br /> int c = a+b; <br /> int i; <br /> for(i=0;i<50;i++) <br /转载 2010-11-14 09:38:00 · 1320 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 2604 阅读 · 0 评论 -
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 阅读 · 0 评论 -
内存泄漏检测工具
1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。 2. Dmalloc-Debug Malloc Library. 3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。 4. Leaky-Linux下检测内存泄漏的程序。 5.转载 2010-05-05 23:04:00 · 614 阅读 · 0 评论 -
浅谈C/C++内存泄漏及其检测工具
对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成熟转载 2010-05-05 23:17:00 · 448 阅读 · 0 评论 -
使用VC++和CRT库定位和排除内存泄漏
介绍: 动态分配、回收内存是C/C++编程语言一个最强的特点,但是中国哲学家孙(Sun Tzu,我不知道是谁?那位知道?) 指出,最强的同时也是最弱的。这句话对C/C++应用来说非常正确,在内存处理出错的地方通常就是BUGS产生的地方。一个最敏感和难检测的BUG就是内存泄漏-没有把前边分配的内存成功释放,一个小的内存泄漏可能不需要太注意,但是程序泄漏大块内存,或者渐增式的泄漏内存可能引起的现象是转载 2010-05-05 23:26:00 · 803 阅读 · 0 评论 -
快速定位内存泄漏的位置
每次分配内存系统都会分配一个内存序列标志,通过_CrtIsMemoryBlock函数可以获取这个序列标志值以及分配的文件名和行号位置: ?<a onclick="function onclick(){copycode(p47code1);}" href="javascript:;">[Copy to clipboard]<a onclick="function onclic转载 2010-05-05 23:28:00 · 972 阅读 · 0 评论 -
如何定位运行期的内存泄漏
目录1. 运行期的内存泄漏 和 _CrtDumpMemoryLeaks 2. 分析过程3. 如果你的输出信息没有文件和代码行信息怎么办?4. 附录:代码------------------------------------------------------------------------------------------------------1. 运行期的内存泄漏 和 _Crt转载 2010-05-05 23:43:00 · 645 阅读 · 0 评论 -
黑盒测试之内存泄露与内存检测
内存错误和内存泄露给程序带来了很大的不稳定,是黑盒测试的一项重要关注点 一、 内存错误 内存错误:当一个指针或者该指针所指向的内存单元成为无效单元,或者内存中分配的数据结构被破坏时,就会造成内存错误。常见的内存错误:1)指针或内存未被初始化2)内存分配未成功,却使用了它3)内存分配成功并且初始化,但操作越过了内存的边界;例如数组的边界4)释放了内存却被继续使转载 2010-05-06 01:06:00 · 1042 阅读 · 0 评论 -
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 阅读 · 0 评论 -
OllyDBG 入门之五-- 破解注意事项
<br /><br />1.断点:<br />所谓断点就是程序被中断的地方,中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打电话告诉你他从外地坐火车过来,要你去火车站接他。然后你就向老板临时请假,赶往火车站去接同学,接着将他安顿好,随后你又返回公司继续上班,这就是一个中断过程。解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程转载 2010-12-27 20:32:00 · 1294 阅读 · 1 评论 -
MSIL Decompiler Theory
<br />Introduction<br />Welcome to my journey of writing a .NET assembly decompiler. First of all, I'll try to develop a theory to decompile MSIL. I just do whatever an MSIL instruction asks me to do. But I do it keeping in mind that I am decompiling MSIL.转载 2011-03-06 14:47:00 · 1104 阅读 · 0 评论