易语言教程_易语言源码_易语言视频教程_易语言论坛

 找回密码
 点击注册

Vip新手入门区
新手学习指南  学员作品展示 Vip课程总纲  Vip绝密课程系列

Vip相关下载区
Vip模块下载   Vip模块绑定   Vip模块例子 魔鬼插件下载  魔鬼插件例子  教程工具下载

Vip论坛服务区
教程问题提问区   模块问题提问区 技术交流区   魔鬼插件建议   忘记密码找回

VIP会员办理QQ: 8643245   
【请先加好友,然后到好友列表双击联系客服,办理VIP会员。】
【基础篇】易语言辅助入门基础教程
VIP模块办理QQ: 7189694 办理正版魔鬼作坊VIP模块 【基础篇】OD与CE入门基础教程
办理【终身VIP会员】“秒杀价” 仅需 RMB278.00元… 【基础篇】零基础绝密汇编语言入门课程 (共26课已完成)…
办理VIP详情…猛击这里查看详情 【基础篇】VIP辅助入门基础教程-新手必学 已发布10课 ……
VIP教程免费试看章节…猛击下载 【第1款】制作“辅助挂”教程目录查看(共107+16_x64下更新课已完成)…
亲爱的VIP学员,请到此写下你学习的感受与发布作品截图… 【第2款】制作“任务挂”教程目录查看(共77+1_x64下更新课已完成)…
卍解吧!不用bp send类封包断点找CALL的各种通杀思路 【第3款】驱动过保护技术课程(共38课已完成)…
【绝密教程】VIP绝密教程系列---注意:随时会更新! 【第4款】VIP邪恶二叉树辅助课程 (共31+17_x64下更新课已完成)…
【精品第13款】3D射击游戏与页游透视 智辅课程 已完成17课… 【第5款】零基础易语言按键辅助教程 (30课已完成)…
【精品第14款】变态功能辅助是如何炼成的 已完成36课… 【第6款】从零开始学习封包辅助技术教程(20课已完成) …
【精品第15款】DNF商业变态辅助的修炼之路 已完成27课… 【第7款】大杀特杀分析来源与CALL吸血鬼课程 (56课已完成)
【精品第16款】中控台多线程多开自动化商业辅助课程 已完成66课… 【第8款】完全零基础网页辅助课程(40课已完成)
【全新精品第17款】检测原理与过游戏内存检测技术课程 已发布9课… 【第9款】自动登录与操控LUA技术课程 (共46+8_x64下更新课已完成)…
【全新精品第18款】手游全自动化任务脚本辅助课程 已发布25课…… 【第10款】网页辅助封包脱机进阶课程 已完成30课…
【全新精品第19款】D3D方框骨骼透视与自瞄辅助课程进阶篇 已发布34课…… 【第11款】VC++ Lua脚本辅助课程 已完成112课…
【全新精品第20款】 X64模拟器吃鸡游戏方框透视自瞄辅助课程 发布中... 【第12款】网游脱机封包智辅课程 已完成35课…
查看: 1409|回复: 1

windbg常用命令

[复制链接]

16

主题

3

回帖

26

积分

编程入门

Rank: 1

魔鬼币
577
发表于 2017-3-1 08:22:33 | 显示全部楼层 |阅读模式
基本知识和常用命令

(1)       Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx

安装完后执行windbg –I将Windbg设置成默认调试器


(2)       Windbg的命令分为标准命令,原命令和扩展命令,输入问号(?)可以显示所有的标准命令的帮助信息; 元命令以一个点(.)开始,输入.help可以显示所有的原命令的帮助信息;扩展命令以叹号(!)开始。

所有命令的具体用法可以通过F1查看Windbg的帮助文件。


(3)       通过设置符号文件路径,让Windbg自动从微软网站更新系统Dll的符号文件

SRV*d:\symbols* http://msdl.microsoft.com/download/symbols


(4)       用分号(;)作为分隔符,可以在一行输入多条命令


(5)       按上下箭头可以浏览和选择以前输入过的命令


(6)       Ctrl+Break终止一个很长时间没有完成的命令, Ctrl+Break也可以让正在运行的程序暂停


(7)       Windbg默认的数值进制一般是16, 可以通过n命令查看和设置当前进制,所以我们一般在数值里带上进制, 0n(十进制), 0x(十六进制), 0t(8进制), 0y(2进制), 比如0n20表示20, 0x14表示20等



(8)       可以通过问号命令(?)显示表达式值,双问号(??)显示C++表达式值, 通过.cls命令清屏


(9)       如果x表示的一个地址, 则可以通过以下方法获取x所指向的值

hi(x) 高16 bits

low(x) 低16 bits

by(x) 返回第一个byte

wo(x) 返回第一个word

dwo(x) 返回第一个dword

qwo(x) 返回第一个4 word(Quad-word)

poi(x) 返回第一个指针值


(10)   函数调用如果还没开始,即一般函数入口代码

push ebp

mov ebp, esp

还未执行,


则[esp+4]表示第一参数值, [esp+8]表示第二参数,以此类推, [esp]表示的是返回地址


如果上面的入口代码已经执行,则一般通过ebp来获取函数参数和局部变量

[ebp+8]表示第一参数, [ebp+0xC]表示第二个参数, 以此类推,[ebp+4]表示返回地址 [ebp]表示上一堆栈桢的基地址。

[ebp-4]表示函数第一个局部变量


(11)   条件表达式

j<条件表达式>[Command1];[Command2]

例如bp consoletest!add "j(dwo(esp+4)==0n10) 'kv;.echo \"break\"';'g'" 表示条件断点,如果consoletest!add的第一个参数是10, 则打印堆栈,输出”break”, 并暂停,否则继续执行


也可用元命令代替

bp consoletest!add  ".if(dwo(esp+4)==0n10) {kv;.echo \"break\"} .else {g}"


(12)   上下文

上下文(Context)包括会话(Session)上下文, 进程上下文,寄存器上下文,局部变量上下文。

会话上下文和登陆用户帐号有关。进程上下文和当前调试的默认进程有关, 寄存器上下文和当前默认线程有关。

局部变量上下文和当前的堆栈桢有关, 比如可以通过.frame [index] 切换当前堆栈桢,然后通过dv 显示当前堆栈桢函数的局部变量(堆栈桢的index从0开始,可以通过kn命令显示堆栈桢索引)


(13)   保存dump文件

.dump /ma c:\test.dmp 保存full-dump

.dump /m c:\test.dmp 保存mini-dump


(14)   分析Dump

一般先 !analyze –v Windbg会根据上面命令自动分析,

           然后 ~* kv 打印所有线程的堆栈


(15)   重新加载符号文件

.reload –f [name], 强制重新加载某个模块的符号文件

比如 .reload –f  test.dll


(16)   察看模块信息

lm显示所有模块信息

lmf 显示所有模块及其路径
lmD 显示所有模块详细信息

!lmi  [module name] 显示某一模块的详细信息


(17)   分析调试符号

X [选项] 模块名!符号名

       比如x ntdll!dbg*显示所有ntdll模块中以dbg开头的符号

            比如x test!cmyclass::init 显示test模块中cmyclass类中的init函数符号


(18)   搜索符号

ln [address] 搜索离address最近的符号名(list nearest symbols)


(19)   事件处理

可以通过菜单Debug->Event Filter…设置

sx 显示各个事件的代码和目前的处理选项

sx {e|d|i|n} [command]  , e|d|i|n分别对应Enabled, Disabled,Output和Ignore

比如 sxe ld user32.dll 表示在加载user32.dll时设置的中断

sxr 恢复成默认设置


(20)   单步调试

    g 继续运行(Go), 热键F5

    t 单步越过(step over), 热键F10

    p 单步进入(step into), 热键 F11


(21)   设置断点(break point)

bp [address] [“command”] 设置软件断点。

比如 bp kernel32!CreateProcessW表示在调用这个CreateProcess时设置断点。

比如bp kernel32!CreateFileW "du poi(esp+4); g" 表示在调用CreateFile时打印出文件路径(第一个参数),然后继续执行


针对某线程设置断点,只要在命令前加~线程号:

比如 ~0 bp 0x441242, 表示0号线程执行到地址0x441242时中断


ba [access size] [command]设置硬断点。

其中,access指定访问方式(e执行指令, r读取数据,w写入数据)

size 表示监视数据的大小(1, 2, 4)

比如ba r4 0x414422, 表示在地址0x414422写入4字节数据是触发断点


(22)   管理断点

bl 列出所有当前断点的状态

bc 清除断点, bc * 清除所有断点, bc 0 清除0号断点

bd 禁用某个断点(disable)

be 打开某个断点(enable)


(23)   察看堆栈

kn [frame count]察看当前堆栈及其索引, frame count指定要显示多少桢

kb显示堆栈桢地址,返回地址,参数,函数名等

kv在kb的基础上增加了函数调用约定等信息, 所以推荐用kv命令察看堆栈.


.frame [frame index] 将当前堆栈切换到某个堆栈桢, 比如.frame 1 切换到第1桢

dv 命令察看当前堆栈桢的局部变量


(24)   察看和修改寄存器

r显示所有寄存器的值

r  eax=0x100 将eax寄存器的改成0x100


(25)   显示内存区域(dump memory)

d{a|b|d|D|f|q|u|w} [range]

其中a表示ASCII码,b表示byte, d表示DWORD, D表示double, f表示float, q表示8字节, u表示Unicode String, w表示word

Range 表示地址范围,可以用2种表示:一是起始地址加终止地址, 二是起始地址加L长度(不是字节长度,是单位长度)。

比如 dw 77e0d827 L10 表示显示77e0d827开始的10个word

比如 dd 77e0d820 77e0d844, 表示显示 77e0d820 和77e0d844之间的所有dword

比如 du 77e0d820, 表示77e0d820开始的以0结尾的字符串


dps [range] 显示某一地址范围内的符号(display word and symobols)


(26)   显示数据类型(dump symbolic type information)

dt [模块名!]类型名

dt testApp!g_appInstance 表示显示testApp里全局变量g_appInstance的内存布局

dt 0x0458e850 test!CMyApp 表示将地址0x0458e850以test!CMyApp类地址解析,并打印内存布局, 所以只有私有符号才有这个功能

如果当前堆栈桢是在某个类函数内,可以通过dt this 打印当前类的内促布局。


(27)   搜索内存(search memory)

s –[type] range pattern

其中type, b表示byte, w表示word, d 表示dword, a表示ASCII string,u表示unicde string

Range 表示地址范围,可以用2种表示:一是起始地址加终止地址, 二是起始地址加L长度(不是字节长度,是单位长度)。如果搜索空间长度超过256M,用L?length。

Pattern指定要搜索的内容.

比如 s -u 522e0000 527d1000 "web"表示在522e0000 和527d1000之间搜索Unicode 字符串”web”

比如s -w 522e0000 L0x100  0x1212 0x2212 0x1234 表示在起始地址522e0000之后的0x100个单位内搜索0x1212 0x2212 0x1234系列的起始地址


(28)   修改内存 (edit memory)

e{a|u|za|zu} address “String”

            其总za和zu表示以0结尾的Ascii和Unicode字符串, a和u则表示没有0结尾

比如 ezu 0x445634 “abc” 表示在0x445634地址写如unicode 字符串abc

            比如ea 0x445634 “abc” 表示在0x445634地址写入Ascii字符串abc, 不包含结束符0


e{a|b|d|D|f|q|u|w} address [values]

其中a表示ASCII码,b表示byte, d表示DWORD, D表示double, f表示float, q表示8字节, u表示Unicode String, w表示word

比如eb  0x123432 0x41 0x41 0x41 表示在地址0x123432 写入3个0x41


(29)   观察内存属性

!address [address]

比如!address 0x414453, 显示地址0x414453所在区域的内存属性


!heap -h 显示所有的内存堆(heap)

(30)   反汇编某一地址

u address, 比如u 0x410040表示反汇编地址0x410040的代码

uf  反汇编某个函数, 比如uf test!main
ub 反汇编某地址之前的代码,比如ub 0x 0x410040 L20


(31)   进程线程控制

~*命令显示当前所有线程的详细信息

~[Index]   n增加索引为Index的线程的挂起计数

~[Index]  m减少索引为Index的线程的挂起计数

比如通过~2 n 增加2号线程的挂起计数后, 执行g命令(继续运行), 这时2号线程会依然暂停运行。


~[Index]  f 冻结某一线程的执行

~[Index] u 解冻某一线程的执行

~[Index]  g只运行线程号为index的线程

~[Index] s 切换当前线程


比如 ~2 kv; ~2 r 可以打印2号线程的当前堆栈和寄存器

~* kv可以打印所有线程堆栈。


!runaway 显示所有线程的CPU消耗


|. 显示当前调试进程

|* 显示当前调试中的所有进程

|[nIndex] s 切换当前调试进程


!peb 显示进程信息块(process environment block)

!teb 显示线程信息块(thread environment block)



(32)   线程死锁

!locks 显示死锁

!handle 列出当前进程所handle

!handle [index] f, 显示某个handle的详细信息


(33)   自动调试子进程

.childdbg 0

Disable child process debugging


.childdbg 1

Attach child process automatically


(34)   脚本支持

$$>< filename 加载脚本文件,并将脚本里的换行符自动换成;(分号)

$t0~$t19为伪寄存器,可用来存储临时值, 使用伪寄存器时前面尽量加@符号以加快搜索

.printf 可以输出格式化信息

as Name EquivalentLine 别名,类似define宏 , 比如 r $t0=poi(esp+4); as $filename $t0

ad Name 删除别名, ad*删除所有别名

al 列出所有别名

.block {…}重新开始替换里面的所有别名

${alias}强制要求替换里面的别名, ${/v:alias}不要替换里面的别名



0

主题

1

回帖

1

积分

编程入门

Rank: 1

魔鬼币
14
发表于 2023-10-26 10:59:31 | 显示全部楼层










































































































{2023年10月01日}2023冬季,全球 崩 盘,三 峡 溃 坝

{2023年10月01曰}2023冬季,全球 崩 盘,三 峡 溃 坝



作者 : 薛桦镰
时间:  2023年10月01曰 О8:49:57        星期曰        农历八月十七
           上正宗指 3110.48点    恒指 17809.66点   道指33507.50点
           囯际音乐节      囯际老人节
           


         
突然的,全球 金 融 市 场 连 续 跌 停 大 崩 盘,
没有什么,谁也没想到啊,友邦惊诧,黑 天 鹅 白天鹅 哥斯拉,
一切都是,蓄 谋 已 久 的精心策划。zéi 喊捉zéi。


{一} 今时今曰{癸卯2023年10月01曰 } :
今时今曰,我预.测,人类有始.以来最大的金.融.崩 盘 ,未来三个月
之内,即,2023年11月、12月、2024年元月,将 震 撼呈 现。
---- 中卝囯股市、全球股市、全球金融市场 连序跌婷大崩 盘 , 大盘连
       续或稍稍间断30/40多个跌亭板,人类有.史以来最大的金融.嗨啸。
股市、汇市、债市、期货商品、可能还有楼卝市,全部连卝锁式彻底崩溃。
黄 金 价 格 应 该 避 险 bào 涨。
忽 然 之 间 ,天 塌 了。{ 全 球 闪 崩 }
十 八 级 金融大 地.震,史无前例地球崩卝盘,要 多 惨 有 多惨,世界沫曰。
金融天坑,股市雪崩、铡 dāo 斩 首 、bào 雷 溃 坝 ,希 特 勒 巴巴罗萨
金融闪击战 。画 皮 ,终 于 撕 去 了 。
最热的天气,最冷的人心。
道琼斯,憋了14年的一泡shǐ{⑥440.О8},2023冬季,总算找到了,公共厕所。
缠中说禅17年之前预卝言的,2019毁miè性下跌。{有四年误差}
已故“周期天王”周金涛的,“2018年到2019年是康波周期的万卝劫卝不卝复之年”。
以金.融战.争为表现形式的,第 叁 次.世.戒.大.战,全面 bào.发。
---- 一切友好互访探讨分歧,新型大囯关
您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

魔鬼作坊|易语言教程|易语言源码|易语言论坛|易语言视频教程| 论坛导航|免责申明|手机版||网站地图
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表魔鬼作坊立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2010-2019 All Right Reserved.
快速回复 返回顶部 返回列表