[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)是新一代信息通信技术与工业经济深度融合的新型基础设施、应用模式和工业生态,通过对人、机、物、系统等的全面连接,构建起覆盖全产业链、全价值链的全新制造和服务…...
Horizon UAG网关配置避坑指南:从OVF导入到外网访问,一次搞定所有疑难杂症
Horizon UAG网关配置实战:从部署到外网访问的深度排错手册 每次看到Horizon UAG网关服务器状态变红,IT运维人员的心跳都会跟着加速。这不是简单的配置错误,而是整个虚拟桌面基础设施对外服务能力的警报。本文将带您深入UAG配置的核心痛点&…...
[Linux][虚拟串口]x一个特殊的字节辟
简介 langchain专门用于构建LLM大语言模型,其中提供了大量的prompt模板,和组件,通过chain(链)的方式将流程连接起来,操作简单,开发便捷。 环境配置 安装langchain框架 pip install langchain langchain-community 其中…...
深度神经网络训练全攻略:从梯度消失到Adam优化器,一篇搞懂所有技巧
训练深度神经网络就像调教一匹烈马——既要选对方向(优化器),又要控制好缰绳(学习率),还得给它戴好马鞍(正则化)。本文将带你系统掌握这些核心技巧,从此告别“训练不收敛…...
猫抓插件:智能资源嗅探引擎与无缝媒体管理体验
猫抓插件:智能资源嗅探引擎与无缝媒体管理体验 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化内容爆炸的时代,用户…...
[具身智能-283]:从某种意义上看,卷积核也是一种平面空间注意力机制,有两层含义:一个卷积核只关注某一特征,一次移动关注卷积核对应的局部区域。
这个观点实际上是从信息筛选和资源分配的角度,重新解构了卷积操作的物理意义。将卷积核视为一种“平面空间注意力机制”,不仅逻辑自洽,而且精准地揭示了CNN处理信息的两个核心维度:特征维度的专一性和空间维度的局部性。我们可以顺…...
PD 2.0 与 PD 3.0 深度解析:从固定档位到 PPS 精细化供电的技术演进
USB Power Delivery(USB PD)是USB-IF制定的通用快充与供电协议,依托Type-C接口实现高功率、多功能电力传输,已成为手机、笔记本、平板、外设等设备的主流供电标准。PD 2.0奠定高功率快充基础,PD 3.0则以PPS可编程电源为…...
45-在线海鲜商城系统
文档地址 技术栈:springBootVueMysqlMyBatis 用户端: 1.首页:轮播图展示、商品信息展示、秒杀商品展示、商城资讯展示 2.商品信息:展示商品列表,可按分类及名称、品牌、价格区间进行搜索查看,点击进入商品详情页可加入购物车或购买 3.秒杀…...
Node Modules Inspector性能优化实战:大规模依赖树的可视化处理
Node Modules Inspector性能优化实战:大规模依赖树的可视化处理 【免费下载链接】node-modules-inspector Interactive UI for local node modules inspection 项目地址: https://gitcode.com/gh_mirrors/no/node-modules-inspector Node.js 项目的依赖管理一…...
Zotero与OneDrive云存储附件的高效整合方案(Zotero+OneDrive)
1. 为什么选择ZoteroOneDrive组合管理文献附件 作为一名长期与学术文献打交道的科研工作者,我深知文献管理工具的重要性。Zotero作为一款开源文献管理软件,其强大的文献收集、整理和引用功能深受研究者喜爱。但在实际使用中,文献附件的存储问…...
PINCE代码分析功能:反汇编与参考调用查找的终极指南
PINCE代码分析功能:反汇编与参考调用查找的终极指南 【免费下载链接】PINCE Reverse engineering tool for linux games 项目地址: https://gitcode.com/gh_mirrors/pi/PINCE PINCE是一款专为Linux游戏设计的逆向工程工具,集成了强大的代码分析功…...
