当前位置: 首页 > news >正文

逆向入门(14、15)程序逆向篇-Brad Soblesky.1-fty_crkme3

0x01 Brad Soblesky.1

这个就比较简单,打开后直接就是注册界面
在这里插入图片描述
OD找到对应字符串
在这里插入图片描述
下个断点就读到了字符串<BrD-SoB>,搞定
在这里插入图片描述

0x02 fty_crkme3

这个有壳,先用upx脱壳,然后就可以找到关键代码信息了
在这里插入图片描述
跳转到关键代码处
在这里插入图片描述
发现这里是由esiedi比较的结果,edi由上面的数加也就是计算上来的,先追一下esi
在这里插入图片描述
esi由上面的call计算而来
在这里插入图片描述
这个call的作用经由上面一步步的下断调试可以发现经过了很多次调用,最明显的第一次作用就是十进制的数转为十六进制,这里为了方便查看函数,可以进这个call,然后在首行给他右键添加一个标签,比如我这里起个标签名叫dec2hex,当标签起好以后再次看之前的内容就变成了下面这个样子,这样就会更加容易分析
在这里插入图片描述
这里是最近的一个esi取值,但是这个地址并没有断下,说明还要继续往上找
在这里插入图片描述
正好就是这个地址这里进行的传值,那这个eax又是由什么东西转成的十六进制呢?接着追

在这里插入图片描述
这里我手动调整了下注释,这样就看得比较清楚了,这里看着很复杂,但是实际上最后追出来的结果就是:如果这是一个9位数的序列的话,第2位和第6位为要为-符号,其他的必须要为数字,比如12-456-89,然后将-符号去掉,得到一个7位数,将这个数转成十六进制后存储在esi中。接下来再接着分析edi是怎么来的了。
在这里插入图片描述
通过断点调试发现以上规律,即对每一位进行取值后,都进行这个整数的长度次的幂运算,现在长度为7即,每位数都进行7次方的处理,然后加所有的结果进行相加,最后要和这个数本身相同。那这样就可以写出注册机了

#include <stdio.h>int main() {int nums = 7;// 1. 预计算0-9的nums次幂(避免重复计算)int powers[10];for (int digit = 0; digit < 10; digit++) {int power = 1;for (int exp = 0; exp < nums; exp++) {power *= digit;}powers[digit] = power;}// 2. 精确计算范围(避免浮点数误差)int start_num = 1;for (int i = 1; i < nums; i++) {start_num *= 10;}int end_num = start_num * 10;// 3. 优化数字分解(避免使用字符串转换)for (int i = start_num; i < end_num; i++) {int n = i;int sum = 0;// 直接分解数字的每一位while (n > 0) {int digit = n % 10;  // 获取最后一位数字sum += powers[digit]; // 使用预计算结果n /= 10;             // 移除最后一位}if (sum == i) {// 4. 将数字格式化为 xx-xxx-xx 样式int part1 = i / 100000;      // 前两位 (除以100000)int part2 = (i / 100) % 1000; // 中间三位 (除以100后取后三位)int part3 = i % 100;         // 后两位 (模100)// 使用 %02d 确保两位数格式,不足补零printf("%02d-%03d-%02d\n", part1, part2, part3);break; // 找到第一个符合条件的数就退出}}return 0;
}

自己先写了一个,但是用的循环及使用pow函数的方法,效率比较低,让ai优化了下,香!
在这里插入图片描述
搞定
在这里插入图片描述
后来查了下资料,还挺有意思的,只能说编程知识真的少,又进步了!

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数水仙花数又称阿姆斯特朗数。
三位的水仙花数共有4个:153,370,371,407;
四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙数共有3个:24678050,24678051,88593477;
九位的九九重阳数共有4个: 146511208,472335975,534494836,912985153;
十位的自幂数只有1个:4679307774
http://www.lqws.cn/news/466165.html

相关文章:

  • AWS-SAA 第二部份:安全性和权限管理
  • 操作系统进程与线程核心知识全览
  • Softhub软件下载站实战开发(六):软件配置面板实现
  • LeetCode 1432.改变一个整数能得到的最大差值:暴力模拟/贪心
  • 企业公用电脑登录安全管控的终极方案:ASP操作系统安全登录管控方案
  • c++ 虚继承
  • 【软考高级系统架构论文】论云上自动化运维及其应用
  • 嵌入式开发之嵌入式系统架构如何搭建?
  • Spring与SLF4J/Logback日志框架深度解析:从源码看日志系统设计
  • elasticsearch安装ik分词器
  • 3.1 Android NDK交叉编译FFmpeg
  • 领域驱动设计(DDD)【3】之事件风暴
  • React 重识
  • Seata模式
  • Spring AOP全面详讲
  • 从 Elasticsearch 集群中移除一个节点
  • `customRef` 在实战中的使用:防抖、计算属性缓存和异步数据获取
  • 腾讯云IM即时通讯:开启实时通信新时代
  • nuxt3 + vue3 分片上传组件全解析(支持大文件+断点续传)
  • RabbitMQ 的工作流程
  • 【unitrix】 3.6 类型级数转基础类型(from.rs)
  • springboot通过独立事务管理器实现资源隔离与精准控制​
  • HTTPS的加密方式介绍
  • MinIO社区版文件预览失效?一招解决
  • 【Fargo】mediasoup发送2:码率分配、传输基类设计及WebRtcTransport原理
  • React 组件通信
  • C++ 移动构造:提升性能的利器
  • docker执行yum报错Could not resolve host: mirrorlist.centos.org
  • Snapchat矩阵运营新策略:亚矩阵云手机打造高效社交网络
  • C++:动态链接库的编写,__declspec 用法详解