x32dbg动态调试--字符串搜索修补程序

2023-10-09 04:30

本文主要是介绍x32dbg动态调试--字符串搜索修补程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

观察程序

  1. 使用Detect It Easy检测目标程序为PE32

  2. 运行程序可以看到:程序有三个按钮:Serial/Name、Exit、Serial。我们先做“Serial”

  3. Nag提示框

  4. 到达下图的界面后我们随便输入“987654321”这个时候有个弹框显示“Try Again!!”。所以这里的Try Again!!”就是我们需要搜索的关键字符串

  5. IDA Pro载入目标程序可以搜索到上述字符串

分析过程

  1. 当我们把一个程序拖入到x64dbg中我们就可以看到下图的界面。这个时候我们需要注意的是它并不是在要调试程序的模块内
  2. 按F9运行直到显示下图的界面才真正进入目标程序内部,鼠标右键,再依次点击“搜索——>当前模块——>字符串”

修补程序:去掉Nag提示框

  1. 搜索nag提示框中的字符串
  2. 双击上图中的字符串跳转到地址空间处,并在0x42F797处设置软件断点
  3. 按F7单步步入“acid burn.42A170”函数空间内部,找到并将光标选择“call 0x004057A8(call <JMP.&MessageBoxA>)”所在行,鼠标右键选择“汇编”命令(或快捷键Space),填写nop,再勾选“保持大小”和“剩余字节以NOP填充”两个选项,再点击“确定”即可。
  4. 鼠标右键选择“补丁”命令(或快捷键Ctrl+P),点击“修补文件”,填写文件名,最后点击“保存”即可。

第一关Serial

  1. 在下方的搜索框搜索try字符串,x32dbg会自动筛选出所有类似的字符串。但是我们可以看到这里有三个字符串供我们选择
  2. 不知道具体是哪个字符串时,我们只需要给满足条件的字符串下断点就可以了,鼠标右键——>在所有命令上设置断点
  3. 按F9继续运行,接着在程序的文本框中输入“987654321”,点击“check it baby”按钮。程序会在下图的位置暂停下来。这个时候通过分析汇编代码,我们可以知道在“0x0042F4D0”这个函数为关键函数。
  4. 重新运行程序后,我们可以看到一个是我们输入的字符串,另一个是未知字符串而这个未知的字符串很有可能是“Serial”
  5. 再次重新运行并输入“Hello Dude!”,这个时候程序判断成功,执行“God Job dude!!”

第二关Serial/Name

  1. 重新运行程序,点击“Serial/Name”按钮,之后我们在名字部分输入“redbright”,注册码部分输入“9999999999”。之后运行程序,会在下图的位置断下。通过分析我们可以知道“0x0042FAFE”处调用比较函数

  2. 最后我们尝试输入“CW-9348-CRACKED”这个时候程序执行成功

算法破解

20 Serial中“CW-9348-CRACKED”中9348的计算方法:取Name第一个字母对应的ASCII值,比如说“redbright”中第一个字符r对应数字0x72,然后用它乘以0x29,结果再x2,将16进制数字转为10进制的字符串便是9348,然后再在前加上CW-,后加上-CRACKED,就组成了用户名对应的注册码

参考文献

  • x64dbg入门系列(二)-搜索字符串

这篇关于x32dbg动态调试--字符串搜索修补程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/170366

相关文章

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Mybatis嵌套子查询动态SQL编写实践

《Mybatis嵌套子查询动态SQL编写实践》:本文主要介绍Mybatis嵌套子查询动态SQL编写方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、实体类1、主类2、子类二、Mapper三、XML四、详解总结前言MyBATis的xml文件编写动态SQL