查看原文
其他

x64dbg入门之工具使用实战

夜航星 看雪学院 2021-03-07

本文为看雪论坛优秀文章

看雪论坛作者ID:夜航星





0x0 环境


1. x64dbg
2. 看雪找的一个serial.exe
3. Windows 10





0x1 主要内容


本文通过分析一个非明码比较的序列号保护程序,展示x64dbg的常见用法以及逆向的基本思路,在实战中讲解x64dbg的一些用法:

1. 字符串搜索

2. 反汇编界面基本操作

3. 软件断点

4. 函数断点

5. 常见窗口介绍





0x2 分析


1. 分析程序功能

这程序就长这样:


在help里面可以找到一个注册功能,注册界面如下:


输入正确的用户名和密码即可注册成功,当然,如果输入错误,会弹出一个messagebox显示错误信息。

2. 查壳


可以看出,目标程序是使用汇编写的,貌似没壳。

3. 分析目标程序

将目标程序用x64dbg(实际上是x32dbg)打开,看看x64dbg的界面,这里常用的窗口都使用红字标注出来了:


字符串搜索功能,我们可以通过x64dbg的字符串搜索功能来查看内存中加载的字符串,具体操作步骤为:CPU(反汇编)窗口->鼠标右键->搜索->选择模块(根据个人需求选择,一般选择当前模块,前提是得先执行到主模块)->字符串。


我们单步到主模块(单步调试快捷键和od一样,F7单步步入,F8单步步过),字符串搜索得到如下结果,可以看到很明显的字符串:


双击该字符串即可跳到反汇编窗口中相应位置。


下软件断点,运行程序,观察是何处调用了该代码(鼠标点击相应行,按下F2即可快速使用软件断点),下软件断点后,地址处会变为红色,断点窗口能看到相应信息。



让程序运行起来(快捷键F9),输入注册信息,点击确认,等待命中软件断点。

可以看到,程序的EIP指向了我们的软件断点,此时信息框信息为失败。


单步步过,一直走到返回ret,即可查看上层代码。

可以看到,源程序是使用了2个处理函数,分别对用户名和密码进行了运算,用户名运结果放到了eax中,密码运算结果放在ebx中,比较二者运算结果是否相同,决定调用注册成功函数还是注册失败函数。(由于此时只是介绍工具使用,故不展示算法分析部分,大致流程为eax = F1(用户名),ebx = F2(注册码),cmp eax,ebx


这时候,我们使用x64dbg的代码修改功能,将对应的注册失败验证跳过,即可完成破解:将0x401243处的je 0x40124C改为jmp 0x40124C(双击代码行即可修改)。


保存到文件(反汇编窗口右键->补丁->修补文件)。


现在,验证我们的破解成果吧:


可以看到,已经破解成功了,当然,完美的破解应当是写出注册机,这里只是展示工具使用,主要不是展示逆向,所以暂时不写注册流程。





0x3 知识点总结


1. 相应界面的查看:CPU(反汇编)窗口、寄存器窗口、内存窗口、栈窗口


2. 常用快捷键:F2下软件断点、F7单步步入、F8单步步过、F9运行程序

3. 常用功能:
  • 字符串搜索:CPU反汇编窗口->鼠标右键->搜索->选择模块(根据个人需求选择,一般选择当前模块,前提是得先执行到主模块->字符串。
  • 保存修改到文件:反汇编窗口右键->补丁->修补文件。


ps. serial及serial(破解版)可点击“阅读原文”下载附件。



- End -


看雪ID:夜航星

https://bbs.pediy.com/user-886970.htm

  *本文由看雪论坛 夜航星 原创,转载请注明来自看雪社区。



推荐文章++++

* 小议智能设备安全研究

* 俄罗斯套娃式的.net样本分析

*【DASCTF】4道逆向题解析

* 一款炒茅台炒鞋抢购辅助软件Android版的逆向分析

CVE-2019-0803 For windows 2012R2

* 通过一款早期代码抽取壳入门学习 so 层分析


好书推荐











公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com



“阅读原文”一起来充电吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存