当前位置: 首页 > news >正文

有关网站建设的参考书手机版网站有必要吗

有关网站建设的参考书,手机版网站有必要吗,网站开发怎么连接sqlserver,企业营销策划ppt目录 常见的断点 1.INT 3 断点 检测 绕过 2.硬件断点 原理 我们给出硬件中断的例子 删除硬件断点 3.内存断点 原理 例子 删除 区别 总结 4.内存访问一次性断点 5.消息断点 例子 删除 6.条件断点 #xff08;1#xff09;按寄存器条件中断 #xff08;21按寄存器条件中断 2按存储器条件中断 7.条件记录断点 我们在 (一)中调试了一个程序   接着我们开始继续学习 常见的断点 这里有 INT 3断点 硬件断点 内存断点 消息断点等 1.INT 3 断点 我们在OllyDbg中 可以使用 命令 bp 或者 F12进行断点 INT3断点 就是在程序中 对该位置的代码 进行替换 替换为INT3 INT3 是一个软中断指令 在x86框架中触发进行调试 INT3就是最常用的断点其中软中断 是 代码触发的 而不是硬件问题触发的中断 在ollydbg中 其实我们按下F2 程序就会在这里设置 INT3 只是ollydbg进行了隐藏 显示出来的是中断前的指令 INT3 机器码是 0xCC 也叫做 CC指令在程序执行到INT3指令导致的异常时候调试器会捕捉到异常 从而停在断点处 然后把断点处的代码恢复为之前的代码INT3的优点是可以设置无数个断点 缺点是改变了代码 容易被软件检测到 检测 如果软件防止API被下断点 有一些软件检测API的首地址是否为0xCC 这里给出检测方式用C语言检测 这个方法就是 取得检测函数的地址 然后读取第一个字节 判断是否为CC这里是检测的代码 对MessageBoxAFARPROC Uaddr ; BYTE Mark 0; (FARPROC) Uaddr GetProcAddress (LoadLibrary(user32.dll),MessageBoxA); 加载 user32.dll库中的 MessageBoxA函数 Mark *((BYTE*))Uaddr; 把Mark 设定为 指向 Uaddr的指针 if(Mark 0xCC) 判断第一个字节是否为0xCC 即INT3return TRUE 当程序执行后 对MessageBoxA下断点 程序就会发现 绕过 如果我们要躲过检测 就把断点设置在函数的尾部或者内部 例如把断点设置在函数入口的下一行 这样我们就可以绕过检测 2.硬件断点 硬件断点和BRx调试寄存器有关 RBx调试寄存器中的 x可以是 0~3的数字RBx调试寄存器用于设置硬件断点 在CPU执行到设置的地址的时候 就会触发中断 然后交给调试器进行调试 DRx调试寄存器具有8个寄存器 (DR0~DR7) 其中 某些寄存器又有自己的特性DR0~DR3:调试地址寄存器 用于保存需要监视的地址 例如设置硬件断点DR4~DR5保留 未公开作用DR6:调试寄存器组状态寄存器DR7:调试寄存器组控制寄存器 原理 硬件断点的原理是使用DR0 DR1 DR2 DR3设定地址 最多设置4个断点 然后使用DR7 设定状态硬件执行断点和CC指令执行断点的作用一样 但是 硬件并不会修改地址第一字节为CC 所以更难检测在调试器检测到DR0~DR3中的地址的时候 就会触发中断 交给调试器而不是修改代码 进行中断 在ollydbg中也可以设置硬件中断 我们给出硬件中断的例子 还是之前的TraceMe.exe 在CPU窗口的寄存器窗口 右键-查看调试寄存器 然后我们在004013AA处设置硬件中断 然后F9执行程序 我们发现 DR0变为中断地址 在我们设置断点后 其实OllyDbg是在DR0~DR3中的一个设置为中断地址 然后再DR7中设置相应的控制位当程序调试到中段地址 CPU就会向OllyDbg发送异常信息然后可以中断 删除硬件断点 调试-硬件断点 当然也有快捷键 在地址按下F4 可以进行硬件中断 并且在中断后自动删除断点 硬件中断对比INT3中断 不容易被程序察觉 并且运行速度快 缺点是 只能设置4个断点 3.内存断点 OllyDbg 可以设置内存访问断点 或者 内存写入断点 原理 对所设置的地址 赋予不可访问 不可写 属性就这样 当 访问和写入 就会发生异常OllyDbg捕获异常比较异常是不是我们设置断点地址如果是 就中断 然后用户进行操作 因为每一次都要进行比对 来确定是否中断 所以执行速度会慢所以OllyDbg可能出于执行考虑 内存中断 只能下一个断点 程序运行有3种状态 分别是 读取 写入 和执行 mov dword ptr [405528]edx 对内存进行写入 mov dword ptr edx,[405528] 对内存数据进行读取 例子 使用OllyDbg调试 TraceMe.exe 我们可以看到 这个 是写入内存中的 汇编指令 我们使用这个下内存断点 我们需要进入数据面板 先对这个地址在数据面板跟随 然后F9运行 发现他中断在这个地址 删除 如果我们要删除中断 右键-删除内存断点 即可 在这个场景中 硬件断点也可以实现和内存断点相同的效果 单个硬件写入/访断点可以设置为 1字节 2字节 4字节 而且无论选择的数据范围多大 只有前4个字节会起作用还是在内存地址中 对地址选择 硬件写入 然后选择 word 就是4个字节 还是会中断在 这个地址上的下一条指令 区别 硬件写入/访问断点是在执行的下一条进行中断 内存断点是在触发点的指令处进行中断 对代码也可以下内存访问断点 在代码处 右键 内存访问 然后运行程序 就会断在这个地方 总结 在内存执行的地方 也可以通过内存访问中断内存访问断点不会修改代码 不会和INT3一样修改代码而被程序校验所以如果在遇到程序校验 并且硬件断点失灵的情况下 可以使用内存断点 4.内存访问一次性断点 Windows对内存使用段分页式管理 在OllyDbg中 按ALTM 就可以看内存 这里出现很多段 然后每个段都有不可访问 读 写 执行属性 在相应的段 右键 这个就可以用于整个内存开设置该类断点 这个断点是一次性断点 所在段在被读取或者执行就会中断 中断以后 就会删除该断点 如果想捕捉调用 或者返回某个模块该类断点就特别有用 其中还有断点 设置内存访问断点 这个断点和在访问上设置断点 命令的功能大致相同所不同的是这个 内存访问断点不是一次性的并且这个断点是要在NT框架下使用并且仅在这个框架下使用 5.消息断点 Windows本身就是消息驱动的  如果调试的时候没有合适的断点 可以尝试使用消息断点 当某个特定窗口接收到某个特定消息时 消息断点将程序中断消息断点和INT3断点的区别在于:INT3断点可以在程序启动之前设置 消息断点只有在 窗口被创建后才可以被设置 并且拦截消息 当用户单击一个按钮、移动光标或者向文本框输入文字的时候一条消息就会发送给当前窗体 所有发送的消息都有4个参数1个hwnd窗口句柄 1个msg信息编号 2个long32位长的参数windows通过句柄 来识别他所代表的句柄例如 点击某个按钮 Windows通过句柄识别按了哪一个按钮 然后发送相对于的消息来通知程序 我们通过例子 例子 TraceMe 我们直接F9运行程序 我们输入 用户名和序列号 随便输入 然后不点击check 我们先进入消息窗口 这里就是我们现在存在的窗口 也是我们进行消息窗口打断点的地方 我们找到 check这一行 打上消息断点 在消息 这一栏 选择 202的函数 我们check 类型是 button 按钮 所以如果我们点击了这个按钮 会发送 WM_LBUTTONUP这个消息 所以我们需要中断在这个消息处 然后我们回到程序 点击check 他会中断在Windows系统代码中 就是传递消息 这个时候 我们是在系统领空 处于系统底层代码 不属于TraceMe程序代码 所以我们无法通过 快捷键ALTF9 或者CTRLF9回到程序领空我们使用快捷键 ALTM 关注这个 TraceMe 程序 然后他的代码段 因为我们想要回到代码段 找到这个关键函数 所以我们 在这里打上断点 当程序执行完底层代码 就会返回程序 代码 意思就是 点击完check 他会发送消息给windows然后消息传递完 返回程序 我们就重新回到了程序领空我们在F2打上断点 F9 进行执行 这里的代码 是程序的消息循环处 这段代码是消息循环 不断处理TraceMe的消息 这个时候不会直接处理按钮事件如果我们进行F7单步跟踪就会重新进入系统代码 这里就重新进入了系统代码 然后我们重复 在程序代码区设置断点 然后执行 说明还是不是传递按钮消息 我们继续来一次 成功到了 按钮传递消息的程序内的地方了 删除 ALTB 删除即可 6.条件断点 在调试过程中 我们经常希望能够满足什么条件猜会中断这类 就叫做条件断点而且OllyDbg中可以 按寄存器 存储器 消息等条件设断 条件断点是一个带有条件表达式的普通INT3断点当调试器遇到这类断点 断点将计算表达式的值如果结果非0 或者 表达式有效那么断点就生效 1按寄存器条件中断 打开Conditional_bp.exe 查找 00401476处 然后在这里设置条件 或者在命令行插件中 bp 401476 eax0400000 然后程序执行到这里 如果 eax0400000 就会发生中断 2按存储器条件中断 我们继续使用这个程序来 我们假设 这个程序需要打开一个文件 那么就是使用CreatFileA函数 这个函数是用于打开一个文件 这里给出函数的结构HANDLE CreateFile{LPCTSTR lpFileName 指向文件名的指针DWORD dwDesireAccess 访问模式DWORD dwShareMode 共享模式LPSECURITY_ATTRIBUTES, 指向安全属性的指针DWORD dwCreationDistribution 如何创建文件DWORD dwFlagsAndAttribute 文件属性HANDLE hTemplateFile 用于复制文件的句柄 } 我们了解完后 运行程序看看有没有要打开文件夹的按钮 这里我们 发现 调用了四次 CreateFileA  所以肯定是存在这个函数 所以我们对这个函数进行断点 然后重新执行程序 断点了在这个 然后我们到栈上 发现了函数的参数都已经入栈了 所以这里我们就可以进行断点 但是我们需要知道这个是在栈的什么地方 所以我们 假设我们需要得到 filename 那么他就是在 esp4的地址上存放 [esp4]这个是得到第一个参数 就是filename的内存地址 [[esp4]]这个是得到 第一个参数 就是filename在内存地址存入的字符串是多少 假设我们需要得到字符串 [STRING[esp4]]c:\\1212.txt 这就是 会返回 当 CreateFileA函数 打开 c:\\1212.txt的时候 这个函数 filename存放的是多少 使用命令行就是下面的 bp CreateFileA,[STRING[esp4]]c:\\1212.txt 重新运行程序 这里就是当程序打开1212.txt后断点的地方了 7.条件记录断点 条件记录断点 除了具有条件断点的作用 还能记录断点处函数表达式 或者函数的参数值 也可以通过设置断点的次数 每次符合暂停条件的时候 计数器-1 还是拿CreateFileA函数为例子 在这个程序的第一条指令 或者 SHIFTF4 进入条件记录断点 注意这个 表达式里面 如果是 [esp4] 那么就是地址我们就设置 指向ASCII字符串的指针这里的功能 就和 [STRING] 功能一样 然后我们确定 开始执行 出现断点 然后快捷键 ALTL 打开 log data窗口 出现了 我们的数据 到这里 常见的中断 就结束了
http://www.hkea.cn/news/14259333/

相关文章:

  • 青岛建设网站制作南通 网站建设
  • 自己如何高效有力的维护一个网站做设计及免费素材网站有哪些
  • 单页网站与传统网站的区别做360网站优化快速排
  • 网站seo优化报告贵安新区网站建设
  • 教育类网站怎么做子网站怎么做
  • 国外人像摄影网站转换成wordpress
  • 电子商务网站开发需求分析四川建设银行手机银行下载官方网站下载安装
  • 制作企业网站软件写作网站起点
  • 旅游网站建设主要工作wordpress七牛插件
  • 电商网站建设与管理实践wordpress本地添加图片不显示图片
  • 网站建设策划执行绍兴网络公司网站建设
  • 做儿童交互网站国内十大平面设计公司
  • 定制网站哪家好做网站公司经营范围
  • 做网站设计需要学什么网站创建于
  • 中南大学双一流建设网站深圳关键词推广优化
  • 宁波网站建设详细内容学网站建设多少学费
  • 太原网站制作最新招聘信息wordpress手机版 403
  • 维度网络做网站h5制作培训
  • 四川省工程建设信息网站可以直接进入的正能量网站老狼
  • 网站开发发送短信php wordpress 关系
  • 药品网站模板学习网站建设与管理
  • 论坛模板建站网站建设需要桂ajax吗
  • 新塘做网站黄山网站建设费用
  • 深圳市深圳市住房和建设局网站首页网站mp3播放器代码
  • 企业做网站的痛点有哪些计算机网络技术专业
  • 做网站 带宽 多少钱无锡网站排名优化报价
  • 网站规划名词解释wordpress用插件备份
  • 运城网站推广销售找客户的方法
  • godaddy 上传网站百度推广怎么做效果好
  • 全椒县城乡建设局网站产品开发流程的六个阶段是