调试UnhandledExceptionFilter】的更多相关文章

kernel32!UnhandledExceptionFilter通过判断当前进程是否附加了调试器,如果附加,就把异常交给调试器,如果没有,就把异常交给进程的UnhandledExceptionFilter处理. kernel32!UnhandledExceptionFilte在vista之后的操作系统用BasepIsDebugPortPresent判断是否附加调试器,之前的系统据一些blog反映是用NtQueryInformationProcess来判断. 所以,调试的时候,在kernel32…
感谢博主 http://book.51cto.com/art/200711/59874.htm 2.2  读懂机器的语言:汇编,CPU执行指令的最小单元2.2.1  需要用汇编来排错的常见情况 汇编是CPU执行指令的最小单元.下面一些情况下,汇编级别的分析通常是必要的:1. 阅读代码看不出问题,但是跑出来的结果就是不对,怀疑编译器甚至CPU有毛病.2. 没有源代码可以阅读.比如,调用某一个API的时候出问题,没有Windows的源代码,那就看汇编.3. 当程序崩溃,访问违例的时候,调试器里看到的…
总结一下dump文件生成和调试的方法: 1:用SetUnhandledExceptionFilter捕获未处理的异常,包含头文件<windows.h>.函数原型为: LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter( __in LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter ); SetUnhandledExceptionFilter返回值为:The Se…
Windbg在软件调试中的应用 Windbg是微软提供的一款免费的,专门针对Windows应用程序的调试工具.借助于Windbg, 我们常见的软件问题:软件异常,死锁,内存泄漏等,就可以进行高效的排查. 在开始用WinDbg调试应用程序之前,我们得先做些准备工作. 设置符号文件路径. 设置源代码路径. 打开待调试的可执行程序或Dump文件. 上述3个操作步聚比较简单,均在File菜单的子菜单项中设置,此处就不在细说,值得一提的就是需要设置的符号文件路径有三类: 1.Windows自身的模块的符号…
SetUnhandledExceptionFilter触发条件:1.当程序有异常,且没相应的处理 2.没有人进行反调试,满足这两个条件的时候,就会其中传输的参数(实则就是一个异常处理函数) 来进行处理 但是这个异常处理函数如果被用来检测是否有人为进行反调试的时候,这个就可以用来当作反调试 1.载入OD,给UnhandledExceptionFilter下断点,因为UnhandledExceptionFilter里面又调用了ZwQueryInformationProcess进行反调试检测 2.可以…
转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个问题整的很惨,在同事的帮助下了解到,对于程序崩溃,最快的解决方式是生成dump文件,通过生成dump文件使用调试工具进行调试,还原程序崩溃时的状态,能够起到快速定位排查问题的作用.Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到dump文件中.Dump文件是用来给驱动程序编写人员调…
反调试技术,恶意代码用它识别是否被调试,或者让调试器失效.恶意代码编写者意识到分析人员经常使用调试器来观察恶意代码的操作,因此他们使用反调试技术尽可能地延长恶意代码的分析时间.为了阻止调试器的分析,当恶意代码意识到自己被调试时,它们可能改变正常的执行路径或者修改自身程序让自己崩溃,从而增加调试时间和复杂度.很多种反调试技术可以达到反调试效果.这里介绍当前常用的几种反调试技术,同时也会介绍一些逃避反调试的技巧. 一.探测Windows调试器 恶意代码会使用多种技术探测调试器调试它的痕迹,其中包括使…
OD的DBGHELP模块 检测DBGHELP模块,此模块是用来加载调试符号的,所以一般加载此模块的进程的进程就是调试器.绕过方法也很简单,将DBGHELP.DLL改名. #include <Windows.h> #include <TlHelp32.h> int main(int argc, char * argv[]) { HANDLE hSnapProcess; HANDLE hSnapModule; PROCESSENTRY32 pe32; pe32.dwSize = siz…
在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设置外网访问 1. 设置内网访问 在设置之前,本机环境如下: 操作系统:win7 IDE:Visual Studio 2010 应用:ASP.net 想要实现局域网内其他机器访问本机web应用包含以下4步: 第一步:设置启动方式为IIS Express Visual Studio 运行Web应用时,默…
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是肯定的. 但是还好,我们有## node-inspector ##来帮助我们解决一部分的调试问题,但是对于异步能力很强的NodeJs它还是有点力不从心. node-inspector 安装node-inspector 依旧是通过npm来全局安装node-inspector npm install -…
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微信服务器将接收到的消息post到用户接入时填写的url中,在url处理程序中,首先判断消息的合法性,判断成功后根据消息体的内容做相应的相应.原理很容易理解,接触过socket的可能理解起来更容易. 其实微信开发并不是很麻烦或者很难,官方给的文档也还算过的去(至…
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", "黑体", Arial; font-size: 17px; font-weight: bold; height: 25px; line-height: 25px; margin: 15px 0 !important; padding: 5px 0 5px 20px } 1.前言 上篇 写出…
一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8899 Linux系统 在catalina.sh里:  CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compile…
单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上面A+B=C的例子: 在属性对话框,调试窗口里,填写模块数量为1,点击刷新结果,此时,系统会只执行第一步,显示A列. 点击单步调试,模块数量变为2,显示A和B列. 本质上,单步调试只是提取了工作流的一部分进行操作,你可以在单步调试中,拖入新的模块.模块会自动插入在工作流中间. [QQ截图201605…
有的时候开发环境没问题的代码在生产环境中会某些开发环境无法重现的问题,或者需要对生产环境代码进行远程调试该怎么办? Vs已经提供给开发者远程调试的工具 下面简单讲讲该怎么用,前期准备:1.本地登录账户,密码跟远程服务器保持一致(VS2012以前需要,现在我没测试,干脆也搞一样,省得出问题)2.根据服务器系统版本拷贝对应的远程调试工具到服务器然后运行里面的msvsmon.exe 3.本地开启VS,工具->附加进程 注意:限定符这里要填写计算机名,不能填写IP,我填写IP直接报错本地代码跟服务器代码…
LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理,因为debugserver缺少task_for_pid权限,所以你只能使用LLDB来调试你自己的App.那么本篇博客中就要使用LLDB来调试从AppStore下载安装的App,并且结合着Hopper来分析第三方App内部的结构.LLDB与Hopper的结合,会让你看到不一样的东西,本篇博客就会和你…
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", "黑体", Arial; font-size: 17px; font-weight: bold; height: 25px; line-height: 25px; margin: 15px 0 !important; padding: 5px 0 5px 20px } 1.前言 相比高级语…
1.调试原理 GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上得应用程序进行调试,PC机运行GDB,开发板上运行GDBServer.在应用程序调试的时候,pc机上的gdb向开发板上的GDBServer发出命令,而开发板上的gdbserver就会向应用程序发出信号,使应用程序停下来或者完成其他一些工作. 2.安装GDB和GDBServer(gdb-7.4.tar.bz2 ) 2.1.GDB 1.下载: http://ftp.gnu.org/gnu/gdb/  2.解压:tar xvf…
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装的,所以要选择自定义模式,VS 2015 精简版不支持. CMake 下载 CMake for windows,并把Cmake的目录添加到为PATH的系统变量里. Python 下载Python for windows 并安装,并把Python的目录地址添加到Path系统变量中. Powershel…
在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都是一样的,只是需要注意一些细节的地方就可以了.下面就来简单说明一下.在这里关于scala和jdk的配置问题就不再详述了,下面进入正题吧. 首先放上调试用的scala代码hello.scala object hello { def main(args: Array[String]): Unit = {…
前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用.还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务.本文就向大家介绍如何运用C#来创建.安装.卸载.调试Windows Service程序. 一.创建Windows服…
问题描述: 一般调试wcf程序可以直接建一个单元测试,直接调接口. 但是,这次,我还要测试在接口内的代码中看接收到的用户名密码是否正确,所以,单一的直接调用接口方法行不通, 然后就想办法通过soapUI输入用户名和密码调用接口调试. 解决方案: 1.建立IIS站点a,指向--src\WCF(右键项目名称->在文件资源管理器中打开文件夹,直接复制该打开的文件夹路径,建立站点,指向该路径) 2.设置站点a的IP为127.0.0.1 ,端口随便,无冲突即可 3.在IIS站点中找到服务所在,如"S…
PhpStorm和WAMP配置调试参数 问题描述: Error. Interpreter is not specified or invalid. Press “Fix” to edit your project configuration. 解决方法: 打开File->Settings 浏览到Languages & Frameworks->PHP Include Path添加D:\WAMP64\apps\phpsysinfo3.2.3\sample\distrotest\Pear 点…
我是最后端的,这两天搞了一个app项目,前端安卓使用友盟很方便,调试比较顺利,然后ios就遇到各种问题了,证书.发送成功推送不成功,测试时用的TestMode(),ios上架之后就必须用productionMode(),纠结了几天,还是换成jpush,很快就调试成功了. 趁着中午休息的时间,两个平台的后台调用的方法都写一下. 一.Jpush: app是两个端,用了两个类,其实共用一个类也可以,测试的时候略微不方便,调用的时候也稍微纠结一点 先设置appKey和masterSecret,从Jpus…
Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fiddler 等抓包调试工具,今天介绍的这款工具在接口维护更加方便,支持定义和运行接口测试,可以说是 Chrome 应用最好用的接口调试工具之一. 立即去试试 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTM…
提示: 本页面不包含 Javascript 如果 <script> 标签有 "type" 属性,其值应为 "text/javascript" 或者"application/javascript"). Firebug 目前无法用于系统源代码的调试.查看 issue 5110 来了解原因.你可以使用开发者工具中的浏览器工具箱. 解决方法: 将FireFox 卸载 重启 ,安装Firefox Setup 40.0.2 这个版本, 并且将Fi…
Firebug中调试中的js脚本中中文内容显示为乱码 设置 页面 UFT-8 编码没用, 解决方法:点击 "Firebug"工具栏 中的"选项"---"重置所有FireBug选项"即可正常使用…
在项目开发的过程中,不可避免的会遇到调试代码的情况. 刚开始写代码时,我们想看具体执行到哪儿时,往往这么写: printf("***** Code is here! *****\n"); 随着调试信息的不断增多,我们项目中的printf()函数到处都是,因此,当调试完成时,发现需要注释掉所有的调试代码将非常痛苦.于是,我们通过宏定义对代码进行了这样的改造: 首先,定义调试宏: #define _DEBUG_IS_MY 然后,在需要添加调试代码的地方,添加以下代码: #ifdef _DE…
现在项目开发时总有时需要在X64下开发,这样我们就需要IIS Express中调试.不要总是放在IIS中,在Attach这样好慢.   如果不设置直接调试X64的程序,我们有可能会受到以下类似的错误 "未能加载文件或程序集"MvcApplication2"或它的某一个依赖项.试图加载格式不正确的程序."   图形化   修改注册表   打开"运行",输入"RegEdit"回车打开注册表编辑器. 定位到:"HKEY_C…
在release模式下调试程序,经常出现"当前不会命中任何断点,还没有为文档加载"的问题,可尝试以下方法: 1. 属性 → 配置属性 → C/C++ → 常规 → 调试信息格式:选择 C7  兼容(/Z7) 2. 属性 → 配置属性 → C/C++ → 优化 → 优化:选择 禁用 3. 属性 → 配置属性 → 链接器 → 调试 → 生成调试信息:选择 是(/DEBUG) 正常情况下,如上设置就可以命中断点了,如果还不可以,那就是dll版本不匹配等其他原因了.…