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

逆向入门(22)程序逆向篇-TraceMe

界面看起来很普通
在这里插入图片描述
也没有壳,直接搜索字符串找到关键代码处
在这里插入图片描述
但是发现这些都是赋值,并没有实现跳转相关的函数。这里通过给弹窗函数下断点,追一下返回函数来找触发点。
在这里插入图片描述
再次点击check,触发断点,接着按ctrl+F9返回到函数部分
在这里插入图片描述
再往上多找几个跳转就发现了获取字符串的相关函数了。
在这里插入图片描述
从这里重新下断点接着追,可以分析出以下函数内容
在这里插入图片描述
这里跟进这个call里面看
在这里插入图片描述
这里主要是有一个地方注意,内存地址为0x405030的位置的值,需要自己跟着看一下,算法还是挺简单的。重复打开几次软件发现,这部分的值是固定的。
在这里插入图片描述
于是根据这个算法,可以计算出最后的值,然后填写的密码进行比较就可以了,写出注册机

#include <iostream>
#include <string>int main() {std::string username;printf("用户名: ");std::getline(std::cin, username);int userLen = username.length();if ( userLen < 4) {printf("用户名长度过短");return 0;}char str_00405030[8] = { 0x0c,0x0a,0x13,0x09,0x0c,0x0b,0x0a,0x08 };int eax = 0;int esi = 0;for (int ecx = 3; ecx < userLen; ecx++) {int dl = username[ecx];int bl = str_00405030[eax];esi += dl * bl;eax++;if(eax > 7)eax = 0 ;}printf("key: %d", esi);return 0;
}

在这里插入图片描述
搞定
在这里插入图片描述
其实这个程序总体代码不多,翻源码也是可以看到关键代码的,但是在复杂的程序时就没这么容易 了,所以采取了对窗口函数下断的方式,虽然麻烦了,但是方法更加通用。

http://www.xdnf.cn/news/14844.html

相关文章:

  • FPGA设计的上板调试
  • Cisco FMC events无法加载并且cpu high故障- Cisco bug
  • Grab×亚矩阵云手机:以“云端超级节点”重塑东南亚出行与数字生活生态
  • AngularJS Git 提交消息规范
  • VS Code 配置本地 Dev Container
  • (LeetCode 每日一题) 2099. 找到和最大的长度为 K 的子序列 (排序)
  • 翻译服务器
  • SpringMVC系列(七)(Restful架构风格(下))(完结篇)
  • 第一章 从零开始学习大型语言模型-搭建环境
  • Spring Cloud:微服务架构的基石与实践指南
  • 从0开始学习计算机视觉--Day04--损失函数
  • C++动态链接库之非托管封装Invoke,供C#/C++ 等编程语言使用,小白教程——C++动态链接库(一)
  • Linux系统(信号篇)信号的保存
  • 在反向代理环境下精准获取客户端真实 IP 的最佳实践
  • Vue样式绑定与条件渲染详
  • 玄机抽奖Spring Web项目
  • 【STM32 学习笔记】PWR电源控制
  • 高通手机跑AI系列之——穿衣试装算法
  • 数据结构进阶 - 第一章 绪论
  • 数据结构-第三节-树与二叉树
  • 什么是财务共享中心?一文讲清财务共享建设方案
  • Lynx vs React Native vs Flutter 全面对比:三大跨端框架实测分析
  • 人大金仓Kingbase数据库KSQL 常用命令指南
  • Python文件操作完全指南:从入门到精通
  • 广州华锐互动:技术与创意双驱动的 VR 先锋​
  • LightGBM:极速梯度提升机——结构化数据建模的终极武器
  • 柔性制造企业数字化系统建设方案(PPT)
  • LVS-NAT负载均衡群集实战:原理、部署与问题排查
  • 逆向入门(8)汇编篇-rol指令的学习
  • Boss:攻击