学习笔记1(widbg)
来源:互联网 发布:学网店美工 编辑:程序博客网 时间:2024/05/16 05:02
windbg 学习中对一个pe文件调试,当载入后可用线程查看指令 ~* 查看一些初步信息:
图片中 ID并不是TID,而是windbg 为它分配的一个ID号,_main**后面的地址01201136即为pe文件的OEP地址
对该地址下断地 进入:
然后进入__tmainCRTStartup, uf 函数完整反汇编(u向下反汇编,ub向上反汇编),可以看见内容很多,这里面后半段位置调用了
真正的入口函数main,这个函数里对程序做了些初始化,不同的编译器代码不一样,这时进入mian函数:
上图中可以看见一条指令 mov eax,dword ptr [_security_cookie(012317b0)], 这个_security_cookie中存放这一个4字节的cookies,当程序被加载的时候
被计算出来的伪随机数,然后将他保存在程序的内存中的.data段,既012317b0地址处,在函数开头被拷贝到栈中,如图:
xor eax, ebx ; mov dowrd ptr [ebp-4], eax 将值取出与ebp异或然后保存在[ebp-4]处,[ebp+4](返回地址), [ebp] ,[ebp-4](cookie),[局部变量]
函数结尾处会将.data中的值取出与栈中的值比较,不相等就说明栈被破坏,程序退出。
程序执行时所有函数均用这一个cookie值
使用 kpnf 指令查看栈信息:
k 表示查看栈信息,p 显示函数的所有参数,包括参数的名字、类型、值。n 显示调用栈的每帧编号。f 显示调用栈的每帧占用字节数。7 显示一条信息
其中ChildEBP是当前函数的EBP, RetAddr是返回地址,即父函数Call它的下一跳指令地址:
如上图:ebp+4保存的返回地址。
使用dv指令查看函数内部局部变量信息,通常与/i /t /v 连用:/i 显示变量是局部的、全局的、参数、还是函数等信息。/v 显示变量所在地址。/t 显示变量的类型
要查看某一函数时,可以与.frame连用,.frame 0,切换栈针到0栈针。
今晚小计到这儿。
- 学习笔记1(widbg)
- widbg命令解释
- 程序崩溃时用widbg产生dump
- 学习笔记(1)
- 学习笔记(1)
- 学习笔记(1)
- 学习笔记(1)
- windows8 和 虚拟机XP 通过widbg进行双机调试
- 【Android学习笔记】Service学习(1)
- sql学习笔记(1)-------------学习基础
- 周志华 机器学习 学习笔记 (1)
- 集成学习学习笔记(1)
- sqli-lab学习笔记(学习笔记)(1-10)
- 【spark 学习笔记】Spark学习笔记精华(1)
- Log4J学习笔记(1)
- Emacs学习笔记(1)
- java学习笔记(1)
- 软件工程学习笔记(1)
- 在ubuntu系统上,beagleboneblack借用usb实现网络与主机共享
- 《富爸爸商学院》读书笔记(一)
- Ubuntu安装MySQL
- express: command not found.
- C#动态添加label控件
- 学习笔记1(widbg)
- 第六周作业2——哈夫曼编码实现
- linux给文件或目录添加apache权限
- List 存放对象问题
- 华为、腾讯实习生招聘笔试、面试经验
- c11
- linux查看系统信息
- POJ 2912 Rochambeau(枚举+带权并查集)
- Mysql、SqlServer和Oracle 添加修改删除字段sql