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

逆向入门(39、40)程序逆向篇-DaNiEl-RJ.1、genocide1

0x01 DaNiEl-RJ.1

在这里插入图片描述
有个说明教你怎么玩,然后exeinfo看了下是delphi,所以先去ida里面导好了map
在这里插入图片描述
od里面,查关键字看,定位到关键代码
在这里插入图片描述
已经非常有经验了,就是比较eaxedx的值,其中eax是输入的字符串, edx是通过用户名计算出来的
在这里插入图片描述
往上追了下,发现一个循环,就是算法了,这个也很简单,就是将用户名的ascii5,可以写注册机了

#include <iostream>
#include <string>int main() {std::string username;printf("用户名: ");std::getline(std::cin, username);int userLen = username.length();char new_name[256] = {0};for (int i = 0; i < userLen; i++) {new_name[i] = username[i] + 5;}printf("key: %s", new_name);return 0;
}

在这里插入图片描述
搞定
在这里插入图片描述

0x02 genocide1

这个有upx的壳,先脱掉再看
在这里插入图片描述
缺少一个Reg.dat文件,给他补上,重启程序后,然后搜索字符串
在这里插入图片描述
定位到关键代码处,发现这里只是一个函数开头
在这里插入图片描述
通过引用查看上一层函数地址
在这里插入图片描述
找到了跳转处,应该是点击后跳转到刚刚的函数
在这里插入图片描述
尝试在这里下断,但是改的时候并不断
在这里插入图片描述
因为ok只会在全部输入正确的时候才会亮,所以得继续往下走编辑框的函数
在这里插入图片描述
发现这里有几个编辑框的函数,按回车跟一下
在这里插入图片描述
这四个框都会进同一个函数,大概就是计算函数,继续追
在这里插入图片描述
这里有一个switch...case,先动态追着看看
在这里插入图片描述
到这个地方了,继续跟这个call
在这里插入图片描述
先取用户名的值进行取商,接着进入下一断循环
在这里插入图片描述
其余就是判断了,这里跟了一下地址发现了两组数据
在这里插入图片描述
上面一组数据是根据用户名计算的,下面是自己填入的,尝试输入一下
在这里插入图片描述
这里的ok按钮果然亮起来了,根据上述可以写出注册机

#include <iostream>
#include <string>int main() {std::string username;printf("用户名: ");std::getline(std::cin, username);int userLen = username.length();if (userLen <= 4) {printf("用户名长度不小于5");return 1;}printf("key: ");for (int i = 0; i < userLen; i++) {if (i == 1) continue;int result = username[i] / 10;if (result > 9) result /= 10;printf("%d", result);}return 0;
}

在这里插入图片描述
搞定
在这里插入图片描述

最近事情好多,逆向大业进度缓慢啊

http://www.dtcms.com/a/282575.html

相关文章:

  • 基于SSE传输的MCP服务器实现
  • LVS集群实践
  • 使用CodeQL挖掘Spring中的大量赋值漏洞
  • 行为模式-策略模式
  • 华大北斗TAU1201-1216A00高精度双频GNSS定位模块 自动驾驶专用
  • AWS IAM 最佳安全实践通用指南
  • 从 “洗澡难” 到 “洗得爽”:便携智能洗浴机如何重塑生活?
  • 微服务架构升级:从Dubbo到SpringCloud的技术演进
  • 浏览器自动化方案
  • 创客匠人解析:系统化工具如何重构知识变现效率
  • 在 kubernetes 上安装 jenkins
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十九课——图像拉普拉斯金字塔的FPGA实现
  • Image 和 IMU 时间戳同步
  • 事务~~~
  • JavaScript进阶篇——第五章 对象成员管理与数组遍历优化
  • 密码喷洒复现
  • Thymeleaf 基础语法与标准表达式详解
  • 如何区分Bug是前端问题还是后端问题?
  • LeetCode经典题解:141、判断链表是否有环
  • 【LeetCode】链表相关算法题
  • Node.js Process Events 深入全面讲解
  • 1.3 vue响应式对象
  • FATFS文件系统原理及其移植详解
  • PyTorch 损失函数详解:从理论到实践
  • 嵌入式学习-PyTorch(5)-day22
  • 【深度学习基础】PyTorch中model.eval()与with torch.no_grad()以及detach的区别与联系?
  • Vue 结合 Zabbix API 获取服务器 CPU、内存、GPU 等数据
  • 数据结构自学Day8: 堆的排序以及TopK问题
  • 前端Vue中,如何实现父组件打开子组件窗口等待子组件窗口关闭后继续执行父组件逻辑
  • DeepSeek(18):SpringAI+DeepSeek大模型应用开发之会话日志