逆向破解之160个CrackMe —— 013
CrackMe —— 013
160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序
CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
来源 <-点击查看
| 编号 | 作者 | 保护方式 |
| 013 | badboy | Name/Serial,Serial(VB5) |
工具
x32dbg
VB Decompiler Pro
peid
开始破解之旅
ON.1
首先使用x32dbg打开程序搜索字符串,发现只有四个字符串,没有我们想要的,难道被加密了?

下一步我们用pedi打开程序查看是否加壳了,发现并没有加任何壳


ON.2
我们使用VB Decompiler Pro打开013号程序在左侧栏内点击Code -> Form1 下拉,发现其中有多个Click函数

我们点击第一个Click(Combo1_Click)

仔细看一下我们找到了秘钥生成的代码,红色框内
var 88 = 当前天数*23+当前月数*2+当前年份*1900
var 1d0 = (var 88 + var 88) + 当前天数14*1905 +当前天数14*1905
有人会说为什么乘以1900
因为VB里面Year(3) => 1900,Year(2020) =>1905
下面是Python代码
import datetime
now = datetime.datetime.now()
var_88 = now.day * 22 + now.month * 1 + now.year * 1900
var_1d0 = var_88 * 2 + 13 * 1905 * 2
我们点击CrackMe 1.0在输入框内输入答案点击Try,bingo ~ 答案正确

接下来我们来看CrackMe 2.0
我们点击第二个Click(Combo2_Click)

将其转换为Python代码为
var_94 = ''
name = 'lonenysky'
var_90 = 0
var_a8 = 1
for i in range(3, len(name)):
var_90 = var_90 + (ord(name[i]) * int(var_94[var_a8 * 3 - 1:var_a8 * 3 - 1 + 3]))
var_a8 += 1
if var_a8 + 1 >= 39:
var_a8 = 0
var_178 = 0
var_a8 = 1
for i in range(3, len(name)):
var_1cc = ord(name[i]) * ord(name[i - 1]) * int(var_94[var_a8 * 2 - 1:var_a8 * 2 - 1 + 2])
var_178 = var_178 + var_1cc
var_a8 += 1
if var_a8 + 1 >= 39:
var_a8 = 0
print(str(var_90) + '-' + str(var_178))
输入Name =>lonenysky Serial => 145533-911038 点击按钮Try ,提示答案正确

逆向破解之160个CrackMe —— 013的更多相关文章
- 逆向破解之160个CrackMe —— 001
CrackMe —— 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 002-003
CrackMe —— 002 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 004-005
CrackMe —— 004 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 014
CrackMe —— 014 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 016
CrackMe —— 016 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 017
CrackMe —— 017 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 018
CrackMe —— 018 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 025
CrackMe —— 025 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 026
CrackMe —— 026 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
随机推荐
- ES6中的解构
数组中的解构: 输出 : 白板 幺鸡 二条 对象的解构: 输出: 老王 12 数组的结构用[];对象的解构用{}:一定要区分它是数组还是解构. 区分方法:看 它是在赋值还是在拿值,等号左边,都为解构, ...
- Kubernetes1.15 部署 coredns
coredns.yaml文件如下所示 # __MACHINE_GENERATED_WARNING__ apiVersion: v1 kind: ServiceAccount metadata: nam ...
- NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load xxxx错误解决方法
在开发项目的过程中,和后端对接,我们使用是一个成熟的集成很全面的架构JHipster.后端为java spring-boot 前端ts+react,需求是有一个需要在页面里嵌套iframe的需求.然后 ...
- I/O:FileLock
FileLock: /* 文件锁定要么是独占的,要么是共享的.共享锁定可阻止其他并发运行的程序获取重叠的 独占锁定,但是允许该程序获取重叠的共享锁定.独占锁定则阻止其他程序获取任一类型的重叠锁 定.一 ...
- YOLO V1损失函数理解
YOLO V1损失函数理解: 首先是理论部分,YOLO网络的实现这里就不赘述,这里主要解析YOLO损失函数这一部分. 损失函数分为三个部分: 代表cell中含有真实物体的中心. pr(object) ...
- 《深入理解 Java 内存模型》读书笔记
{ int res=0; while(L!=NULL){ res++; L=L->Next; } return res; }
- ThinkPHP5.0 模板
ThinkPHP5.0 模板 模板渲染 默认的视图目录是默认的模块下的view目录 渲染规则:调用 \think\View 类fetch方法 // [模板文件目录]/当前控制器名(小写+下划线)/当前 ...
- 2019牛客暑期多校训练营(第四场)J-free
>传送门< 题意:给你n个城市,m条道路,经过每一条要花费这条路的代价,现给你k个机会,使得最多k条路的代价为0,问从起点s到终点t花费的最少代价 思路:分层图最短路经典裸题 方法一 Co ...
- 图解Redis之数据结构篇——整数集合
前言 整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis i ...