适合破解新手的160个crackme练手之03
适合破解新手的160个crackme练手之03
拿到exe,首先用peid查壳吧
检测发现没壳,而且是用vb写的,那么来运行一下先,运行过程中发现程序会先在下面这个画面等待一会才会到达Crackme界面
然后界面跟第二个Crackme是差不多的,唯一的区别就是叫我们要先kill the Nag 再去找key,那么Nag应该就是运行程序时等待的那个界面
那么首先来kill the Nag吧,由于之前没弄过这种,在网上学习了师傅们的wp,发现一款反编译vb的工具:VBExplorer (可以到看雪工具下载:https://tools.pediy.com/windows/decompilers.htm),用VBExplorer打开exe,选到CMSplash,然后看到有个Timer函数,在属性那里选择Timer1 timer观察到有个变量Interval的Timeer1值是 7000,我们知道Interval是间隔的意思,所以我们可以大胆猜测这个就是表示开头Nag运行的时间间隔
那么我们只需要修改这个7000为0就可以让Nag不显示了
修改后再运行可以发现Nag已经被我们Kill掉了
接下来上od分析注册机算法,跟上一篇一样查找字符串,观察汇编语言
可以看到这里的逻辑跟Crackme-02有点类似,都是用test si,si 和je语句来判断Serial是否正确
再往上看点,可以发现这里出现了我们输入的Serial和正确的Serial,推测前面应该会有生成正确的Serial算法,虽然已经可以知道注册码了,但是为了深入研究注册码生成的算法,继续调试
在函数开头下个断点,一步一步慢慢调试
调试到这里,发现对Name进行了一系列操作,用len(name) * 0x15b38 + Name第一个字符的ascii码得到一个十六进制数,再调用算法1
而算法1的核心函数在这里,算法1的主要作用就是将16进制数变成十进制,比如0xa变成10
总结上面函数的作用就是len(name) * 0x15b38 + Name 生成一个十进制数
然后对刚刚的十进制数+2 再*3然后-2
最后再+15
最后运算出来的结果就是我们最终的Serial
根据算法写注册机脚本
name = "123"
a = len(name) * 0x15b38
a += ord(name[0:1])
a += 2
a = a*3-2 + 15
Serial = a
print "Serial: ",Serial
成功了
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
- keras和tensorflow使用fit_generator 批次训练操作
- php-fpm中max_children的配置
- python文件读取失败怎么处理
- PHP-FPM的配置与优化讲解
- python为什么会环境变量设置不成功
- keras自动编码器实现系列之卷积自动编码器操作
- PHP数字金额转换成中文大写显示
- 详解Python多线程下的list
- Python 字符串池化的前提
- PHP抽象类基本用法示例
- keras分类模型中的输入数据与标签的维度实例
- keras的三种模型实现与区别说明
- PHP智能识别收货地址信息实例
- Keras 在fit_generator训练方式中加入图像random_crop操作