摘要:路径截断与合并函数PathRemoveArgs去除路径的参数PathRemoveBackslash去除路径最后的反斜杠“\”PathAddBackslash在路径最后加上反斜杠“\”PathRemoveBlanks去除路径前后的空格PathAddExtension在文件路径后面加上扩展名PathRemoveExtension去除文件路径扩展名PathRenameExtension更改文件路径扩展名PathRemoveFileSpec去除文件名,得到目录PathUnquoteSpaces去除路径中的首尾空格PathQuoteSpaces判断路径中是否有空格,有的话,就是用“”引号把整个路径包含起
阅读全文
摘要:相对路径到绝对路径PathCombinehttp://msdn2.microsoft.com/en-us/library/ms628544.aspx 绝对路径到相对路径PathRelativePathTohttp://msdn2.microsoft.com/en-us/library/ms628614.aspx#include "stdafx.h"#include "shlwapi.h"#pragma comment(lib, "shlwapi.lib")int _tmain(int argc, _TCHAR* argv[]){ ch
阅读全文
摘要:新的注入方式:利用一个未公开函数NtMapViewOfSection在远程进程地址空间写入代码,并且用一种新的技术在远程进程中执行它,这种技术完全工作在用户模式下,并且不需要特殊的条件比如像管理员权限或者之类的要求#define _WIN32_WINNT 0x0400#include typedef LONG NTSTATUS, *PNTSTATUS;#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)typedef enum _SECTION_INHERIT {ViewShare = 1,ViewUnmap = 2} SECTION_
阅读全文
摘要:KnownDlls必须是在系统目录中,并且是在系统启动的时候,从注册表读取KnownDlls列表。之后,如果加载这个dll,首先搜索系统目录,其次搜索当前目录。系统自带KnownDlls,读取注册表里的dll,就不管其他的dll了 knowndlls,顾名思义,是指系统目录默认加载的DLL,现在病毒伪装的马甲DLL置于文件启动目录之下伺机启动早已不是什么有创意的做法。应用程序启动前优先加载当前目录下的所需DLL,这就给木马的启动又多了一条途径,而knowndlls键值正是斩断这条传播通断的利剑,无论你在当前目录下有多少马甲DLL,应用程序都会从SYSTEM目录下去寻找,从而避免了马甲的毒害。K
阅读全文
摘要:说起DLL劫持技术,相信大家都不会陌生,因为这种技术的应用比较广泛,比如木马后门的启动、破解程序的内存补丁、外挂插件的注入以及加密狗的模拟等。之所以DLL劫持技术深受黑客们的喜爱,主要是因为该技术可以有效的躲过大部分杀软,并且实现起来技术难度不大。DLL劫持技术也不是什么新技术,记得在《Windows核心编程》中也有提及相关技术。可是对我们广大初学者来说,DLL劫持技术就显得很神秘了,本系列教程将向大家详细讲解什么是DLL劫持、DLL劫持的形成原因及原理、最后还会以实例向大家讲解如何通过编程实现DLL劫持。●背景知识●首先我们要了解Windows为什么可以DLL劫持呢?主要是因为Windows
阅读全文
摘要:DWORD MyGetFileSize(const char* FileName){ FILE *fp = fopen(FileName, "rb"); if (NULL == fp) { return 0; } DWORD pos = ftell(fp);// 返回当前值,pos保存当前值 fseek(fp, 0, SEEK_END);// 定位到最后 DWORD size = ftell(fp); // 返回当前值,为文件大小size fseek(fp, pos, SEEK_SET);// 设回原来的当前值 fclose(fp); return size;}取得文件大小
阅读全文
摘要:目前windows下注入dll的技术大体上就是两种1:钩子 SetWindowsHook2:创建远程线程 CreateRemoteThread尽管都能实现远程注入dll,但都难逃杀毒软件的法眼,特别是 CreateRemoteThread一般都被杀毒软件监控的很牢,这里提供一个巧妙的方法能够利用目标进程(确切地说是线程)自己主动调用LoadLibrary装载dll.我们想一想,windows下vc调试器可以调试正在运行的进程,功能很是强大,那可不可以借鉴调试器的机理呢?完全可以,调试器的机理大致分为以下几步:1:OpenProcess() 获取目标进程句炳,拥有调试权限(我们这里不需要用这个权
阅读全文
摘要:标题】: 劫持正在运行进程的EIP注入代码的方法【作者】: 火血狼(QQ:65845743)【工具】: VC++2005, WINXP, WIN7【声明】: 1.禁止用来做破坏;2.转载请告知作者.-----------------------------------------------------------------------------【灵感来源】近日,在读>的时候,偶然发现,一个函数GetThreadContext,该函数可以使用户级的 代码访问并操作指定线程的上下文:CONTEXT,通过这个CONTEXT里的一个字段EIP,我们可以得到CPU寄存器的当前值。当时就想,如
阅读全文
摘要:一般来讲GUI程序不能使用STDIN和STDOUT,但是有时有些特殊需要,希望GUI程序也有控制台,如:一个程序,既可以以GUI方式运行,又可以如果用户在控制台里打程序名的话,就以控制台程序的方式运行。通过AllocConsole() 和 AttachConsole() 这两个WIN API就能实现上面的需求。这两个API分别是在GUI(MFC)程序中分配一个控制台和将程序附着到一个控制台上。用法举例: AttachConsole(ATTACH_PARENT_PROCESS); // 将当前程序附着到父进程上,因为是从控制台启动的,所以当前程序的父进程就是那个控制台。freopen("
阅读全文
摘要:LoadStdProfileSettings -- 加载MRU2010-01-17 14:49:40|分类:C++ Relation |标签:|字号大中小订阅 This method is called from within the InitInstance method to enable and load the list of most recently used (MRU) files and last preview state. IfnMaxMRU is zero, no MRU list will be maintained.最近文件列表可以让你很方便地打开你以前曾经打开过的文
阅读全文
摘要:这几天做MDT时,总是会遇到x86\x64\ia64这几个文件夹。前两者很常见,自从Win7系统出现之后,经常会遇到。于是猜想ia64应该也是CPU的某种架构或版本。现对三者做了下总结。x86或80x86是英特尔Intel首先开发制造的一种微处理器体系结构的泛称。该系列较早期的处理器名称是以数字来表示,并以“86”作为结尾,包括Intel 8086、80186、80286、80386以及80486,因此其架构被称为“x86”。x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在
阅读全文
摘要:打开IDA,拖拽一个EXE文件进去,首先会弹出如下窗口:Kernel option1、Kernel option2、Processor option这三个选项会控制反汇编引擎的工作状态,一般按默认即可,大多数情况下,分析选项的默认值在准确性和方便性之间提供一个折中参数,如果IDA分析出有问题的代码时,把Kernel option1中的选项Make final analysis pass选项关闭是很好的方法:在某些情况下,一些代码因不在预计的位置而不被确认,尝试把Kernel option2中的Coagulate data segments in the final pass选上是有帮助的(注意
阅读全文
摘要:1.目标文件已完全被Dump,另存为一个文件2.目标文件必须正在运行中3.事先找到目标程序真正的入口(OEP)或IAT的偏移与大小以加壳RebPE.exe为例,首先OD加载:调试到00413001,设置硬件断点hr espF9断下来,单步调到OEP处:这时启用LoadPE工具,找到对应的进程,右键先执行"correct ImageSize”,再执行"dump full",保存为dumped.exe运行ImportREC,选择RebPE.exe进程:在右下角OEP处埴上正确的OEP的RVA值,这里填1130,默认时,ImportREC重建输入表时会同时用此值修正入口
阅读全文
摘要:BP表达式 [,条件]在指定地址设置INT3断点 BP EAX+10BP 410010, EAX==WM_CLOSEBP Kernel32.GetProcAddressBPX 标签在当前模块每一个对外部标签的调用设置断点 BPX CreateFileABC 表达式删除指定地址的断点 BC 410010MR 表达式1 [,表达式2]设置指定范围的内存访问断点MW 表达式1 [,表达式2]设置指定范围的内存写断点SetMD 移除内存断点HR 表达式设置1字节的硬断点,当访问该地址时中断HW 表达式设置1字节的硬断点,当写该地址时中断HE 表达式设置硬断点,当执行该地址时中断HD [表达式]移除指定
阅读全文
摘要:PEiD能检测大多数编译语言.、病毒和加密的壳,它主要利用查特征串搜索来完成识别工作的,各种开发语言都有固定的启动代码部分,利用这点可识别是何种语言编译的,被加壳程序处理过的程序,在壳里会留下相关加壳软件的信息,利用这点就可识别是保种壳所加密的,它提供了一个扩展接口文件userdb.txt ,用启可以自定义一些特征码,这样可以识别出新的文件类型,签名的制作可以用插件Add Signature来完成PEID的扫描模式正常扫描模式:可在PE文档的入口点扫描所有记录的签名深度扫描模式:可深度扫描所有记录的签名,这种模式要比上一种的扫描范围更广,更深入核心扫描模式:可完整的扫描整个PE文档,但相对有点
阅读全文
摘要:OD运行CrackHead.exe,菜单Shit--Try it,点击Check it,发现怎么都没反映首先Ctrl+N切到当前模块的名称(标签)选中API GetWindowTextA:右键,选择在每个参考上设置断点:点击后,OD左下角会出现:点击Check It按钮,断下:把断点都删除,在00401328处加个断点,再运行,可以直接看到算法
阅读全文
摘要:OD加载CrackMe3.exe运行,点击Register now!,会弹出一个对话框:那么"Wrong Serial, try again"可以做为参考字符串,OK,重新运行这个程序:我们在反汇编窗口中右击,弹出一个窗口点击All referenced text strings(所有参考文本字串)之后出现以下界面:在此窗口右击,选择Search for text输入Wrong来查找:找到一处,选中这一行,右击,选择反汇编窗口中跟随:这意思是就是跳转到反汇编窗口的00440F79这一行:为了看看是否还有其他的参考,可以通过右键选择查找参考->立即数:Initial C
阅读全文
摘要:Run trace可以把被调试程序执行过的指令保存下来,了解以前发生的事件,它能把地址、寄存器的内容、消息等记录到Run trace缓冲区中,在运行Run trace前,要把缓冲区设置大些,否则执行的指令太多造成缓冲区溢出:如果要把Run trace的数据保存到文件,在跟踪之前,打开Run trace窗口,鼠标右击执行Log to file即会弹出个文件保存框需要运行Run trace,单击菜单Debug/Open or clear run trace,在打开Run trace缓冲区后,OD会记录在反汇编窗口显示的是被调试程序领空,在反汇编窗口的快捷菜单中选择Run trace/Add ent
阅读全文
摘要:以下演示如何下条件断点:在调试过程中,经常希望断点满足一定条件时才中断,这类断点称为条件断点,在OD的帮助文档有详细的说明:(1)按寄存器条件中断:用OD打开Conditional_bp.exe,在0040147c,按shift+F2设置条件断点:输入表达式eax == 040000,这样如果eax为0400000h,OD将中断,用OD帮助文档解释下:040000- 所有整数常量都认为是十六进制的,除非后面跟了点EAX - 寄存器EAX的内容,解释为无符号数(2)按存储器条件中断先看下CreateFileA函数:HANDLE WINAPI CreateFile( __in ...
阅读全文
摘要:以下演示如何下消息断点,OD运行TraceMe.exe,单击系统菜单View/Windows(查看/窗口)或单击工具栏的W按钮,如无内容,则执行右键菜单"Actualize"刷新命令现在要对Check按钮下断点,当单击按钮时中断,在Check行上单击鼠标右键,在弹出的右键菜单中,选择"Message breakpoint on ClassProc"当单击事件发生时,会发送WM_LBUTTONUP这个消息,所以,选中这个消息,单击OK,设好消息断点:单击Check按钮,将会中断到windows系统代码中,由于处于系统底层代码里,这时企图使用Alt+F9或C
阅读全文
摘要:使用TraceMe.exeOD按F3加载TraceMe,再按F9运行起来,如图所示设置一个断点:Ctrl+G打开跟随表达式窗口OllyDbg里对API的大小写敏感,输入的函数名大小写必须正确,比如以下两种写法都是不正确的:点击OK后,会跳到系统User32.dll的GetDlgItemTextA函数入口处:按Alt+B快捷键或单击B按钮打开断点窗口,如图所示:这里显示的断点不包括硬件断点Ctrl+N:打开当前模块的名称(标签)列表 比如刚开始进入TraceMe时,按Ctrl+N打开的是TraceMe的名称列表在Ctrl+G查找User32.dll的GetDlgItemTextA成功后:输入字符
阅读全文
摘要:1.在反汇编面板窗口,Hex dump列:设置或取消无条件断点,对应快捷键是F2键2.Comment:增加或编辑注释,对应的快捷键是;键,在反汇编面板窗口按下会出现如下图:3.OD有界面选项(Appearance)和调试选项(Debugging options)等,这些选项配置都保存在ollydbg.ini文件中.4.UDD用来保存当前调试的一些状态,如断点,注释,以便下次调试时继续使用.5.od可以通过两种方式加载目标程序调试,一种是通过createprocess创建进程 另一种是利用DebugActioveProcess函数将调试器捆绑在一个正在进行的进程上.6.F7单步调试,遇到CALL
阅读全文