[CrackMe]BuLLeT.exe的逆向及注册机编写
Delphi写的, 其实这个crackme很弱鸡, 但我还是花了好几个小时逆向, 一来是因为我第一次逆向delphi程序, 二来里面有很多转换函数, 我以为是加密函数, 结果一个个分析花了很多时间。但感觉学到了不少。
查壳发现加了一个WWPACK壳(没见过这种壳)。

进去之后不是在ntdll.dll里面, 而是直接直接在exe模块里, 没有见到pushad之类的标志, 无法用esp守恒, 所以就不断F8走下去。

上来就看到循环, 估计是在释放代码

还有一个很大的循环, 这里不管直接过, 肯定是在解密或者释放代码

最后一个大跳来到了这里, 我感觉这里有点像OEP, 不管了直接在这转储

修修补补之后感觉应该没什么问题

接着在进行了一次查壳发现应该没什么问题, 是用Delphi4写的。

先上手玩一下, 发现输入Serial后然后点击那个Spider按钮, 就会在Reg Nr控件对应的编辑框内生产值, 他应该是要让这个值等于0x3E74984B

由于是Delphi程序, 这里用工具进行反汇编, 成功找到了这个按钮代码的触发位置。

其首先拿到serial值并转成数字, 那个CalcInputWrapper是为了检测输入的是数字。

CalcInputWrapper里面最核心的是这段代码, 首先减去0x30是为了把字符串数字战场转成真正对应的数字, 然后判断是否大于9, 如果大于9或者已经到了末尾就返回并弹框
如果你输入的有除了0-9之外的其他字符会出现如下弹框
下面这段代码是整个算法的核心, 实际上很简单, 就是输入的数字的3倍就是RegNr的值, 这里是相加2次的方法取得的:

接着那个GenRegNrWrapper做的只是把16进制数字转成了字符串, 而我我这个函数里花了很久… 我还以为作者设计了啥复杂的算法来生成, 结果出来就是个转换用的函数。

不过里面确实挺复杂的, 感兴趣可以去看看。这只是其中的一小部分, 一点点的分析。而且Delphi的库函数也很多, 每次遇到了会被困住, 然后到IDA里面去看看有没有解析出来, 在里面也转了很久

所以核心算法很简单实际上就是serial * 3, 结果等于0x3E74984B就行了, 所以要得到serial直接除3就行。
下面是完成后的样子:

(完)
相关文章:
[CrackMe]BuLLeT.exe的逆向及注册机编写
Delphi写的, 其实这个crackme很弱鸡, 但我还是花了好几个小时逆向, 一来是因为我第一次逆向delphi程序, 二来里面有很多转换函数, 我以为是加密函数, 结果一个个分析花了很多时间。但感觉学到了不少。 查壳发现加了一个WWPACK壳(没见过这种壳)。 进去之后不是在ntdll.dll里面,…...
C++ 中 int、short、long和long long 分别是几位?有符号无符号有什么区别?
在C中,不同的数据类型表示不同范围的整数值。以下是各种整数数据类型的位数和范围: int: 通常为32位,表示带符号的整数,范围约为 -2,147,483,648 到 2,147,483,647。 short: 通常为16位,表示带符号的短整数࿰…...
Killing LeetCode [82] 删除排序链表中的重复元素 II
Description 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 Intro Ref Link:https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/ Difficulty:Medium T…...
LeetCode 热题 100 JavaScript--283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出:…...
java读写ini文件
java读写ini文件 1、格式 INI文件由节、键、值组成。 节 [section] 参数 (键值) namevalue 例: [Total] num1 [Server] ip127.0.0.1 2、代码封装 import org.apache.commons.configuration.ConfigurationException; import org.apache.common…...
【ARM Coresight 系列文章 2.3 - Coresight 寄存器】
文章目录 Coresight 寄存器介绍1.1 ITCTRL,integration mode control register1.2 CLAIM寄存器1.3 DEVAFF(Device Affinity Registers)1.4 LSR and LAR1.5 AUTHSTATUS(Authentication Status Register) Coresight 寄存器介绍 Coresight 对于每个 coresight 组件&am…...
kafka:java client使用总结塈seek() VS commitSync()的区别(三)
最近一段日子接触了kafka这个消息系统,主要为了我的开源中间件项目simplemq增加kafka支持(基于kafka-client【java】),如今总算完成,本文是对这个过程中对kafka消息系统的使用总结 线程安全 关于线程安全,…...
如何用正确的姿势监听Android屏幕旋转
作者:37手游移动客户端团队 背景 关于个人,前段时间由于业务太忙,所以一直没有来得及思考并且沉淀点东西;同时组内一个个都在业务上能有自己的思考和总结,在这样的氛围下,不由自主的驱使周末开始写点东西&…...
mysql高级三:sql性能优化+索引优化+慢查询日志
内容介绍 单表索引失效案例 0、思考题:如果把100万数据插入MYSQL ,如何提高插入效率 (1)关闭自动提交,只手动提交一次 (2)删除除主键索引外其他索引 (3)拼写mysql可以执…...
HCIP VLAN--Hybrid接口
一、VLAN的特点 1、一个VLAN就是一个广播域,所以在同一个VLAN内部,计算机可以直接进行二层通信;而不同VLAN内的计算机,无法直接进行二层通信,只能进行三层通信来传递信息,即广播报文被限制在一个VLAN内。 …...
大数据开发面试必问:Hive调优技巧系列二
接上次分享的Hive调优技巧系列一: 数据倾斜、HiveJob优化 第1章 数据倾斜(重点) 绝大部分任务都很快完成,只有一个或者少数几个任务执行的很慢甚至最终执行失败,这样的现象为数据倾斜现象。 一定要和数据过量导致的…...
【C++】STL——list的模拟实现、构造函数、迭代器类的实现、运算符重载、增删查改
文章目录 1.模拟实现list1.1构造函数1.2迭代器类的实现1.3运算符重载1.4增删查改 1.模拟实现list list使用文章 1.1构造函数 析构函数 在定义了一个类模板list时。我们让该类模板包含了一个内部结构体_list_node,用于表示链表的节点。该结构体包含了指向前一个节点…...
vscode 插件::EIDE
最新最全 VSCODE 插件推荐(2023版)_vscode_白墨石-华为云开发者联盟 (csdn.net) 超好用的开发工具-VScode插件EIDE_vscode eide_桃成蹊2.0的博客-CSDN博客 Setup | Embedded IDE For VSCode (em-ide.com)...
Python 网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统 Socket 接口的全部方法。高级别的网络服务模块 SocketServer, 它提供了服务器…...
SQL 数据科学:了解和利用联接
推荐:使用 NSDT场景编辑器助你快速搭建可编辑的3D应用场景 什么是 SQL 中的连接? SQL 联接允许您基于公共列合并来自多个数据库表的数据。这样,您就可以将信息合并在一起,并在相关数据集之间创建有意义的连接。 SQL 中的连接类型…...
(统计学习方法|李航)第五章决策树——四五节:决策树的剪枝,CART算法
目录 一,决策数的剪枝 二,CART算法 1.CART生成 (1)回归树的生成 (2)分类树的生成 2.CART剪枝 (1)剪枝,形成一个子树序列 (2)在剪枝得到的子…...
C语言--结构体定义
整型数,浮点数,字符串是分散的数据表示,有时候我们需要很多类型表示一个整体,比如学生信息。 数组是元素类型一样的数据集合,如果是元素类型不同的数据集合,就要用到结构体 结构体一般是个模板,…...
解决Element Plus中Select在El Dialog里层级过低的问题(修改select选项框样式)
Element Plus是Vue.js的一套基于Element UI的组件库,提供了丰富的组件用于构建现代化的Web应用程序。其中,<el-select>是一个常用的下拉选择器组件,但在某些情况下,当<el-select>组件嵌套在<el-dialog>…...
【数据结构】二叉树 链式结构的相关问题
本篇文章来详细介绍一下二叉树链式结构经常使用的相关函数,以及相关的的OJ题。 目录 1.前置说明 2.二叉树的遍历 2.1 前序、中序以及后序遍历 2.2 层次遍历 3.节点个数相关函数实现 3.1 二叉树节点个数 3.2 二叉树叶子节点个数 3.3 二叉树第k层节点个数 3…...
【无标题】云原生在工业互联网的落地及好处!
什么是工业互联网? 工业互联网(Industrial Internet)是新一代信息通信技术与工业经济深度融合的新型基础设施、应用模式和工业生态,通过对人、机、物、系统等的全面连接,构建起覆盖全产业链、全价值链的全新制造和服务…...
CET中电技术如何助光伏企业在“四可“时代抢占先机?
2026年,"十五五"规划开局之年,新能源行业正经历一场深刻的变革。从2025年5月30日136号文推动投资主体转变,到2026年1月30日114号文将"四可"能力从试点推广期正式升级为政策强制标准,分布式光伏的并网逻辑已被…...
MogFace-large保姆级教程:Gradio界面汉化、按钮定制与结果样式美化
MogFace-large保姆级教程:Gradio界面汉化、按钮定制与结果样式美化 1. 教程简介 大家好,今天我们来聊聊如何玩转MogFace-large这个人脸检测神器。如果你正在寻找一个准确率高、使用简单的人脸检测工具,那么MogFace-large绝对是你的不二选择…...
别再手动P图了!用Python+Flask 5分钟搭建一个车牌图片生成API(支持蓝黄绿白黑牌)
5分钟构建车牌生成API:用PythonFlask打造高定制化图像服务 在自动化测试和图像处理领域,生成逼真的车牌图像是一个常见但容易被低估的需求。无论是用于车牌识别算法的训练数据增强,还是作为开发测试的模拟数据源,一个灵活的车牌生…...
ESPS USB MSC 调试全过程记录戎
背景 在软件开发的漫长旅途中,"构建"这个词往往让人又爱又恨。爱的是,一键点击,代码变成产品,那是程序员最迷人的时刻;恨的是,维护那一堆乱糟糟的构建脚本,简直是噩梦。 在很多项目中…...
Scalatra 健康检查与监控:构建企业级可观测性系统
Scalatra 健康检查与监控:构建企业级可观测性系统 【免费下载链接】scalatra Tiny Scala high-performance, async web framework, inspired by Sinatra 项目地址: https://gitcode.com/gh_mirrors/sc/scalatra Scalatra 作为一款轻量级高性能的 Scala Web 框…...
从办公室到车间:给IT网管的Profinet入门避坑指南(含VLAN与安全配置)
从办公室到车间:IT工程师的Profinet工业网络融合实战手册 当IT工程师第一次踏入嘈杂的工厂车间,面对那些闪烁着信号灯的PLC和伺服驱动器时,往往会感到一丝无所适从。这就像一位习惯在城市道路驾驶的司机,突然被要求操作一架喷气式…...
别再只写静态页面了!鸿蒙Next通讯录开发中,SQLite数据库的增删改查实战避坑指南
鸿蒙Next通讯录开发实战:SQLite数据库操作与UI联动的深度解析 第一次在鸿蒙Next上尝试把通讯录UI和数据库绑定时,我盯着那个空荡荡的List组件发呆了半小时——明明数据已经插入成功了,为什么界面就是不刷新?这个问题困扰了无数刚接…...
告别迷茫!新手如何从RTKLIB命令行程序入手,快速理解GNSS解算全流程
从命令行程序切入:RTKLIB新手实战指南 1. 为什么从命令行程序开始学习RTKLIB? 当你第一次打开RTKLIB的源码目录,面对数十万行代码和复杂的界面程序,很容易陷入"从哪开始"的困惑。作为过来人,我强烈建议从命令…...
类型声明不再“形同虚设”:PHP 8.9运行时类型验证增强如何让CI失败率下降67%?
第一章:PHP 8.9类型系统增强的演进背景与核心价值PHP 类型系统自 PHP 7 引入标量类型声明和返回类型以来,持续向静态可分析、运行时安全、开发者友好的方向演进。PHP 8.9 并非官方已发布的版本(截至 2024 年,PHP 最新稳定版为 8.3…...
百度地图打印地点经纬度信息
百度地图将地址解析结果显示在地图上,并调整地图视野,可以打印地点经纬度信息,添加覆盖物。<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" c…...
