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

相关文章

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC