010Editor(v8.0.1最新版)逆向_算法分析及注册机编写(附可用key和源码)

匿名 (未验证) 提交于 2019-12-03 00:22:01

010Editor(v8.0.1)逆向分析

0x0软件简介

010Editor是一款采用QT界面库编写的,兼容多操作系统的十六进制编辑软件.功能强大,简单易用.

0x1逆向环境及工具

系统环境:Window 7 32bit

使用工具:OllyDbg,IDA

本次测试版本为官方最新版:

Name:010 Editor for Windows 32-Bit
Version: 8.0.1, Windows 10/8/7/Vista/XP/2000

File Size: 14.2 MB


0x2主要算法简述

key的算法可能是有多种,其中第一种有判断中间字符为0x9C的为3个"-"分割,第二种判断0xAC的为4个"-"分割
这里只简要说一下第一种
假设key由key0~key7组成,每个代表两个字符
那么key3==0x9C
key4==(byte)Name加密Result[0]
key5==(byte)Name加密Result[1]
key6==(byte)Name加密Result[2]
key7==(byte)Name加密Result[3]
(((key0^key6) ^ 0x18) + 0x3D) ^ 0xA7 != 0;(0x18B)
(((((key2^key5)+(key1^key7*0x100))^0x7892)+0x4D30)^0x3421)/0xB == Quotient(整除0xB的商,必须小于0x3E8)
附一组可用key
Name:Hades

Password:6DFE-9C9C-7271-9A65

0x3主要逻辑逆向

使用OD和IDA动态调试和静态分析结合.分析如下

关键的两个算法函数(IDA中可用字符串引用定位,OD中可下断password错误的创建窗口一点点的找到)


在OD中下断在两个函数处

(通过计算偏移可以得到,也可以使用栈回溯办法定位到)


其中sub_409C9B函数中调用了sub_40A826函数.其中判断sub_40A826函数返回值为2D才为注册成功跳转

sub_409C9B函数中调用sub_40A826函数并对比其返回值是0x2D还是其他错误值


sub_40A826函数中的转换与算法

Name转换为Byte数组


输入的Name和Password(看到后边有判断9C的地方,特意把中间key改成了9C)


判断序列号某一组是不是9C


部分key加密的部分


计算序列号第1个与第7个的结果,函数


判断整除0xB的函数


加密Name,然后对比其中的几位序列号


加密Name的CALL 010Editor.01372E50函数的过程.


OD中动态调试其Name加密过程,得知0x3DD4148处是一个加密key用到的加密秘钥数组


整个加密key数组如下:


sub_40A826函数赋值并返回0x2D


sub_409C9B函数返回0xDB后表示成功:


另:继续使用的跳转:

这两处关键跳转,更改这两处跳转可以继续使用软件



完成注册机的编写

注册机程序源码:


测试注册效果


PS:010Editor也有简单的网络验证的,key可能过段时间不能用了,就是被检测到了,过掉网络验证也很简单,不在具体写了.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!