Baymax v2.7 制作内存注册机
写了一个试炼品,OD分析,点注册后来到这里:注册码为19位,我们输入假码:1111-2222-3333-4444,中断到验证函数:
00B92203 .E8 58F5FFFF CALL Test.00B91760 // 验证函数
00B92208 .83C4 0C ADD ESP, 0C// 函数返回
进入验证函数:
...
00B917CE|.68 8832BA00 PUSH Test.00BA3288 ;2018
00B917D3|.8D55 E4 LEA EDX, DWORD PTR SS:
00B917D6|.52 PUSH EDX
00B917D7|.E8 F4740000 CALL Test.00B98CD0 // 第一次明码比较,其中 为真码字符串的地址(为固定字符串 2018)
00B917DC|.83C4 08 ADD ESP, 8
00B917DF|.85C0 TEST EAX, EAX
00B917E1|.74 08 JE SHORT Test.00B917EB // 这里继续跳 验证第二部分
...
00B91849|.0FB74D FC MOVZX ECX, WORD PTR SS: ;KEY 计算用户名的HASH为第二部分
00B9184D|.0FB755 DC MOVZX EDX, WORD PTR SS: ;OUR KEY 中间 2222 字符串转HEX
00B91851|.3BCA CMP ECX, EDX // 比较真假码
00B91853|.74 05 JE SHORT Test.00B9185A ;ZF = 1 这里继续跳走后续验证
00B91855|.8B45 E0 MOV EAX, DWORD PTR SS:
1. 算法如下:
截取第一部分的比较,并修改跳转继续验证。
第 5 位为连接符,必须为‘#’
截取第二部分的比较,并继续验证。
注册码后半部分为任意值,其中第 10 位为‘-’,第 15 位为 ‘#’。
2. Byamax 的注册机设计思路是这样的:
第一步,获取注册信息;
包括可以从寄存器读取HEX或转为十进制数据,也可以从内存中读取DWORD,HEX,字符串等信息,也可以在其中添加连接字符。
第二步,显示注册信息;
当所有数据都获取完毕后,需要找一个地址来进行显示获取信息。
3. 在Baymax中的设置方法:
1> 获取 内存 中存储的前4位真码
2> 修改跳转继续执行后续验证
3> 添加连接符 '#'
4> 获取 寄存器 中保存的第二部分真码
5> 追加注册码尾部的随机值
6> 当函数返回后随意找一个执行的地址显示注册信息
7> 获取真码:
2018#0294-NISY#6666
----------------------------------------------------
补充:
信息栏的文字说明最多可显示三行,换行可使用换行符“\r\n”。设置及效果如下:
==========================
试炼品见附件(Baymax v2.7 开始支持内存注册机功能)
牛犇,新姿势,! 好帖子,谢谢分享! 校长辛苦,半夜发精品,谢谢校长的教程 好东西,简单易行
感谢分享。实用的工具 期待功能继续增强,太牛了。 感谢楼主,大白功能不断完善. 感谢新增内存注册机功能,才发现 Baymax 已经到 2.7 版了~~
感谢校长分享