windbg基本简单步骤
源码
#include <stdio.h>
#include <string>
typedef struct _st{
int a;
int b;
}ST;
int fun(int* p, const ST& s)
{
*p = s.a + s.b;
return s.a < s.b ? s.a : s.b;
}
void main()
{
ST s;
s.a = 3;
s.b = 4;
int ret = -1;
int dd = fun(&ret, s);
printf("%d", dd);
getchar();
}
1. !address 查看最初断点位置信息
ntdll!LdrpDoDebuggerBreak+0x2c:
77540ed4 cc int 3
0:000> bp $exentry
*** WARNING: Unable to verify checksum for test.exe
0:000> bl
0 e Disable Clear 00af127b 0001 (0001) 0:**** test!ILT+630(_mainCRTStartup)
0:000> !address 77540ed4
Mapping file section regions...
Mapping module regions...
Mapping PEB regions...
Mapping TEB and stack regions...
Mapping heap regions...
Mapping page heap regions...
Mapping other regions...
Mapping stack trace database regions...
Mapping activation context regions...
Usage: Image
Base Address: 774b0000
End Address: 77586000
Region Size: 000d6000 ( 856.000 kB)
State: 00001000 MEM_COMMIT
Protect: 00000020 PAGE_EXECUTE_READ
Type: 01000000 MEM_IMAGE
Allocation Base: 774a0000
Allocation Protect: 00000080 PAGE_EXECUTE_WRITECOPY
Image Path: ntdll.dll
Module Name: ntdll
Loaded Image Name: C:\Windows\SysWOW64\ntdll.dll
Mapped Image Name:
More info: lmv m ntdll
More info: !lmi ntdll
More info: ln 0x77540ed4
More info: !dh 0x774a0000
Content source: 1 (target), length: 12c
2.查看加载模块信息
0:000> lm
start end module name
00ae0000 00b03000 test C (private pdb symbols) E:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\test.pdb\37CD5525EB634D36AC9FD918207AF1512\test.pdb
594f0000 596af000 MSVCR120D (deferred)
597a0000 59869000 MSVCP120D (deferred)
76360000 76470000 kernel32 (deferred)
76470000 764b7000 KERNELBASE (deferred)
774a0000 77620000 ntdll (pdb symbols) E:\Program Files (x86)\Windows Kits\10\Debuggers\x86\sym\wntdll.pdb\156A0C04210F41998644103A7354418D2\wntdll.pdb
0:000> bp test!main
0:000> bl
0 e Disable Clear 00af127b 0001 (0001) 0:**** test!ILT+630(_mainCRTStartup)
1 e Disable Clear 00af5410 0001 (0001) 0:**** test!main查看
3.查找函数符号并断点
0:000> x test!fun
00af4c30 test!fun (int *, struct _st *)
0:000> bp test!fun
0:000> g
4. kv 查看堆栈,fun函数入口时esp指向函数返回地址esp+4指向左边第一个参数,esp+8.。。。(c调用协定)
0:000> k
# ChildEBP RetAddr
00 0045fa34 00af545a test!fun [g:\vsprojects\test\test\test.cpp @ 10]
01 0045fb3c 00af5db9 test!main+0x4a [g:\vsprojects\test\test\test.cpp @ 21]
02 0045fb8c 00af5fad test!__tmainCRTStartup+0x199 [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c @ 626]
03 0045fb94 7637336a test!mainCRTStartup+0xd [f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c @ 466]
04 0045fba0 774d9902 kernel32!BaseThreadInitThunk+0xe
05 0045fbe0 774d98d5 ntdll!__RtlUserThreadStart+0x70
06 0045fbf8 00000000 ntdll!_RtlUserThreadStart+0x1b
0:000> .frame 0
00 0045fa34 00af545a test!fun [g:\vsprojects\test\test\test.cpp @ 10]
0:000> dd esp
0045fa38 00af545a 0045fb20 0045fb2c 00000000
0045fa48 00000000 7efde000 cccccccc cccccccc
0045fa58 cccccccc cccccccc cccccccc cccccccc
0045fa68 cccccccc cccccccc cccccccc cccccccc
0045fa78 cccccccc cccccccc cccccccc cccccccc
0045fa88 cccccccc cccccccc cccccccc cccccccc
0045fa98 cccccccc cccccccc cccccccc cccccccc
0045faa8 cccccccc cccccccc cccccccc cccccccc
0:000> dd 0045fb20
0045fb20 ffffffff cccccccc cccccccc 00000003
0045fb30 00000004 cccccccc bbee73d5 0045fb8c
0045fb40 00af5db9 00000001 005281a8 00528760
0045fb50 bbee7365 00000000 00000000 7efde000
0045fb60 00000000 59cce7d8 00000000 00460000
0045fb70 00000000 0045fb50 e22294be 0045fbd0
0045fb80 00af1109 bb046069 00000000 0045fb94
0045fb90 00af5fad 0045fba0 7637336a 7efde000
0:000> dd 0045fb2c
0045fb2c 00000003 00000004 cccccccc bbee73d5
0045fb3c 0045fb8c 00af5db9 00000001 005281a8
0045fb4c 00528760 bbee7365 00000000 00000000
0045fb5c 7efde000 00000000 59cce7d8 00000000
0045fb6c 00460000 00000000 0045fb50 e22294be
0045fb7c 0045fbd0 00af1109 bb046069 00000000
0045fb8c 0045fb94 00af5fad 0045fba0 7637336a
0045fb9c 7efde000 0045fbe0 774d9902 7efde000
5.release版本 优化很简
test!main:
010612a0 6a03 push 3
010612a2 688c310601 push offset test!`string' (0106318c)
010612a7 ff15b8300601 call dword ptr [test!_imp__printf (010630b8)]
010612ad 83c408 add esp,8
010612b0 ff15ac300601 call dword ptr [test!_imp__getchar (010630ac)]
010612b6 33c0 xor eax,eax
test!main:
010612a0 6a03 push 3
0:000> bp test!fun
Couldn't resolve error at 'test!fun'
0:000> db 0106318c
0106318c 25 64 00 00 73 74 72 69-6e 67 20 74 6f 6f 20 6c %d..string too l
0106319c 6f 6e 67 00 69 6e 76 61-6c 69 64 20 73 74 72 69 ong.invalid stri
windbg基本简单步骤相关推荐
- 如何通过五个简单步骤成为更好的Stack Overflow用户
by Artem Stepanenko 由Artem Stepanenko 如何通过五个简单步骤成为更好的Stack Overflow用户 (How to become a better Stack ...
- tracepro应用实例详解_建筑安装工程造价,高清PPT图文详解,小白也能学会的简单步骤...
建筑安装工程造价,高清PPT图文详解,小白也能学会的简单流程 工程造价的直意就是工程的建造价格,是指进行某项工程建设所花费的全部费用.工程造价在工程中是很关键的存在,是工程能够取得的关键:对工程建设的 ...
- 在Linux系统安装Nodejs 最简单步骤
在Linux系统安装Nodejs 最简单步骤 1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn ...
- sql 执行顺序_10个简单步骤,完全理解SQL
点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 多年前收藏在笔记中的一篇文章,今天偶然翻出,重读了一遍,依然大有收获.分享出来,大家一 ...
- [转]virtualbox下安装增强工具简单步骤
virtualbox下安装增强工具简单步骤. 因为我最近用VirtualBox安装了Fedora. 直接安装VBoxLinuxadditions-X86.run是会报错的. Building the ...
- linux下screen版本,在Linux (RHEL/CentOS 7/8 )中,如何使用4个简单步骤安装Screen命令
在本文中,我通过4个简单步骤指导您完成在Linux(RHEL/CentOS 7/8)中安装Screen命令.你遇到在Linux会话中运行一些重要任务,但由于某些问题而突然中断了会话,任务在两个会话之间 ...
- maven项目 ant_将旧项目从Ant迁移到Maven的4个简单步骤
maven项目 ant 一段时间以来,我们一直在考虑将构建从蚂蚁移植到Maven. 它发生在上个月,实际上比我们预期的要简单. 根据我的经验,这里简要介绍了我们遵循的步骤. 我们的应用程序是一个具有多 ...
- java创建类的三个步骤_3个简单步骤即可测试Java 8
java创建类的三个步骤 即将发布的Java 8版本为Java开发人员带来了许多新功能,但是升级时始终存在代码破裂的风险. 我们都记得Java 7出厂时有一系列非常严重的错误 . 当然,我们所有人都可 ...
- 将旧项目从Ant迁移到Maven的4个简单步骤
一段时间以来,我们一直在考虑将构建从蚂蚁移植到Maven. 它发生在上个月,实际上比我们预期的要简单. 根据我的经验,这里简要介绍了我们遵循的步骤. 我们的应用程序是一个具有多个框架和技术的企业Web ...
最新文章
- 盘点丨机器学习2017年重大进展汇总
- python程序在安卓上如何运行-在 android 上运行 python 的方法
- (私人收藏)2019科协WER解决方案
- 有道编程的界面做的也太粗燥了吧!
- [Go]通道(channel)的基本操作
- Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略
- mysql查询优化not in,mysql not in如何优化
- springboot 监听所有异常_SpringBoot 全局异常配置及返回自定义页面
- 6间企业获颁“首届粤港澳大湾区百强企业传承大奖”
- initcall机制原理及实践
- apicloud 请删除手机中的apploader后在尝试
- paddlex,2.1.0识别预测代码(包含视频的)
- html公历农历相互转换,JavaScript实现公历转换农历
- 墨天轮沙龙 | 东方通张唐:东方通中间件助力信创发展
- FinalShell连接不上LinuxCentOS-7的解决方案
- 2018年最新黑马前端视频教程视频与源码全集
- iPhoneX停产?对此不敢苟同
- 2019oa系统二开php,PHPOA:OA自动化时代已经到来
- 计算机四年大学规划书,大学四年规划书
- 国家食品药品监督管理局投诉举报
热门文章
- Docker Toolbox:Docker Toolbox的简介、安装、使用方法之详细攻略
- Windows:利用各种小工具查看自己电脑上的CPUGPU型号、个数、详细参数等不同方法的详细攻略
- 成功解决np.array(zip(x1, x2)).reshape(len(x1), 2) ValueError: cannot reshape array of size 1 int
- ML:从0到1 机器学习算法思路实现全部过程最强攻略
- Linux设置SSH登录(SecureCrt)
- user-agent
- 单调有界数列一定有极限
- 仿京东首页上侧导航左侧地址栏布局(1)
- Struts2自定义Result处理JSON
- Java高新技术第一篇:类加载器详解