
debug
文章平均质量分 89
张某人的胡思乱想
这个作者很懒,什么都没留下…
展开
-
软件大局观--演讲记录
0-10000,000代表4K,10代表16,16页内存,PAGE_NOACCESS代表不可访问,这时操作系统为支持C++的内存0不可访问的定义,支持程序员的编程习惯,这段区域代表空指针。设计非常好,~0,表示0号线程的栈。后面是进程ID.线程ID,栈分为3个部分,PAGE_READWRITE是正在用的,PAGE_GUARD这时保护的,用完了碰到GUARD触发缺页异常,会增长栈grow。winmine.exe的位置:我们VC编译的放到4000位置,微软写的放到10 00000,16M的位置。原创 2025-03-30 19:41:57 · 845 阅读 · 0 评论 -
强大的x86指令
一种典型的使用场合就是用来循环处理一个数组,ECX指向数组的基地址,EDX做循环变量,索引数组的元素,而数组元素的长度可以为2、4、8三种。4)最后的rep stos指令是具有循环功能的串指令,它把EAX的值存入EDI指向的内存,然后自动递增EDI,递减ECX。今天调试一个应用程序时,偶然中看到一条很长的x86指令,机器码有11个字节,目标操作数是一个堪称复杂的表达式,于是摘录下来。这3个寄存器的值保存到栈上,防止当前函数破坏了它们的值,根据约定,返回到父函数时这几个寄存器的值应该保持不变。原创 2024-10-30 19:13:24 · 863 阅读 · 0 评论 -
如何使用winDbg在扫雷小游戏中获胜
如何使用winDbg在扫雷小游戏中获胜winmine是一个Windows自带的一个小游戏,用来操练windbg很合适。比较糟糕的是微软把winmine小程序的PDB从符号服务器给删除了(不知道微软出于什么心态),只能找前些年已经下载的人那里获取。下面是一个获取地址:http://advdbg.org/books/download/wdbglabs.zipwindbg的下载途径:1. 腾讯电脑管家里面的软件管理,搜索windbg,可以下载一个,不过是2010年的x64版本,有点老。2.百度wind原创 2021-04-18 23:45:07 · 1475 阅读 · 5 评论 -
使用windbg挖地雷直接取胜
使用windbg挖地雷直接取胜前面一篇文章探讨了如何直接明挖地雷,通过windbg修改了雷区就可以了. 这次我们更直接,看看如何通过函数飞针直接取胜.使用windbg直接打开winmine.exe先运行起来:g 共99个雷.先看如何把雷个数改为0, break这个程序. 用x命令显示所有符号0:005> x winmine!*01001004 winmine!_imp__RegSetValueExW = <no type information>0100511..原创 2021-05-12 00:36:26 · 410 阅读 · 4 评论 -
windows用户态调试
windows用户态调试打开windows的记事本小程序,windbg attach到这个进程,发现notepad不能动了,这是用户态调试的特点:今天调试模式,应用程序所有线程都处于freeze状态。观察一下线程状态: 会看到有6个线程。0:006> ~* 0 Id: 1de4.1f6c Suspend: 1 Teb: 000007ff`fffdc000 Unfrozen Start: notepad!WinMainCRTStartup (00000000`ff683ac...原创 2021-05-09 11:05:42 · 1216 阅读 · 3 评论 -
软件断点INT3
提到调试,很多人立刻会想到设置断点和单步执行。x86系列处理器从其第一代产品8086开始就提供了一条专门用来支持调试的指令,即INT 3。调试程序时,我们可以在可能有问题的地方插入一条INT3指令,使CPU执行到这一点时停下来。这便是软件调试中经常用到的断点(breakpoint)功能,因此INT3指令又称为断点指令。通过一个小程序感受一下INT3指令的工作原理vc6建立一个hiInt控制台小程序程序代码:#include <stdio.h>int main() {.原创 2021-05-05 16:47:24 · 2179 阅读 · 3 评论 -
栈缓冲区溢出攻击的例子
栈缓冲区溢出攻击的例子缓冲区是程序用来存储数据的连续内存区域,一旦分配完成,其起始地址(边界)和大小就固定下来。当使用缓冲区时,如果使用了超出边界的区域,就称为缓冲区溢出(Buffer overflow)如果缓冲区分配在栈上,就称为栈缓冲区溢出。如果分配在堆上,称为堆缓冲区溢出。图1左侧的0xCC是局部变量区域。具备变量下面是父函数EBP和当前函数的返回地址。具备变量越界,将覆盖父函数EBP和当前函数返回地址。使当前函数返回到意外的地方。如果这个意外的地方是0,反汇编就是add指令。如原创 2021-04-18 01:28:13 · 770 阅读 · 1 评论 -
使用windbg观察栈
清明时节没出门,在B站上发现一个windbg教程,学习了堆栈一段https://www.bilibili.com/video/BV1j5411P7Tp?t=1501.B站内容Introduction to Windbg Series 1 Part 8 - Commands k for callstack or stackbackBasic commands for windbg - kConcept of Callstack-Callstack is the most important i原创 2021-04-05 08:39:58 · 713 阅读 · 0 评论 -
读《格蠹汇编》第一章并实验
最近发现张银奎老师调试的书不错,新的格蠹汇编也买过来看,很快到货了。今天晚上读第一章,呵呵,还能做实验,不错。这是一个从堆数据里面抢救丢失的博客的例子,实验也很有趣,在 dmp文件中搜索到博客内容,并写到文本文件。过程中符号表加载出错,最终看windbg的help顺利排除问题,完成实验,这里记录一下:准备环境:c盘下面建立gedu下载http://www.advdbg.原创 2014-05-14 22:01:04 · 2918 阅读 · 1 评论 -
读《软件调试》第九章
今日读了张银奎老师的《软件调试》,前面的CPU和硬件相关的部分离得比较远,所以从第九章操作系统读起,今天的读书笔记:9.2采集调试消息调试事件分为8种typedef enum _DBGKM_APINUMBER{DbgkmExceptionApi = 0, // 异常DbgkmCreateThreadApi = 1, // 创建线程DbgkmCreateProcessAp原创 2014-05-12 22:12:48 · 1284 阅读 · 0 评论