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

南邮-软件安全--第一次实验报告-非爆破计算校验值

软件安全第一次实验报告,切勿直接搬运(改改再交)

实验要求

1、逆向分析目标程序运行过程,找到程序的关键校验点;

2、以非爆破的方式正确计算crackme的校验值;

内容

使用x32dbg对文件进行分析

打开文件后查找字符串,可以看到关键字符串“Serial is Correct!!!

记录该地址0040143D

设置地址0040143D为断点

向上查看代码,发现有很多个跳转指令,并且跳转的地址相同,则这些跳转应该是判断serial是否正确的指令

共有9个跳转

接下来依次分析这9个跳转

1.

cmp eax,8

判断字符串长度,字符串长度应为8

2.

cmp byte ptr ss:[esp+9],2D

寄存器ss:[esp+9]中的字符为2D表示的字符‘-’

3.

movsx ecx,byte ptr ss:[esp+4]
shl ecx,1
cmp ecx,64

将ss:[esp+4]中的值逻辑左移1位后,应该和64相等

计算得到对应32H

则ss:[esp+4]中的字符为‘2’

4.

mov al,byte ptr ss:[esp+B]
test al,al

ss:[esp+B]中的值进行与运算

得ss:[esp+B]中的字符为‘0’

5.

cmp byte ptr ss:[esp+8],2B

将ss:[esp+8]中的值与2B进行比较,不等于则跳转

则ss:[esp+8]中的字符为2BH对应的‘+’

6.

movsx edx,byte ptr ss:[esp+5]
add edx,A
cmp edx,44

将ss:[esp+5]中的值+A,并与44比较

计算得到3AH

则ss:[esp+5]中的字符为3AH对应的:

7.

movsx eax,byte ptr ss:[esp+7]
sub eax,2E
将ptr ss:[esp+7]中的值减去2E,不等于0则跳转

则ptr ss:[esp+7]中的字符为2EH对应的‘.’

8.

cmp byte ptr ss:[esp+A],4D

将ss:[esp+A]中的值与4D比较,不等则跳转

则ss:[esp+A]中的字符为4DH对应的‘M’

9.

movsx ecx,byte ptr ss:[esp+6]
add ecx,A
cmp ecx,33

将ss:[esp+6]中的值+A,并与33比较,不等则跳转

计算得到29H

则ss:[esp+6]中的字符为29H对应的‘)’

根据刚才对9个跳转的分析可以得到

ss:[esp+4]中的字符为‘2’

ss:[esp+5]中的字符为3AH对应的’:’

ss:[esp+6]中的字符为29H对应的‘)’

ss:[esp+7]中的字符为2E对应的‘.’

ss:[esp+8]中的字符为2B对应的‘+’

ss:[esp+9]中的字符为2D表示的字符‘-’

ss:[esp+A]中的字符为4D对应的‘M’

ss:[esp+B]中的字符为‘0’

综上可得serial为2:).+-M0

将2:).+-M0输入测试

得到

说明推断正确

crackme的校验值为2:).+-M0


http://www.mrgr.cn/news/49214.html

相关文章:

  • 2024最新网络安全自学路线,内容涵盖3-5年技能提升
  • LeetCode 每日一题 2024/10/7-2024/10/13
  • AWD入门
  • Redis 集群入门指南
  • 基于青蒿素优化算法(Artemisinin Optimization Algorithm, AOA)的多无人机协同三维路径规划(提供MATLAB代码)
  • Panasonic Programming Contest 2024(AtCoder Beginner Contest 375)题解
  • mysql隐藏索引
  • ARM/Linux嵌入式面经(四三):重庆移动面经
  • 乐队相关和经济学供给
  • 【设计模式】揭秘Spring框架:设计模式如何驱动代码重用与扩展性的最佳实践
  • MarsCode刷题--找单独的数
  • YOLO11改进 | 注意力机制 | 用于增强小目标感受野的RFEM
  • xss-labs靶场第九关测试报告
  • 在 Android 手机上从SD 卡恢复数据的 6 个有效应用程序
  • JAVA学习-练习试用Java实现“进制转换”
  • 视频文案提取
  • 谷歌浏览器 文件下载提示网络错误
  • JDK下载与IDEA环境配置
  • php 生成随机数
  • python实现ppt转pdf