吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 66919|回复: 115
收起左侧

[原创] x64dbg零基础使用教程 2018/07/08

    [复制链接]
wwh1004 发表于 2018-7-8 12:19
这篇文章主要是为.NET逆向但不会x64dbg的同学准备的,文章基本上零基础,会一点c#/vb.net就能看懂文章。
文章以visual studio 2017为参照,讲解如何像用vs调试.NET程序集一样使用x64dbg调试本机代码
x64dbg下载地址:https://github.com/x64dbg/x64dbg/releases




x64dbg基本操作:

1.步进
等于vs中的"逐语句"
vs图标:
Snipaste_2018-07-08_11-14-25.png
x64dbg图标:
Snipaste_2018-07-08_11-16-19.png
vs快捷键:
F11
x64快捷键:
F7

2.步过
等于vs中的"逐过程"
vs图标:
Snipaste_2018-07-08_11-14-28.png
x64dbg图标:
Snipaste_2018-07-08_11-16-20.png
vs快捷键:
F10
x64快捷键:
F8

3.运行到返回
等于vs中的"跳出"
vs图标:
Snipaste_2018-07-08_11-14-32.png
x64dbg图标:
Snipaste_2018-07-08_11-16-22.png
vs快捷键:
Shift+F11
x64快捷键:
Ctrl+F9

4.运行
等于vs中的"启动"/"继续"
vs图标:
Snipaste_2018-07-08_11-10-33.png
Snipaste_2018-07-08_10-57-07.png
x64dbg图标:
Snipaste_2018-07-08_11-05-53.png
vs快捷键:
F5
x64dbg快捷键:
F9

5.断点

在想断下的指令上按下对应快捷键即可vs图标:
启用: Snipaste_2018-07-08_11-19-27.png
禁用: Snipaste_2018-07-08_11-19-30.png
x64dbg图标:
启用: Snipaste_2018-07-08_11-26-21.png
禁用: Snipaste_2018-07-08_11-26-43.png
vs快捷键:
F9
x64快捷键:
F2

x64dbg入门操作:

1.设置符号文件保存路径:
Q:符号文件是什么?A:*.pdb文件,还不知道就百度吧。。。Q:为什么要设置?
A:符号文件通常很大,不然x64dbg默认保存到自身目录下,导致升级x64dbg,迁移x64dbg到其它位置极为不便
Snipaste_2018-07-08_11-31-14.png
Snipaste_2018-07-08_11-31-30.png
这样就设置好了

2.使用符号文件:
很多情况下,x64dbg不会自动加载符号文件(不知道为什么,可能是防止调试时太卡吧,vs加载过多符号文件就会卡顿)
这时候就需要我们手动加载了
Snipaste_2018-07-08_11-40-06.png
x64dbg没有加载选项,可以点"下载此模块的符号信息"(要加载所有符号文件可以点"下载所有模块的符号信息")
如果符号文件缓存文件夹中已经有了这个符号文件,x64dbg直接从本地加载,否则从符号文件服务器上下载并加载
右边显示了dll自身导出的函数和符号文件导出的函数,左键单击这里的函数,按下F2,是可以下断点的

3.安装插件:
对于.NET逆向,一般只要装一个反调试器检测的插件就行了
我在用@xjun 的SharpOD:https://www.52pojie.cn/thread-628837-1-1.html
不是打广告,是这个插件真的很好用,调试体验极佳(用作者的推荐设置)
不扯了,说下怎么安装
Snipaste_2018-07-08_11-51-05.png
Snipaste_2018-07-08_11-51-53.png
把压缩包里面的*.dp*文件拖入对应的文件夹(其实这些*.dp*也是*.dll文件,只不过改了个后缀名让x64dbg知道这里有个插件)
比如装32位x64dbg的插件,就将*.dp32拖入x64dbg\x32\plugins

x64dbg实际操作:

1.查看函数调用时的参数:
首先你需要明白什么是调用约定,这些需要百度
现在我使用32位x64dbg调试一个unpackme,在mscorwks.dll的AssemblyNative::LoadImage处下了断点,按下F9,x64dbg在此函数入口处断下了
Snipaste_2018-07-08_12-03-43.png
在符号窗口可以看到这个函数的调用约定是fastcall
我们回到CPU,把调用约定改成fastcall
Snipaste_2018-07-08_12-05-41.png
Snipaste_2018-07-08_12-06-17.png
这里的1,2,3就是代表了第1,2,3个参数
我们刚才已经看到了,这个函数第一个参数是"Array<unsigned char> *",表示指向了一个字节数组,这里的"unsigned char"等同于C#/VB.NET中的"byte",而不是C#/VB.NET中的"char"

2.转储内存到文件:
我们在内存窗口中按下Ctrl+G,输入0312BBAC
Snipaste_2018-07-08_12-11-46.png
成功跳转到了一个内存区域,储存了"Array<unsigned char>"
我们点一下4D或者M
Snipaste_2018-07-08_12-13-19.png
再将右边滚动条滚到底部,按住Shift,在左键单机一下最后一个字节
Snipaste_2018-07-08_12-14-48.png
右键,二进制编辑->保存到文件
Snipaste_2018-07-08_12-15-13.png
这样,你就把一个.NET程序集人工Dump下来了
dnSpy打开看看,是个没啥用的程序集(这个仅仅是演示,AssemblyNative::LoadImage断点有时是很有用的)
Snipaste_2018-07-08_12-16-35.png

应该没什么要写的了,对于.NET逆向这些完全足够了
如果有什么要补充的,我还会再编辑这个帖子,并且更新标题上的日期,新手可以收藏这个帖子

免费评分

参与人数 42威望 +1 吾爱币 +53 热心值 +40 收起 理由
夜步城 + 1 + 1 我很赞同!
maxwellhouse + 1 + 1 鼓励转贴优秀软件安全工具和文档!
晓寒歌 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
zyz + 1 + 1 鼓励转贴优秀软件安全工具和文档!
despy + 1 谢谢@Thanks!
暗夜十二乐章 + 1 + 1 谢谢@Thanks!
kikyoulin + 1 + 1 用心讨论,共获提升!
vivivip + 1 + 1 我很赞同!
luojinfang + 1 + 1 谢谢@Thanks!
无殇 + 1 + 1 谢谢@Thanks!
布丁WDG + 1 谢谢@Thanks!
hotool + 2 + 1 鼓励转贴优秀软件安全工具和文档!
sunnylds7 + 1 热心回复!
jaffa + 1 + 1 谢谢@Thanks!
Ravey + 1 + 1 谢谢@Thanks!
gink + 1 + 1 谢谢@Thanks!
ccn1974 + 1 + 1 谢谢@Thanks!
Hmily + 1 + 10 + 1 欢迎完善科普内容!
小生好白 + 1 + 1 用心讨论,共获提升!
非凡公子 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qbnet1 + 1 + 1 这种零基础的教学,十分实用,奉上积分,还请笑纳。
jgs + 1 + 1 谢谢@Thanks!
jolly_800 + 1 + 1 我很赞同!
logafo + 1 + 1 谢谢@Thanks!
yer + 1 + 1 谢谢@Thanks!
青春丿易逝 + 1 + 1 谢谢@Thanks!
QB56 + 1 + 1 热心回复!
禁闭岛 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
朱朱你堕落了 + 1 + 1 热心回复!
c66d88 + 1 + 1 感谢楼主,我等这个教程等了两年了
lin_xop + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
woshifeng100 + 1 + 1 用心讨论,共获提升!
qiuge + 1 + 1 热心回复!
爷单身1却潇洒 + 1 + 1 谢谢@Thanks!
shujia2112 + 1 鼓励转贴优秀软件安全工具和文档!
aimee400 + 1 + 1 谢谢@Thanks!
爱的人 + 1 + 1 我很赞同!
微笑着走过 + 2 + 1 用心讨论,共获提升!
CrazyNut + 1 用心讨论,共获提升!
aerofsm + 1 + 1 热心回复!
freesoft00 + 1 + 1 支持好教程
冥界3大法王 + 4 + 1 良心工程,加分犒劳~~

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wwh1004 发表于 2018-12-17 22:17
布衣木人 发表于 2018-12-17 17:07
好像不会吧,windbg需要命令,这个貌似也是吧,没怎么用过啊

那不清楚了,我的自动加载的。用github上最新的x64dbg试试
飞鸽 发表于 2019-10-28 08:56
wwh1004 发表于 2018-12-13 22:05
在符号窗口,右键要加载符号的模块,点下载此模块的符号信息,下载完就会自动加载

  网址:https://msdl.microsoft.com/download/symbols/wkernelbase.pdb/C087374209B24B1EBC76F8BDC5B369731/wkernelbase.pdb
连接成功,但下载失败(状态码:404)……
大神,这个 下载所有文件都提示404错误,任何下载都这样,请问为什么,求解
冥界3大法王 发表于 2018-7-8 12:24
dwh007 发表于 2018-7-8 12:40
希望整理成文档

免费评分

参与人数 1吾爱币 +1 收起 理由
wwh1004 + 1 感觉自己不太会写教程,太乱了。不过这些都是基本使用方法,练一下就可以记.

查看全部评分

freesoft00 发表于 2018-7-8 12:53
如果有详细的教程就更好了。x64dbg教程太少了。
aerofsm 发表于 2018-7-8 12:54

希望整理成文档
byh3025 发表于 2018-7-8 13:21
用例子实际操作下会更明白
netle8 发表于 2018-7-8 13:36
学习了,感谢分享!
leegn 发表于 2018-7-8 15:20
不搞.net,但是支持楼主
1207852256 发表于 2018-7-8 18:04
谢谢大佬分析,太棒了   账号需要
哈哈哈哈哈哈哈
gunxsword 发表于 2018-7-8 18:09
不错的教程,虽然经常有OD,不过X64这个还没怎么用过,正好熟悉一下,感谢!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 00:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表