精华内容
下载资源
问答
  • 反调试OD

    2018-06-21 14:08:30
    反调试工具,这一款工具能掉很多的VMP加密壳,TMD壳 解压密码:1
  • 过反调试

    2016-11-30 00:06:00
    反调试技术可以简单通俗的理解为:防止OD分析软件的技术,也就是反调试技术 那么反调试技术又有几种呢? 下面我介绍几种常用反调试技术 首先声明,下面有一部分内容来源百度,若有喷子觉得恶心,请自觉删除 1. ...

    重所周知,有破解就必有防破解,二者本为一体

    破解技术就不要我多介绍了,下面我来介绍反调试技术 也就是所谓的防破解技术

    反调试技术可以简单通俗的理解为:防止OD分析软件的技术,也就是反调试技术

    那么反调试技术又有几种呢? 下面我介绍几种常用反调试技术

    首先声明,下面有一部分内容来源百度,若有喷子觉得恶心,请自觉删除

    1. 1.       最常用的便是调用windows API 那么 windows API又如何检测OD呢?每一个API的作用是什么呢
    2. 2.       小编在百度上搜寻了一些文章来引用
    3. 3.        1.1IsDebuggerPresent探测调试器是否存在的最简单的API函数是IsDebuggerPresent。它查询进程环境块(PEB)中的IsDebugged标志。如果进程没有运行在调试器环境中,函数返回0;如果调试附加了进程,函数返回一个非零值。
    4. 解释:这里介绍的API是lsDebuggerPresent 他就是一个可以用来检测OD的函数,通过检测自身是否被附加,来检测OD,或者是在OD下运行也会被检测
    5. 5.        
    6. 1.2CheckRemoteDebuggerPresentCheckRemoteDebuggerPresent中的Remote并不意味着调试器必须驻留在不同的计算机上;相反,它表示调试器驻留在单独的并行进程中。 使用IsDebuggerPresent函数来检测调用进程是否在调试器下运行。
    7. 解释:这里介绍的是CheckRemoteDebuggerPresent,他很有实用性,不过可惜只能在XP版本使用,下面是来自网络的解释,CheckRemoteDebuggerPresent是另一个检测调试的api,只是可惜它似乎只能在winxp sp1版本以后使用。它主要是用来查询一个在winnt时就有的一个数值,其内部会调用NtQueryInformationProcess()
    8. 1.3NtQueryInformationProcess这个函数是Ntdll.dll中一个原生态API,它用来提取一个给定进程的信息。它的第一个参数是进程句柄,第二个参数告诉我们它需要提取进程信息的类型,例如将该参数置为ProcessDebugPort(值为0x7),将会告诉你这个句柄标识的进程是否正在被调试。如果进程正在被调试,则返回调试端口,否则返回0。
    9. 9.       解释:这个API函数是属于Ntdll里面的API,它主要可以提取进程信息来检测OD,如果OD信息全部被替换,则此API 检测不到
    10. 1.4GetLastError编写应用程序时,经常需要涉及到错误处理问题。许多函数调用只用TRUE和FALSE来表明函数的运行结果。一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因。恶意代码可以使用异常来破坏或者探测调试器。调试器捕获异常后,并不会立即将处理权返回被调试进程处理,大多数利用异常的反调试技术往往据此来检测调试器。多数调试器默认的设置是捕获异常后不将异常传递给应用程序。如果调试器不能将异常结果正确返回到被调试进程,那么这种异常失效可以被进程内部的异常处理机制探测。
      解释:这是利用OD处理异常信息检测的API,他可以通过异常来检测到OD
    11. 1.5对于OutputDebugString函数,它的作用是在调试器中显示一个字符串,同时它也可以用来探测调试器的存在。使用SetLastError函数,将当前的错误码设置为一个任意值。如果进程没有被调试器附加,调用OutputDebugString函数会失败,错误码会重新设置,因此GetLastError获取的错误码应该不是我们设置的任意值。但如果进程被调试器附加,调用OutputDebugString函数会成功,这时GetLastError获取的错误码应该没改变。
    12. 这个API名字叫OutputDebugString,他这个函数意思是  程序如果调用了这个API,就会在OD中显示一条字符串(由于API而生成的,非程序本身),然后用通过SetLastError函数,用来获取返回值(上文所说的错误值),如果被OD调试 则返回的便是真,没有被调试则为假
    13. 1.6对于DeleteFiber函数,如果给它传递一个无效的参数的话会抛出ERROR_INVALID_PARAMETER异常。如果进程正在被调试的话,异常会被调试器捕获。所以,同样可以通过验证LastError值来检测调试器的存在。如代码所示,0x57就是指ERROR_INVALID_PARAMETER。
    14. 解释:这个API名为DeleteFiber,他作用是抛出一个异常,众所周知,OD会自动处理异常(除非你手动设置),这时候,他便可以通过LastError  返回值来检测OD

     

     

    那么关键来了,我们要如何干掉这些检测呢???

    1. 用工具(推荐,简单快捷)
    2. 可以用类似XUTER 冰刃等软件,来挂钩此函数,至于如何挂钩,找到相关函数,如何右键-恢复
    3. 2.通过写源码 来HOOK此函数
    4. 这里就不过多介绍了,例子百度有一大堆
    5. 过API检测就这么简单,不过想要找到是哪个API  还是需要花费一番功夫的
    6. 常用的检测OD方法还有几种
    7. 1. 3.2查找窗体信息
      FindWindow函数检索处理顶级窗口的类名和窗口名称匹配指定的字符串。
    8. 这个比较简单过,只需要更改OD的窗口名称和类名,可以用精易助手编写
    9. 10.              5.判断父进程是否是explorer.exe
    10. 11.             这个进程是系统主要进程,一般进程的父进程都是这个
    11. 12.             如果用OD运行的话会改变父进程从而检测到软件被调试,过此方法很简单,OD附加即可
    12. 判断是否具有SeDebugPrivilege权限
      默认情况下进程是没有SeDebugPrivilege权限的,但是当进程通过调试器启动时,由于调试器本身启动了SeDebugPrivilege权限,当调试进程被加载时SeDebugPrivilege也就被继承了。所以我们可以检测进程的SeDebugPrivilege权限来间接判断是否存在调试器,而对SeDebugPrivilege权限的判断可以用能否打开csrss.exe进程来判断。
    13. 14.             SeDebugPrivilege权限可以理解为系统最高权限,相当与在美国和奥巴马一般,一般进程都获取不了这个权限,除非一些病毒用非法手段获取权限,OD运行时会获取此权限,从而他的子进程也会附带这个权限,所以可以通过检测是否有次权限来判断是否被调试,过检测方法很简单,一样是附加
    14. 15.             15.时钟检测
    15. 16.             这个很容易理解,就是在时钟里面添加检测代码,循环检测
    16. 17.             解决方法
    17. 18.             推荐工具 XUTER
    18. 右键-查看-查看进程定时器-移除
    19. 下面再来讲讲关于一些反调试进程的反调试
    20. 有些进程调用了一些检测模块
    21. 检测到OD会弹出
    22.           警告!   程序初始化失败!
    23.  
    24.            请关闭 调试工具 再试!
    25.  
    26.                软件破解逆向QQ群:xxxxxxx
    27. 首先声明:下列说明我已经调试过,所以无法截图,蓝屏太容易触发
    28. 然后迅速蓝屏,对于这种软件,我们应该怎么办?
    29. 首先第一个想到的方法便是附加,但是我们一打开OD他就马上检测,怎么办?,这样就说明他要么是时钟检测,要么就是循环检测,我们先看看时钟检测,用XUTER,查看定时器,哦  结果发现蓝屏,那怎么办呢?  下面教大家一招妙招
    30. 依然用到的是XUTER
    31.  

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

      1. 首先暂停该程序运行,然后便发现程序卡死了,然后再结束定时器,再点下方的恢复进程运行
      2. 好了,这下他的检测被我们解决了,我们就直接附加吧
      3. 结果发现,他隐藏了进程,没关系,我们用拖拽补丁,结果显示无法获取窗口,附加失败,那怎么办呢? 出现这种情况无疑就是程序调用了驱动,导致没有权限附加
      4. 这样我们依然用到XUter
      5. 我们跳到本工具配置,然后勾选禁止驱动加载,然后再运行进程,重复上面操作,然后打开OD附加
      6. 就发现成功了,这方法是我专门对付那些有驱动保护的,如果软件有检测驱动是否加载成功,可以用OD去掉
      7. 这就是我总结的一些方法,很简单很适用,至少我对于那些检测 我都有应付的办法
      8. 由于是自己写的  对于API知识不是很到位,所以难免会有差错,发现差错可以@我及时纠正,现在时间试:2016年10月23日03:55:23  我也要睡觉了,虽然是星期六 但还是要睡觉的
      9. 下面有时间再完善一下吧,谢谢大家的观看
      10. 吾爱破解论坛BY:Very-good

    转载于:https://www.cnblogs.com/zhuh102/p/6116005.html

    展开全文
  • PhantOM是OllyDbg的一款插件,可以用来绕大多数的反调试技术,功能十分强大,所以单独对这个插件进行使用总结。(Ps:现在似乎不怎么常用,在64位下的兼容性比较差,现在比较常用的是sharpOD,但因为在《恶意代码...

    PhantOM是OllyDbg的一款插件,可以用来绕过大多数的反调试技术,功能十分强大,所以单独对这个插件进行使用总结。(Ps:现在似乎不怎么常用,在64位下的兼容性比较差,现在比较常用的是sharpOD,但因为在《恶意代码分析实战》接触PhantOM较多,所以先对之进行总结)

    一、如何安装

    OD的插件都比较简单,首先是找到插件的资源下载,将插件的dll放到OD目录下的plugin文件夹下即可。
    在这里插入图片描述
    安装完成后,就可以在OD菜单栏插件中找到该插件。
    在这里插入图片描述

    二、PhantOM功能介绍

    这是插件的界面。我们要了解插件的功能,首先就要知道这些功能是对抗何种反调试的。
    在这里插入图片描述
    1.hide from PEB
    可以用来解决反调试Windows API和反调试数据结构,因为他们反调试的基础都是PEB中的数据成员BeingDebugged属性、ProcessHeap属性、NTGlobalFlag。
    索引勾选这个选项就可以绕过此类反调试技术。
    2.protect DRx
    这个选项我没用过,但是大体上应该是用来对抗通过硬件断点来进行反调试的技术,比较少见。
    《恶意代码》中一笔带过:
    在这里插入图片描述
    3.fix ODString,FPU,Import
    4.hook blockInput
    5.hook GetTickCount
    GetTickCount()返回最近系统时间与当前时间的相差毫秒数。hook就可以绕过时钟检测。
    6.hook GetProcessTimes
    7.remove EP break
    8.custom handler exceptions
    9.chance Olly Caption
    10.patch NumberOfRvaAndSizes
    11.load diver
    12.hide OllyDbg windows
    绕过窗口痕迹反调试,隐藏OD窗口信息。
    13.hook NtSetContextThread
    NtSetContextThread设置当前线程上下文信息,可能是通过设置寄存器信息等,防止下硬件断点。
    14.hook RDTSC
    对抗时钟反调试技术。

    (以上很多功能我都没有用到过,网上关于这方面资料很少,以后学习过程中,我会慢慢补齐。)

    同时也可以看出hook技术相当的重要啊。

    展开全文
  • 反调试总结

    千次阅读 2016-04-04 02:35:18
    TP:3种方法适用于win7 x64 ~ win10 ...三:手动TP:先于TX游戏运行OD,结束11号线程 直接附加进程 x86方法: 1.以上随便一种 + IAT HOOK Tesafe.sys MmIsAddressVaild 对挂钩函数地址进程过滤 2.以上随便一种
    TP:3种方法适用于win7 x64 ~ win10
    一:1.恢复调试权限 2.结束11号线程 3.恢复所有线程
    二:秒杀TP方法:CE使用VEH模式 结束11号线程
    三:手动过TP:先于TX游戏运行OD,结束11号线程 直接附加进程
    x86方法:
    1.以上随便一种 + IAT HOOK Tesafe.sys MmIsAddressVaild 对挂钩函数地址进程过滤
    2.以上随便一种 + 重载内核
    HS:
    1.双机调试
    大部分HS游戏使用TMD壳 而TMD壳有一个反调试函数 使用ZwQuerySystemInformation 35号功能SystemKernelDebuggerInformation 检测内核/应用层调试器
    过的方法内核Hook ZwQuerySystemInformation 进行过滤 x64需要越PG!
    HS的驱动使用MmGetSystemRoutineAddress获取KeDebuggerEnabled 和 KdEnableDebugger 地址进行操作使双机失效 方法是:hook MmGetSystemRoutineAddress 只要是获取这两个函数都返回一个假函数指针一个假内存地址
    在应用层使用
    ZwQueryInformationProcess 7号功能 ProcessDebugPort 检测是否被调试 方法 hook ZwQueryInformationProcess 过滤7号功能 使返回数据为0即可
    x64下还需要处理ObjectCallBacks 注销也好替换也好总之不要HOOK 有检验 当然如果有精力可以HOOK 然后hook NtOpenprocess 过滤OD等调试工具 总之不能让它自己得到自己的句柄即可
    XIGCODE3:
    双机使用了SEH结构化异常处理 自己触发int 2d异常 自己处理 如果有调试器这个异常就被调试器夺过去了 调试器只是将eip+1 然后就放行了,游戏找不到这个异常就over 方法hook int 2d触发的地方 跳过异常的地方直接跳进他的异常函数 
    XIGCODE3的反调试很简单 一个StrongOD就可以调试了 问题是如何保护OD ObjectHook或者ObjectCallBacks都行
    如果发现打不开进程 就要恢复ObjectCallBacks 然后hook NtOpenProcess进行过滤 ObjectCallBacks的特点是全局 任何进程都必须遵守 这也是为什么白名单失效的原因
    做到打不开进程即可当然要过滤OD啦
    XIGCODE检测很强 反调试很弱
    展开全文
  • 现在我把40G郁金香VC++游戏辅助制作视频教程全部发布出来,其中包括VC基础和OD反汇编调试教程和驱动研发教程等是非常完整一系列游戏辅助视频教程。也适合以后到游戏公司从事游戏安全行业的人研究和学习。
  • NtQueryInformationProcess 是微软 未公开 的一个 API,嗯,这个反调试的方法有一个特点就是 能吾爱破解版OD! ,其他版本的OD没有尝试,但相信这种反调试手法可以检测大部分的第三方OD。 首先需要知道的几点:...

    NtQueryInformationProcess 是微软 未公开 的一个 API,嗯,这个反调试的方法有一个特点就是 能过吾爱破解版OD! ,其他版本的OD没有尝试,但相信这种反调试手法可以检测大部分的第三方OD。
    在这里插入图片描述
    首先需要知道的几点:

    // NtQueryInformationProcess 函数原型
    __kernel_entry NTSTATUS NtQueryInformationProcess(
      IN HANDLE           ProcessHandle,				// 进程句柄
      IN PROCESSINFOCLASS ProcessInformationClass,		// 检索的进程信息类型
      OUT PVOID           ProcessInformation,			// 接收进程信息的缓冲区指针
      IN ULONG            ProcessInformationLength,		// 缓冲区指针大小
      OUT PULONG          ReturnLength					// 实际接收的进程信息大小
    );
    
    // PROCESSINFOCLASS 结构体原型(别问我这都啥意思,我也不知道 /手动滑稽)
    typedef enum _PROCESSINFOCLASS
    {
        ProcessBasicInformation, 					// 0x0
        ProcessQuotaLimits, 
        ProcessIoCounters, 
        ProcessVmCounters, 
        ProcessTimes, 
        ProcessBasePriority, 
        ProcessRaisePriority,
        ProcessDebugPort,							// 0x7
        ProcessExceptionPort, 
        ProcessAccessToken, 
        ProcessLdtInformation, 
        ProcessLdtSize, 
        ProcessDefaultHardErrorMode, 
        ProcessIoPortHandlers, 
        ProcessPooledUsageAndLimits, 
        ProcessWorkingSetWatch,
        ProcessUserModeIOPL,
        ProcessEnableAlignmentFaultFixup, 
        ProcessPriorityClass, 
        ProcessWx86Information,
        ProcessHandleCount, 
        ProcessAffinityMask, 
        ProcessPriorityBoost, 
        ProcessDeviceMap, 
        ProcessSessionInformation, 
        ProcessForegroundInformation,
        ProcessWow64Information, 					// 0x1A
        ProcessImageFileName, 						// 0x1B
        ProcessLUIDDeviceMapsEnabled, 
        ProcessBreakOnTermination, 
        ProcessDebugObjectHandle,					// 0x1E
        ProcessDebugFlags, 							// 0x1F
        ProcessHandleTracing, 
        ProcessIoPriority, 
        ProcessExecuteFlags, 
        ProcessResourceManagement, 
        ProcessCookie, 
        ProcessImageInformation, 
        ProcessCycleTime, 
        ProcessPagePriority, 
        ProcessInstrumentationCallback, 
        ProcessThreadStackAllocation, 
        ProcessWorkingSetWatchEx,
        ProcessImageFileNameWin32, 
        ProcessImageFileMapping, 
        ProcessAffinityUpdateMode, 
        ProcessMemoryAllocationMode, 
        ProcessGroupInformation,
        ProcessTokenVirtualizationEnabled, 
        ProcessConsoleHostProcess, 
        ProcessWindowInformation, 
        ProcessHandleInformation,
        ProcessMitigationPolicy,
        ProcessDynamicFunctionTableInformation,
        ProcessHandleCheckingMode,
        ProcessKeepAliveCount,
        ProcessRevokeFileHandles,
        ProcessWorkingSetControl,
        ProcessHandleTable, 
        ProcessCheckStackExtentsMode,
        ProcessCommandLineInformation,
        ProcessProtectionInformation,
        ProcessMemoryExhaustion,
        ProcessFaultInformation, 
        ProcessTelemetryIdInformation, 
        ProcessCommitReleaseInformation, 
        ProcessDefaultCpuSetsInformation,
        ProcessAllowedCpuSetsInformation,
        ProcessSubsystemProcess,
        ProcessJobMemoryInformation, 
        ProcessInPrivate, 
        ProcessRaiseUMExceptionOnInvalidHandleClose, 
        ProcessIumChallengeResponse,
        ProcessChildProcessInformation, 
        ProcessHighGraphicsPriorityInformation,
        ProcessSubsystemInformation, 
        ProcessEnergyValues, 
        ProcessActivityThrottleState, 
        ProcessActivityThrottlePolicy,
        ProcessWin32kSyscallFilterInformation,
        ProcessDisableSystemAllowedCpuSets, 
        ProcessWakeInformation,
        ProcessEnergyTrackingState,
        ProcessManageWritesToExecutableMemory,REDSTONE3
        ProcessCaptureTrustletLiveDump,
        ProcessTelemetryCoverage,
        ProcessEnclaveInformation,
        ProcessEnableReadWriteVmLogging, 
        ProcessUptimeInformation,
        ProcessImageSection,
        ProcessDebugAuthInformation, 
        ProcessSystemResourceManagement,
        ProcessSequenceNumber,
        ProcessLoaderDetour,
        ProcessSecurityDomainInformation, 
        ProcessCombineSecurityDomainsInformation, 
        ProcessEnableLogging, 
        ProcessLeapSecondInformation,
        ProcessFiberShadowStackAllocation,
        ProcessFreeFiberShadowStackAllocation,
        MaxProcessInfoClass
    } PROCESSINFOCLASS;
    

    _PROCESSINFOCLASS → ProcessDebugPort:

    进程处于被调试状态时,ProcessDebugPort = 0xffffffff

    有调试器时:
    在这里插入图片描述没有调试器时:
    在这里插入图片描述
    参考代码:

    #include "stdafx.h"
    
    #include <iostream>
    #include <windows.h>
    #include <winternl.h>
    
    #pragma region 依赖 
    
    typedef NTSTATUS(NTAPI *pfnNtQueryInformationProcess)(
        _In_      HANDLE           ProcessHandle,
        _In_      UINT             ProcessInformationClass,
        _Out_     PVOID            ProcessInformation,
        _In_      ULONG            ProcessInformationLength,
        _Out_opt_ PULONG           ReturnLength
    );
    
    #pragma endregion
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	pfnNtQueryInformationProcess NtQueryInformationProcess = NULL;	// 存放 ntdll 中 NtQueryInformationProcess 函数地址
        NTSTATUS status;												// NTSTATUS 错误代码,0:执行成功
        DWORD isDebuggerPresent = -1;									// 如果当前被调试,则 = ffffffff
        HMODULE hNtDll = LoadLibrary(TEXT("ntdll.dll"));				// ntdll 模块句柄
    
    	// ntdll 加载成功
    	if(hNtDll){
    		// 取 NtQueryInformationProcess 函数地址
    		NtQueryInformationProcess = (pfnNtQueryInformationProcess)GetProcAddress(hNtDll, "NtQueryInformationProcess");
    		
    		// 取地址成功
    		if (NtQueryInformationProcess){
    			// NtQueryInformationProcess 检测调试器
    			status = NtQueryInformationProcess(
                    GetCurrentProcess(),			// 进程句柄
                    0x7,							// 要检索的进程信息类型,ProcessDebugPort:调试器端口号
                    &isDebuggerPresent,				// 接收进程信息的缓冲区指针
                    sizeof(DWORD),					// 缓冲区大小
                    NULL							// 实际返回进程信息的大小
    				);
    
    			// NtQueryInformationProcess 执行成功
    			if(status == 0 && isDebuggerPresent != 0){
    				// 输出
    				std::cout << "status = " << status << std::endl;
    				std::cout << "isDebuggerPresent = " << std::hex << isDebuggerPresent << std::endl;
    				std::cout << "检测到调试器" << std::endl;
    				
    				getchar();
    				return 0;
    			}
    		}
    	}
    
    	// 输出
    	std::cout << "status = " << status << std::endl;
    	std::cout << "isDebuggerPresent = " << std::hex << isDebuggerPresent << std::endl;
    	std::cout << "没有发现调试器" << std::endl;
    
    	getchar();
    	return 0;
    }
    
    

    _PROCESSINFOCLASS → ProcessDebugObjectHandle:

    ProcessDebugObjectHandle = 调试对象句柄

    有调试器时:
    在这里插入图片描述
    没有调试器时:
    在这里插入图片描述
    代码:

    // 只需要把 NtQueryInformationProcess() 中的 0x7 改成 0x1E
    

    _PROCESSINFOCLASS → ProcessDebugFlags:

    调试状态:ProcessDebugFlags = 0,非调试状态 ProcessDebugFlags = 1

    有调试器时:
    在这里插入图片描述

    没有调试器时:
    在这里插入图片描述
    代码:

    // 1.把 NtQueryInformationProcess() 中的 0x7 改成 0x1F
    // 2.把 if(status == 0 && isDebuggerPresent != 0) 判断改为 if(status == 0 && isDebuggerPresent == 0)
    

    就这些了,_PROCESSINFOCLASS 结构体力有很多成员查不到意思,如果哪个老哥知道,希望告知,先谢过啦 !!

    在这里插入图片描述

    展开全文
  • 010-OD调试使用小结

    2016-09-11 15:41:54
    OD调试 l 命令栏指令   一、OD调试 重新开始:Ctrl+F2 转到地址:CTRL+G 断点切换: F2 断点窗口: Alt+B 运行 : F9 暂停 : F12 单步步: F8 //遇到CALL跳 单步步入: F7 //遇到CALL进入 ...
  • OD调试一个小程序的思考总结

    千次阅读 2016-04-23 10:06:19
    最近用OD调试了一些小程序,有一些感悟,和大家分享一下 我用了一个多窗口的的程序(软件的试用),对如何去掉弹窗提供一些自己的看法,为大家提供一些思路 首先单步调试,会出现3个弹窗 1.通过对...
  • 反调试伪装加密免杀壳.加壳工具ASM汇编 这个是最舒服的,用OD打开已经配置好的马,找0区(也可以用TOPO加空段)要很大一片哦!右击,选择“二进制”→“编辑”,在ASCII中输入“Cmd /c REG add HKLM\SOFTWARE\360...
  • OD学习记录19.04.20

    2019-04-20 19:31:29
    起手时一般直接使用OD运行程序,观察是否有壳或者反调试检测。按下图情况运行后一直提示不能调试的错误弹窗,所以是存在对程序本身有检测是否是在OD中运行,关闭后OD直接结束程序进程。所以我们需要想办法绕程序...
  • 汇编 OD 调式

    2017-02-04 11:41:00
    OD调试  命令栏指令 一、OD调试 重新开始:Ctrl+F2 转到地址:CTRL+G 断点切换: F2 断点窗口: Alt+B 运行 : F9 暂停 : F12 单步步: F8 //遇到CALL跳 单步步入: F7 //遇到CALL进入 运行到选定...
  • dtdebug 调试软件

    2018-07-02 21:37:24
    带驱动保护的第三方插件不能用来调试带有反调试保护功能的程序。 二、核心技术 滴水单机VT调试器软件V1.0之所以具备上述强大功能,其核心技术在于:利用 CPU 的VT功能,无需更改INT3、INT1,并监控DR0-DR7寄存器,...
  • OD的简单使用一、下载二、窗口三、调试打开方式调试中我们经常要用到的快捷键有这些:附:破解(绕)一个CRACKME.EXE1、分析程序2、使用OD打开3、寻找 MessageBoxA()函数在何处被调用找到了 MessageBoxA()函数...
  • OD: 常用快捷键 : F2:下断点 F3:打开程序 F4:运行到当前光标处(可应用在跳出 循坏) F7:单步步入(进函数) F8:单步 步 F9;运行 F10:打开汇编选项菜单快捷键 F12:暂时停止 Ctrl+F2:重新开始 ...
  • x64dbg调试器使用

    2020-06-26 16:19:44
    都是通过编译器将写的程序经过编译之后生成可执行文件.exe(windows),博主当时也是这么一个经历,很少会想如何通过.exe文件来查看以及了解自己写的程序是如何运行,之后了解到一款软件OD OD,是一个汇编工具,又...
  • OD一按CTRL+G就自动退出了(转)

    千次阅读 2011-02-28 20:55:00
    插件问题: 问题描述:...  起初以为是程序反调试造成,后来发现任意一个程序都会这样,今天,仔细找了一下,一个一个试发现原来是这两个插件一起造成的,试了几个版本的OD,都会这样。不知道你们的
  • 一、去花指令,过反调试,分析TLS回调函数功能 这个程序用到了TLS反调试技术,很遗憾,我用的编程达人OD和X64DBG都有反反调试插件,直接把TLS过了,所以我刚开始甚至没意识到反调试的存在。 然而,如果您使用无插件...
  • 简介承接上文,上文中使用cuckoo沙箱的时候提到,分析恶意代码的时候,首先利用沙箱做粗略分析,然后可以目标程序进行动态分析(OD,Windbg调试)或者静态分析(IDA静态汇编).如果嫌每次逆向麻烦的话,同样可以借助...
  • C、实战XX游戏驱动保护,让OD,CE正常附加调试 D、小结 1.3.4为DDK_HelloWorld添加设备例程-12课 A、相关内核API介绍 B、重要数据结构驱动对象DRIVER_OBJECT C、重要数据结构设备对象DEVICE_OBJECT D、添加创建设备...
  • 160个CrackMe-015

    2019-11-01 15:23:59
    可以看到,采用VB编写,直接使用VB的编译工具进行编译也可以,直接用OD调试也可以,之前使用VB编译工具进行解密,这次采用OD来直接调试,当然这里会把VB编译的主要代码ti贴出来,以供参考: 可以看到密码...
  • 在实际工作中根据需要修改OD调试器,可以避开很多反调试的壳,希望对各位网友有用处!
  • 手动脱RLPack壳实战

    千次阅读 2015-07-15 10:05:21
    作者:Fly2015 吾爱破解论坛培训第一课选修作业练习的第7题。这个壳没听说,但是脱起来比较简单,根据ESP定律即可直达光明,Dump...OD载入加壳程序进行调试分析,入口点代码汇编快照。 看到PUSHAD指令想都不要想,
  • 手动脱WinUpack 壳实战

    千次阅读 2015-07-15 09:40:21
    作者:Fly2015 吾爱破解培训第一课选修作业第6个练习示例程序。不得不重复那句话,没见这种壳,该壳是压缩壳的一种...OD载入加WinUpack 壳的程序进行动态调试分析,加壳程序入口点汇编快照。 想都不用想,看到PU
  • 郁金香vc驱动保护

    2011-05-15 15:13:20
    郁金香VC++驱动保护全套 免key版 天異赤提供 教程下载地址获取方法: 第一步:打开下方链接,填写QQ邮箱,系统会往QQ邮箱发一封确认订阅邮件 第二步:打开QQ邮箱查看邮件,确认订阅,订阅成功后系统会自动把下载地址和...
  • 160个CrackMe 077 firework2

    2016-06-04 22:18:00
    首先,PEID查壳 是一个Delphi程序 伪码检验: 弹出错误对话框,于是去OD中,查找文本字符串: ... 下面我们的思路就是用它来打开程序,找到程序的关键点,然后再OD中动态调试,破解程序。 OK,用DeDe 打开程序: 点击...
  • 文章目录前言分析程序OD调试程序 前言 之所以直接跳Crackme012是因为那个是个16位的程序,放到现在来说就算逆出来...用VB汇编工具来看下,是P-Code编译的,唉,头疼,直接用OD看吧 OD调试程序 首先来看1.0 根据...
  • windbg 常用知识

    2018-11-17 22:34:27
    G 是运行 U 是汇编 ...然后我们 F10 步OD的 f8) F8 F11 步入(OD的f7) shift +f11(shift +f9 ) 返回上一层  f5 相当于 od的f9 bp == int 3  想调试的时候有源码可以设置符号表  ...
  • 最后一次异常法

    2017-06-24 16:18:00
    我们还是使用PatchOD来加载它,并且配置好反反调试插件。 然后将EXCEPTIONS菜单项中的忽略各个异常的选项都勾选上,运行起来。 我们可以看到程序运行起来了,我们单击工具栏中L按钮打开日志窗口。 ...
  • A:patch窗口用来保存你在调试的程序中修改的代码的。比如你前面调试了一个程序,在OD中把某处的JE改成了JMP,OD会在patch中记录这个修改,你下次再重新载入程序时,就能在OD的patch窗口中看到你原来改动的代码。按...
  • 感觉这个程序原来分析一次,很相似 ...(然后用OD下断看不到,结合本章知识点猜想是有反调试器的手段) 在函数TlsCallBack里发现了这个: 在字符串里找到了这个:如果改下字符串的话,是不是可...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

od过反调试