x32dbg或x64dbg调试某个程序遇到异常:第一次异常于00007FFA2EDDA839 (406D1388, MS_VC_EXCEPTION)! 无视异常继续运行,加载一些dll文件后还是断在kernelbase.dll的00007FFA2EDDA839处,0F1F4400 00  nop dword ptr ds:[rax+rax],eax. 不过报异常的括号里面的内容变成了(E06D7363, CPP_EH_EXCEPTION). IDA选择Local Win32 debugger也容易出现406D1388异常,Ollydbg倒较少遇到这个异常。
       在x64dbg中选择 调试 > 高级 > 隐藏调试器(PEB),便不会出现异常,能正常调试了。如果遇到故意引起异常来反调试的软件,可以使用一些x64dbg的插件,比如SharpOD. 还可以到https://github.com/x64dbg/x64dbg/wiki/Plugins下载ScyllaHide, TitanHide等。

PEB是指Process Environment Block,进程环境块,是Windows系统定义的结构体,其成员如下:(来源 https://docs.microsoft.com/en-us/windows/win32/api/winternl/ns-winternl-peb)

typedef struct _PEB {BYTE                          Reserved1[2];BYTE                          BeingDebugged;BYTE                          Reserved2[1];PVOID                         Reserved3[2];PPEB_LDR_DATA                 Ldr;PRTL_USER_PROCESS_PARAMETERS  ProcessParameters;PVOID                         Reserved4[3];PVOID                         AtlThunkSListPtr;PVOID                         Reserved5;ULONG                         Reserved6;PVOID                         Reserved7;ULONG                         Reserved8;ULONG                         AtlThunkSListPtr32;PVOID                         Reserved9[45];BYTE                          Reserved10[96];PPS_POST_PROCESS_INIT_ROUTINE PostProcessInitRoutine;BYTE                          Reserved11[128];PVOID                         Reserved12[1];ULONG                         SessionId;
} PEB, *PPEB;

一个具体的例子如下:(来源 https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/-peb)

kd> !peb
PEB at 7ffdf000InheritedAddressSpace:    NoReadImageFileExecOptions: NoBeingDebugged:            NoImageBaseAddress:         4ad00000Ldr                       77fbe900Ldr.Initialized:          YesLdr.InInitializationOrderModuleList: 00241ef8 . 00242360Ldr.InLoadOrderModuleList:           00241e90 . 00242350Ldr.InMemoryOrderModuleList:         00241e98 . 00242358Base TimeStamp                     Module4ad00000 3d34633c Jul 16 11:17:32 2002 D:\WINDOWS\system32\cmd.exe77f40000 3d346214 Jul 16 11:12:36 2002 D:\WINDOWS\system32\ntdll.dll77e50000 3d3484ef Jul 16 13:41:19 2002 D:\WINDOWS\system32\kernel32.dll
....SubSystemData:     00000000ProcessHeap:       00140000ProcessParameters: 00020000WindowTitle:  'D:\Documents and Settings\Administrator\Desktop\Debuggers.lnk'ImageFile:    'D:\WINDOWS\system32\cmd.exe'CommandLine:  '"D:\WINDOWS\system32\cmd.exe" 'DllPath:      'D:\WINDOWS\system32;D:\WINDOWS\system32;....Environment:  00010000ALLUSERSPROFILE=D:\Documents and Settings\All UsersAPPDATA=D:\Documents and Settings\UserTwo\Application DataCLIENTNAME=Console
....windir=D:\WINDOWS

BeingDebugged成员用于指定该进程是否处于调试状态,我猜“隐藏调试器”的效果就是把PEB结构体中的BeingDebugged由True改为False.

x64dbg调试程序遇到异常:406D1388,MS_VC_EXCEPTION. E06D7363, CPP_EH_EXCEPTION相关推荐

  1. OD里alt+F9和Ctrl+F9和shift+F9的区别

    Shift+F9 - 与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理(请参考忽略Kernel32中的内存非法访问). Ctrl+F9 - 执行直到返回,跟踪 ...

  2. OllyDbg完全教程

    OllyDbg完全教程 目录 第一章概述..................................................................1 第二章组件....... ...

  3. Linux 内核调试器 调试指南

    Linux 内核调试器内幕 KDB 入门指南 Hariprasad Nellitheertha (nharipra@in.ibm.com), 软件工程师, IBM 简介: 调试内核问题时,能够跟踪内核 ...

  4. OD 快捷键使用大全。非常详细( 游戏逆向分析必看 )+ OD 断点 使用大全

    From:https://www.cnblogs.com/YiShen/p/9742872.html OllyDBG 快捷键 OllyDbg 窗口通用快捷键 快捷键 功能 Ctrl + F2 重启程序 ...

  5. 编程萌新注意:别再这样问问题了!学会这样快速定位错误内容

    相信大家混迹在各种技术交流群会经常看到各种奇奇怪怪的提问. 例子 场景一 萌新一进群,甩出一堆代码片段截图. 问:请问有大佬能帮我解决一下问题吗? 我:...... 场景二 萌新写完一段代码,编译报错 ...

  6. 逆向之OllyDbg调试细则

    逆向之OllyDbg调试细则 快捷键转载 OllyDbg 窗口通用快捷键 快捷键 功能 Ctrl + F2 重启程序,即重新启动被调试程序( 重新载入程序 ).如果当前没有调试的程序,OllyDbg会 ...

  7. OLLYDBG使用笔记

    F2 断点  F3载入程序   F4运行到光标处   F7单步步入   F8单步步过  F9运行 Ctrl+F2重新载入 分号: 写注释 Ctrl+G 查询表达式 CTRL+F9返回到被调用之前的位置 ...

  8. 基于iLog3的实时日志实现

    这个封装类是为了不用跟傻X扯逼而创造的....... 首先下载个iLog3,好吧,重点不是日志类,喜欢的话,其他日志类也可以,原理是生成一个console窗口,然后把日志信息输出到console里面, ...

  9. OD学习手记——常用断点

    汇编 32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX)对低16位数据的存取,不会影响高16位的数据.这些低16位寄存器分别命名为:AX.BX.CX和DX,它和先前的CP ...

最新文章

  1. SQLServer 一些有用的语句
  2. Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level...
  3. android SDK manager 无法获取更新版本列表【转载】
  4. 关于C语言中继承和多态的实现
  5. 【转载保存】网页提取正文算法汇总
  6. java窗口添加标签页_在新标签页中打开新窗口
  7. 33. 把数组排成最小的数(C++版本)
  8. error LNK2005
  9. mac 思科 链路聚合_思科链路聚合协议实验.docx
  10. 使用 MATLAB Coder App 生成 C 代码
  11. 【2012求职经历】应届生求职经历
  12. 单片机仿真指示灯开关控制器
  13. Android开发:如何隐藏自己的app应用
  14. CISSP第二章 信息安全治理与风险管理
  15. MATLAB自相关矩阵计算方法
  16. 《黎明时分的诗》王家新
  17. wildfly部署springboot项目
  18. 汽车报户计算机自动选号,【国内】全国将统一机动车号牌选号 号码全由计算机随机投放...
  19. 详解tcp/ip连接建立与释放
  20. Android 开发小仓库

热门文章

  1. [统计学笔记](五)统计量及其抽样分布
  2. c++中动态申请空间的它们——new和delete
  3. Windows之——SECOH-QAD.exe占用CPU太高解决方法
  4. 花了我很长时间整理出来的绿色软件[小蓉整理]
  5. OpenCV进阶(10)在 OpenCV 中使用 ArUco 标记的增强现实
  6. 基于pyecharts的中医药知识图谱可视化
  7. vb6.0+vc6.0 写变速齿轮 HOOK timeGetTime
  8. html点击 css样式,HTML css a标签点击后样式
  9. 解决slideToggle动画重复不停止
  10. PSP编程环境破解个人研究笔记——HelloWorld