x64dbg入门之工具使用实战
2020-06-22 02:51:39 Author: bbs.pediy.com(查看原文) 阅读量:642 收藏

  1. 看雪论坛
  2. 『软件逆向』

夜航星

雪    币: 772

活跃值: 活跃值 (113)

能力值:

( LV3,RANK:20 )

在线值:

[原创]x64dbg入门之工具使用实战

4天前 700

0x0 环境

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

0x1 主要内容

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

  1. 字符串搜索
  2. 反汇编界面基本操作
  3. 软件断点
  4. 函数断点
  5. 常见窗口介绍

0x2 分析

  1. 分析程序功能

    这程序就长这样:

    软件界面

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

    软件界面2

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

  2. 查壳

    查壳结果

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

  3. 分析目标程序

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

    xdbg基本界面

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

    搜索1

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

    搜索2

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

    关键代码

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

    软件断点1

    软件断点2

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

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

    破解流程1

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

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

    破解流程2

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

    破解流程3

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

    破解流程4

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

    破解流程5

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

0x3 知识点总结

  1. 相应界面的查看:CPU(反汇编)窗口、寄存器窗口、内存窗口、栈窗口
  2. 常用快捷键:F2下软件断点、F7单步步入、F8单步步过、F9运行程序
  3. 常用功能:
    1. 字符串搜索:CPU(反汇编)窗口->鼠标右键->搜索->选择模块(根据个人需求选择,一般选择当前模块,前提是得先执行到主模块)->字符串
    2. 保存修改到文件:反汇编窗口右键->补丁->修补文件

0x4 附件

[公告]看雪论坛2020激励机制上线了:“活跃值”、“能力值”、“雪币”!发帖、回帖不减雪币了!赶紧回帖看看你的活跃值?

最新回复 (6)

ninebell

雪    币: 6308

活跃值: 活跃值 (12)

能力值:

( LV3,RANK:20 )

在线值:

发帖

72

回帖

560

粉丝

0

ninebell 活跃值 4天前

2

0

高级命令没提
条件断点没说

脚本命令没说
给力插件没讲

3A转换技巧没说

帮助看得不细

最后于 4天前 被ninebell编辑 ,原因: 提建议

夜航星

雪    币: 772

活跃值: 活跃值 (113)

能力值:

( LV3,RANK:20 )

在线值:

发帖

2

回帖

4

粉丝

0

夜航星 活跃值 4天前

3

0

ninebell 高级命令没提条件断点没说脚本命令没说给力插件没讲3A转换技巧没说帮助看得不细

好嘞,知道了,就是寻思着不是入门教程嘛,就写了一些基本的分析技巧。

nevinhappy

雪    币: 10770

活跃值: 活跃值 (13)

能力值:

( LV8,RANK:160 )

在线值:

发帖

23

回帖

246

粉丝

1

nevinhappy 活跃值 2 3天前

4

0

夜航星 好嘞,知道了,就是寻思着不是入门教程嘛,就写了一些基本的分析技巧。

ninebell已经把下一篇文章的大纲已经给你了!!!

细叶远志

雪    币: 386

活跃值: 活跃值 (13)

能力值:

( LV2,RANK:10 )

在线值:

发帖

1

回帖

7

粉丝

0

细叶远志 活跃值 3天前

5

0

可否告知CTRL+G搜索函数后定位不到关键函数怎解?
本来应该在0040.....区域,他定位到76C....的了。

夜航星

雪    币: 772

活跃值: 活跃值 (113)

能力值:

( LV3,RANK:20 )

在线值:

发帖

2

回帖

4

粉丝

0

夜航星 活跃值 3天前

6

1

细叶远志 可否告知CTRL+G搜索函数后定位不到关键函数怎解? 本来应该在0040.....区域,他定位到76C....的了。

这个要看2个方面,一是你搜索的时候模块是不是运行到主模块了,二是程序的入口点是否是动态分配的。

ZwCopyAll

雪    币: 251

活跃值: 活跃值 (20)

能力值:

( LV2,RANK:10 )

在线值:

发帖

10

回帖

203

粉丝

0

ZwCopyAll 活跃值 3天前

7

1

666

游客

登录 | 注册 方可回帖

返回


文章来源: https://bbs.pediy.com/thread-260156.htm
如有侵权请联系:admin#unsafe.sh