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

新160个CrackMe039-eKH.1、040-DaNiEl-RJ.1、041-genocide1逆向分析

039

无壳

暴力破解

找到关键跳转将其改成jmp即可获取破解版本

算法分析

先获取用户名和序列号,之后经过一个函数将函数返回值与0xBC614E(十进制数是12345678)进行对比,相等则成功

步进分析函数ekh.1.427A20

进行一个循环先是每次都获取用户输入的用户名再将它逻辑左移八位之后从一个固定字符串中取出当前用户名字符串下标对应的固定字符串中的字符,将他与逻辑左移后的数进行异或

之后将获取的字符串从十六进制转换成十进制,并且获取计算之后的字符串长度进行下一个循环,将获得的整数除0xA,求出的余数作为下标从新的系统自带的字符串中其提出相应的字符,经过n次循环之后获取正确的序列号

可以生成keygen:

username = input("Input username:").strip() sum_val = 0 a = "LANNYDIBANDINGINANAKEKHYANGNGENTOT" b = "LANNY5646521" len_a = len(a) b_len = len(b) for i, ch in enumerate(username): sum_val += ord(ch) sum_val = (sum_val << 8) & 0xFFFFFFFF index = a[i] if i < len_a else a[i % len_a] sum_val = (sum_val | ord(index)) & 0xFFFFFFFF if sum_val & 0x80000000: sum_val = (0x100000000 - sum_val) & 0xFFFFFFFF sum_val = (sum_val ^ 0x12345678) & 0xFFFFFFFF print(f"sum: {sum_val}") print(f"Hex: 0x{sum_val:08X}") index = '' temp = sum_val while temp > 0: idx = temp % 0xA idx = idx % b_len char = b[idx] index += char temp = temp // 0xA print(f"index: {index}")

040

无壳

直接点开程序没办法进入到到验证页面,要先点下面的about关闭弹窗之后才可以继续点击注册页面

暴力破解

发现关键跳转,将其给nop掉即可获取破解版本

算法分析

经过一个循环,将用户名的每一个字符ASCII码值+5再转换成字符,拼接起来,生成的新的字符串就是生成的序列号

可以生成keygen:

username=input("Input username:").strip() serial='' for ch in username: char=chr(ord(ch)+5) serial+=char print(f"Serial:{serial}")

041

UPX壳

脱壳

直接点开程序发现只有一个弹窗,将该弹窗关掉之后程序自动退出

解开程序

从这里看到程序会验证是否存在Reg.dat文件,如果存在就不会出现弹窗

将该跳转给改成jmp即可解开程序,让程序成功正常运行

输入序列号和用户名发现没办法点击确认按钮,初步推测是在序列号部分实时验证是否正确,来决定确认按钮是否可以点击

算法分析

先用PE Explorer来分析整个程序,可以观察到TForm2是关于输入用户名和序列号的那个窗体,TForm3是关于about窗体

TForm2下的Edit1Change、Edit2Change和下面的3,4分别对应了注册窗体的四个序列号,在IDA中可以找到相关函数的地址分别是437E70、437E7C、437E88、437E94

在相关位置下断点

进入函数发现有四个跳转,每个跳转都跳转到调用函数的位置,期间没有进行运算,继续进入函数,发现函数437BD8内有运算,在该函数内下断点,方便后续动态调试

运行打开注册窗口,发现在用户名和序列号输入之前就断下了,点了四次运行才成功看到注册窗口,输入用户名之后调试序列号发现没有变化,需要继续点击运行,直到前三位序列号都正常显示,调试第四位序列号时不运行,开始步过观察,发现对输入的第1、3、4、5位对0xA求商存到指定位置

之后又经过了一个循环,检验获取的每一位序列号是否大于9,如果是,则重新对0xA取商覆盖原来的值

接下来将通过用户名获取的序列号与用户输入的序列号进行对比,不相等就跳转失败

可以得到keygen:

username=input("Input username:").strip() serial='' for i,ch in enumerate(username): if i==1: continue if i==5: break temp=ord(ch)//0xA while temp>=0xA: temp=temp//0xA serial+=chr(temp+48) print(f"Serial:{serial}")

暴力破解

根据前面的分析可以得出,将地址处的跳转给nop掉即可获得破解版本程序

http://www.jsqmd.com/news/1093889/

相关文章:

  • AI 赋能训练推理平台 Java + SpringBoot MySQL Maven EasyAI FFmpeg支持人脸识别、门禁、人员入出检测、人员跌倒检测等功能 基于深度学习模型,可自定义训练数据
  • VSCode插件变黑客后门!GitHub 3800个仓库被攻破
  • 湖北工业大学《线性代数》期末试卷及答案2016-2024学年PDF
  • 【从0到1构建一个ClaudeAgent】协作-团队协议
  • 2026年智泊第23期AGI大模型应用开发实践班v6.0,智泊-最新AGI大模型全栈课12期|2025年9月
  • 提示词三要素:角色锚定、任务边界与输出契约
  • 文科生怎么转型科创赛道-硕士进修选择与交大MTT培养路径详解
  • 基于Appium与Python的拼多多百亿补贴商品价格自动化监控方案
  • 老板周五17:30丢了个网页让我“照着做一版“,这次我只用了3分钟
  • 2026 电子轴凹版印刷机方案制作逻辑,专业生产厂家国伟机械定制服务解读
  • 万维盈创 CCEP 持证扬尘(噪声)在线监测仪|建筑工地、道路扬尘、工业无组织排放合规监测优选设备
  • 企业微信双动作更新:5.0.9新版+企微AI大圆来了
  • CRMEB多商户系统(PHP)v4.1更新预告:年卡/月卡/多次体验卡,服务行业要锁客,就用它!
  • Python 字符串数组元素替换全攻略
  • GitHub导航菜单全解析:涵盖平台功能、解决方案、资源,探讨排除敏感文件方法
  • TI BOOSTXL-ULN2003驱动板实战:3/8引脚模式驱动步进电机与外围设备
  • IvorySQL 深度解析:融合 PostgreSQL 生态与 Oracle 兼容性的革新之路
  • 企业网络管理综合实训:CentOS7 纯终端完整部署 OpenStack IaaS 云平台(Keystone/Neutron/Cinder/Swift 全组件 + Dashboard 实操)
  • 北京蓝伟博达曾工实操:联想拯救者高负载蓝屏重启 显卡虚焊故障讲解
  • 虚拟化技术中的容器编排资源隔离与性能优化
  • 外文论文辅导哪个好?外文论文辅导平台测评
  • 2026年地产新营销服务商选型指南:从迷茫到笃定,谁在为房企解决真问题?
  • UDP Socket 回声服务代码全疑点深度手册:结构体本质・bind 内核逻辑・收发设计全拆解
  • NR CSI学习笔记【1】PMI的理解
  • 瑞芯微RV1126B开发板(EASY-EAI-PI2) 蓝牙
  • .text 段的内存和.rodata的内存区别
  • 乌鲁木齐公考机构口碑红黑榜:学员真实评价大公开(2026选择指南)
  • 用 Claude API 把零散信息整理成能落地的任务清单
  • 如何在Mac上配置OBS虚拟摄像头:终极完整指南
  • 2026年一键生成论文工具推荐