程序调试

反调试手段

别说谁变了你拦得住时间么 提交于 2019-12-27 05:15:04
调用函数检测方式 ---------------------------------------------------- IsDebuggerPresent(检测本进程) 检查进程环境块(PEB)中IsDebugged标志 如果没有被调试就返回0,如果调试附加了进程,函数返回非零值 CheckRemoteDebuggerPresent(检测其他进程) 这个函数和上面的函数检测的原理是一致的,但是他可以检查其他进程是否被调试,他需要一个进程句柄 NtQueryInformationProcess 此函数是Ntdll中的一个原生态的API,它用来提取一个给定的进程信息,第一个参数是进程句柄,第二个参数是想获取的进程相关的信息,如果将此参数设置为ProcessDebugPort(值为0x7),如果该程序被调试,则函数的返回值是调试端口,否则返回0 OutputDebugString 在有调试器存在和没有调试器存在时,OutputDebugString函数表现会有所不同。最明显的不同是, 如果有调试器存在,其后的GetLastError()的返回值为零。 解析:先设置一个错误码,如果函数返回失败,就会重置错误码,相反如果错误码没有变,就证明OutputDebugString返回成功,正在被调试 -----------------------------------------------

ASP.NET 远程调试

六月ゝ 毕业季﹏ 提交于 2019-12-27 05:13:06
今天写公司C#程序,发现一个vs的新功能。远程调试,可以再你本机调试远程代码,比较适合团队开发或者你本机没有调试环境的情况下。 调试步骤: 1、本机必须要有Vistual Studio的远程调试工具。如没有安装,则可查询相关的MSDN的资料,进行安装。这里不详述。 2、运行调试组件:安装完成后,在开始菜单visual studio Tools 下,运行Remote debuger。或者找到文件C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\x86\msvsmon.exe. 3、调试。调试有三种方法。 1)更改虚拟路径。把要调试的解决方案的代码拷贝远程服务器,并共享。在IIS上设置需要调试网站的虚拟路径,指向解决方案下的表示层。 2)在本地打开远程服务器上的解决方案代码。 3)附加到进程。运行后,就可以在本地的visual studio的开发平台下,附加到远程服务器的进程了。调试>附加到进程。在附加到进程窗口选择限定符为远程服务器名,当然要保证用户对远程服务器有管理员权限。 这样,就能很轻松的调试了。爽吧~~~ 来源: https://www.cnblogs.com/woaic/archive/2012/10/09/3942794.html

VS远程调试亲历

戏子无情 提交于 2019-12-27 05:09:59
背景: 很多情况下本地开发没有问题,可放到服务器就有问题(更气人的是测试环境时也行可就是生产环境不行!) 1、想到可能是服务器环境不对,Web服务器版本不对 2、有文件读写是不是文件夹权限 3、Web服务器没有配置对 4、防火墙。。。。。总之是各种可能性的想篇了,也尝试了,最后只好打日志! 以前也知道有远程调试但没用过,觉得不靠谱,于是也没有尝试过!正好明日碰到了一个问题,想到打日志好难哦,还要分析!于是就开始尝试远程调试: 开发环境:win7+vs2012 生产环境:win server2003 按照第一篇说的: ===========================================复制Begin========================================== 不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误。 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一个vs、跟一下代码吗? 其实不用的,vs有一个远程调试的功能。 这个功能是这样的,程序在其他的电脑上运行,但是我们可以在本地电脑上进行断点跟踪。 下面以vs2012为例,为大家介绍一下 无身份验证的远程调试 (如果要用有身份验证,又没有域环境,参见最后的总结)

VS 远程调试 Azure Web App

馋奶兔 提交于 2019-12-27 04:32:53
如果能够远程调试部署在 Azure 上的 Web App,将会极大的提高我们修复 bug 的效率。Visual Studio 一贯以功能强大、好用著称,当然可以通吃基于 Azure 应用的创建、发布和调试。接下来就让我们一起看看如何使用 Visual Studio 远程调试部署在 Azure 上的 Web App,以及一些常见的注意事项。 注意工具的版本 在开始正文前让我们先检查一下使用的 Azure SDK 版本和 Visual Studio 的版本。根据 MSDN 的介绍,Azure 的远程调试功能是在 Azure SDK 2.2 中加入的,所以请确保您的机器上安装了 2.2 或者是更新的 Azure SDK。 关于 Visual Studio 的版本问题,MSDN 上的描述也很有趣。大意是使用 Visual Studio 2012 已经可以远程调试 Azure 上的 Website 了,但是 Visual Studio 2013 又对此做了很多的提升。个人理解最好使用 VS2013,或者更新的版本。 笔者在写本文时的实验环境是 VS2015 update3 和 Azure SDK 2.9。 原理简介 如果我们要使用运行在机器A上的 Visual Studio 调试另外一台机器B上运行的一个程序 myapp (机器B上没有安装 visual studio),我们不仅要把附带

vs.net远程调试

吃可爱长大的小学妹 提交于 2019-12-27 04:31:52
  有些时候,不能在本机器启动程序进行调试,例如调试全屏模式,或者调试那些需要在特定运行环境的程序,这时候就只能进行远程调试了。   一般的调试器都支持远程调试,vs也不例外。只需要在远程机器上启动一个应用程序作为与调试器的交流通道,对于vs.net,这个应用程序是MSVCMON.EXE。   远程调试步骤:   1、在远程机器上共享一个文件夹,例如D:\SHARE。   2、在VS.NET的安装目录下找到MSVCMON.EXE,将这个程序所在目录整个复制到远程机器的D:\SHARE。   3、将需要调试的程序(DEBUG模式的)及其运行环境文件所在的文件夹(例如SERVER)复制到远程机器的D:\SHARE。这一步不是必须的,如果程序不需要运行环境相关文件,那就只需复制待调试的程序即可。   4、配置开发机器的调试属性:   (1)、鼠标右击主工程选择“属性”;   (2)、在“配置属性”里选择“调试”;   (3)、在“远程设置”里设置如下:     a)、在“连接”选择“通过TCP/IP”;     b)、在“远程计算机”输入远程机器的IP,例如:192.168.0.100;     c)、在“远程命令”输入远程机器的执行文件的全路径,例如: \\192.168.0.100\share\server\test.exe ;   (4)、在“操作”设置如下:设置“工作目录

VC++ 6.0 远程调试 debug

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-27 04:31:28
【转 https://www.cnblogs.com/MakeView660/p/9621286.html】 0 前言    VS2008 及以上远程调试上篇已经讲过,这里再讲下 VC++6.0 开发环境下的远程调试能力,仅需下面 4 步即可,更方便的就接着后面的 5-6 步。   因为目标程序需要在有采集卡等相关硬件支持下的工控机上工作,工控机上面一般没有调试环境也不会放置源代码(出于保密)。假如工控机上的目标程序运行中出了问题,就需要有调试环境却无法安装采集卡等硬件的笔记本上进行远程调试。 1 远程调试条件    1 . 两者之间使用有线或无线连网。   2 . 目标机器与本机的调试机器连接通讯,需要四个文件: MSVCMON.EXE 、 DM.DLL 、 TLN0T.DLL 和 MSDIS110.DLL 。它们可在 VC6 安装文件夹的 Common/MSDEV98/Bin 下面找到。   3 .VC 调试程序执行需要的三个动态库文件: MFC42D.DLL , MFCO42D.DLL , MSVCRTD.DLL ,有时可能需要 ntdll.dll ,它们可在系统文件夹 \windows\system32 下找到。   或者通过搜索方式找到以上所需的 8 个文件,开始 -- 搜索 -- 文件或文件夹 -- 在 " 要搜索的文件或文件夹名为 " 框中,输入上面的文件,点 "

VS2008远程调试

ぐ巨炮叔叔 提交于 2019-12-27 04:30:49
  远程调试适用于目标机器没有开发环境且Bug无法在其他机器上重现的环境,是开发和测试中很实用的一种调试方法。下面简单介绍一下VS2008远程调试的方法。 将VS安装目录下Remote Debugger内x86文件夹(32位程序,64位程序拷x64文件夹)拷入目标机器待调试程序的文件夹。我的文件夹路径为C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86,如下图: 本地机器,VS2008工程属性->linker->debugging->Generate Debug Info选择yes,生成pdb文件。将生成的exe和pdb一起拷入目标机器。 目标机器,打开msvsmon.exe,设置Tools->Options->No Authentication(native only)->Allow any user to debug,点击确定。保存Server name。如图所示: 本地机器,工程属性->Debugging->Debugger to launch->Remote Windows Debugger。设置Remote Command为目标机器待调试程序的路径,Remote Server Name 为步骤4中保存的Server name。Connection为Remote with

VS2008远程调试方法

南楼画角 提交于 2019-12-27 04:30:15
在网上找了好多资料才把这个调试环境搭好,下面总结一下: 先说明两个概念: 1. 目标机:远程需要调试的机子,也就是被调试程序exe所在的机子,该机子可以安装VS2008或者不安装vs2008 2. 调试机:安装VS2008的机子,就是存放代码下断点调试的机子,该机子必须安装vs2008 下面介绍具体设置步骤: 目标机: 1. 如果目标机安装了VS2008则直接在【开始菜单】->【Microsoft Visual Studio2008】->【VisualStudio Tools】下面找到Visual Studio 2008 Remote Debugger运行即可;如果目标机没有安装VS2008则需要将调试机上vs2008安装目录下相应的远程debug工具,路径:D:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE/Remote Debugger/x86拷贝到目标机应用程序所在的目录下,然后运行msvsmon.exe 注意:此处如果是要根据你的程序是32位或者64位选择不同的版本,如果是在Win7下面还要以管理员身份运行。如果是第一次运行可能需要设置防火墙,请允许防火墙放行。 2. 选择【Tools】->【Options】设置Debugger参数 这两步后目标机上的设置就完成了,下面介绍调试机上的设置: 调试机: 1.

vs2012远程调试功能的改进

别来无恙 提交于 2019-12-27 04:29:33
不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误。 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一个vs、跟一下代码吗? 其实不用的,vs有一个远程调试的功能。 这个功能是这样的,程序在其他的电脑上运行,但是我们可以在本地电脑上进行断点跟踪。 下面以vs2012为例,为大家介绍一下 无身份验证的远程调试 (如果要用有身份验证,又没有域环境,参见最后的总结),同时也说一下vs2012与以前版本在远程调试功能方面的改进。 1、从开始菜单中打开“Remote Debugger”文件夹,打开之后,你会看到两个文件夹,这个是要复制到远程计算机上的,只需要根据具体环境从两个里选出一个复制过去就好了。 2、复制完之后,在远程电脑上打开vs远程调试监视器(“msvsmon.exe”),会出现下图中的窗口,点击选项菜单,选中无身份验证和允许任何用户进行调试。 然后点击确定,这样,远程计算机就设置好了。当然,别忘了在远程计算机上启动你要调试的程序。 3、然后,我们在自己的电脑上,打开项目,从调试菜单打开附加到进程窗口,选择远程,输入远程计算机的ip,然后回车; 再选择要调试的程序,点击附加按钮。好了,点个断点,试试吧。 4、vs2012与之前版本的不同。 看看这张图,是不是很熟悉

转:vs2012远程调试功能的改进

大憨熊 提交于 2019-12-27 04:29:04
转自:http://www.cnblogs.com/fantong/archive/2012/09/17/2688342.html 不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误。 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一个vs、跟一下代码吗? 其实不用的,vs有一个远程调试的功能。 这个功能是这样的,程序在其他的电脑上运行,但是我们可以在本地电脑上进行断点跟踪。 下面以vs2012为例,为大家介绍一下 无身份验证的远程调试 (如果要用有身份验证,又没有域环境,参见最后的总结),同时也说一下vs2012与以前版本在远程调试功能方面的改进。 1、从开始菜单中打开“Remote Debugger”文件夹,打开之后,你会看到两个文件夹,这个是要复制到远程计算机上的,只需要根据具体环境从两个里选出一个复制过去就好了。 2、复制完之后,在远程电脑上打开vs远程调试监视器(“msvsmon.exe”),会出现下图中的窗口,点击选项菜单,选中无身份验证和允许任何用户进行调试。 然后点击确定,这样,远程计算机就设置好了。当然,别忘了在远程计算机上启动你要调试的程序。 3、然后,我们在自己的电脑上,打开项目,从调试菜单打开附加到进程窗口,选择远程,输入远程计算机的ip,然后回车;