GetStartupInfo 反调试】的更多相关文章

在使用 CreateProcess 创建进程时,需要传递 STARTUPINFO 的结构的指针,而常常我们并不会一个一个设置其结构的值,连把其他不用的值清0都会忽略,而 ollydbg 也这样做了,我们可以使用 GetStartupInfo 检查启动信息,如果很多值为"不可理解"的,那么就说明自己不是由 explorer 来创建的.(explorer.exe 使用 shell32 中 ShellExecute 的来运行程序, ShellExecute 会清不用的值) 还有一点 olly…
反调试手法之CreateProcess反调试 在学习Win32 创建进程的时候.我们发现了有一个进程信息结构体. STARTUPINFO. 这个结构体可以实现反调试. 具体CreateProcess可以参考上一篇博客.:  https://www.cnblogs.com/iBinary/p/9571577.html 一丶实现反调试需要的东西. 假设我们要实现反调试. 那么我们需要一个API GetStartupInfo (STARTUPINFO) 使用此API可以在进程启动的时候获取启动信息结构…
//使用IsDebuggerPresent这个API来检测是否被调试function FD_IsDebuggerPresent(): Boolean;beginif IsDebuggerPresent then      Result := Trueelse      Result := False;end; //使用查看PEB结构中标志位beingDegug来检测是否被调试function PD_PEB_BeingDebuggedFlag(): Boolean;beginasm      mo…
1.加载调试符号链接文件并放入d:/symbols目录下. 0:000> .sympath srv*d:\symbols*http://msdl.microsoft.com/download/symbols Symbol search path is: srv*d:\symbols*http://msdl.microsoft.com/download/symbols Expanded Symbol search path is: srv*d:\symbols*http://msdl.micros…
C/C++ 要实现程序反调试有多种方法,BeingDebugged,NtGlobalFlag,ProcessHeap,CheckRemoteDebuggerPresent,STARTUPINFO,IsDebuggerPresent,父进程检测,TLS 线程局部存储,RDTSC时钟检测反调试,MapFileAndCheckSum,等都可实现反调试,这里我分别编写了一些案例,基本上一锅端了. 使用WinDBG随便载入一个二进制文件,并加载调试符号链接文件. 0:000> .sympath srv*c…
软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:http://pan.baidu.com/s/1kVRW9AR 强力加密KRPano项目 KRPano资源分析工具1.2版本加入了强力加密KRPano项目的功能,相比KRPano自带的加密,强力加密使得KRPano项目难以被破解,可以有效保护XML,全景图片资源. 加密具有以下特性: 1.KRPano主J…
在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己.为了了解如何破解反调试技术,首先我们来看看反调试技术. 一.Windows API方法 Win32提供了两个API, IsDebuggerPresent和CheckRemoteDebuggerPresent可以用来检测当前进程是否正在被调试,以IsDebuggerPresent函数为例,例子如下: BOOL ret = Is…
系统 : Windows xp 程序 : Crackme-xp 程序下载地址 :http://pan.baidu.com/s/1slUwmVr 要求 : 编写注册机 使用工具 : OD & IDA 可在看雪论坛中查找关于此程序的破文:传送门 这是一个拥有强大反调试机制的cm,无法查询到关键子串.下获取窗口文本的断点没用,设置对按钮下消息断点都没用. 然后用IDA打开后却发现了函数表里有: .................. 这个懂点英文的人都能看出来是 注册按钮的处理函数吧?所以前面那么多防护…
基础知识推荐阅读<软件调试>的第十八章 内核调试引擎 我在里直接总结一下内核调试引擎的几个关键标志位,也是TP进行反调试检测的关键位. KdPitchDebugger : Boolean 用来表示是否显示的抑制内核调试, 当启动项中包含 /NODEBUG选项时,这个变量会被置为 TRUE KdDebuggerEnabled : Boolean 用来表示内核调试是否被启用.当启动项中包含 /DEBUG 或者/ DEBUGPORT 而且不包含/NODEBUG时,这个变量置为TRUE kiDebug…
TLS(Thread Local Storage 线程局部存储) 一个进程中的每个线程在访问同一个线程局部存储时,访问到的都是独立的绑定于该线程的数据块.在PEB(进程环境块)中TLS存储槽共64个(位于PEB的TlsBitmapBits字段中,共64位(bit)微软保证每个进程最少拥有64个索引可用,如果需要,系统还会为线程提供更多的索引).每个TEB(线程环境块)偏移0x2C处是一个PVOID THreadLocalStoragePointer指针,存放着当前进程TLS副本地址.TLS对每个…