新160个crackme - 050-daxxor

运行分析

  • 需要破解Name和Serial

PE分析

  • C++程序,32位,无壳

静态分析&动态调试

  • ida找到关键字符串,双击进入函数

  • 通过静态分析发现:
  • 1、Name通过计算得到Name1
  • 2、对Name1第3、5、6分别插入byte_401290、byte_401290、word_401292,得到Name2
  • 3、双击byte_401290,发现值为0x2D;双击word_401292,发现值为0x647861
  • 4、Name2与Serial比较,相等则返回成功

  • C++函数补充知识点:
  • std::string::operator=(a,b) // 字符串a = 字符串b
  • std::string::string(str) // 设置字符串
  • std::string::insert(str,5,str1) // 在str的第5位插入str1

算法分析

python 复制代码
Name = 'concealbear'
Name1 = [ord(i)for i in Name]
byte_401290 = 0x2D
word_401292 = [0x64,0x78,0x61]

# 对Name进行计算,得到Name1
for i in range(len(Name)):
    Name1[i] = Name1[i] + len(Name1) - 4
    Name1[i] = Name1[i] - len(Name1) - 2
    Name1[i] += 2

# 对Name1进入插入操作
Name1.insert(3,byte_401290)
Name1.insert(5,byte_401290)
Name1.insert(6,word_401292[0])
Name1.insert(6,word_401292[1])
Name1.insert(6,word_401292[2])

Serial = "".join([chr(i)for i in Name1])

print(Name + '的Serial为:\n' + Serial)


  • 验证成功
相关推荐
fie88893 小时前
NSCT(非下采样轮廓波变换)的分解和重建程序
算法
晨晖23 小时前
单链表逆转,c语言
c语言·数据结构·算法
im_AMBER5 小时前
Leetcode 78 识别数组中的最大异常值 | 镜像对之间最小绝对距离
笔记·学习·算法·leetcode
听*雨声5 小时前
03_软考_网络安全
安全·web安全
鼾声鼾语5 小时前
matlab的ros2发布的消息,局域网内其他设备收不到情况吗?但是matlab可以订阅其他局域网的ros2发布的消息(问题总结)
开发语言·人工智能·深度学习·算法·matlab·isaaclab
LYFlied6 小时前
【每日算法】LeetCode 25. K 个一组翻转链表
算法·leetcode·链表
Swizard6 小时前
别再迷信“准确率”了!一文读懂 AI 图像分割的黄金标尺 —— Dice 系数
python·算法·训练
s09071366 小时前
紧凑型3D成像声纳实现路径
算法·3d·声呐·前视多波束
可爱的小小小狼6 小时前
算法:二叉树遍历
算法
d111111111d7 小时前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法