飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2847|回复: 8

[讨论] 一个和md5相关的软件的注册码

[复制链接]

该用户从未签到

发表于 2007-12-15 01:21:24 | 显示全部楼层 |阅读模式
这个软件会在进行我们的注册码验证的时候,调用一个叫md5.dll
如果这个dll被删除,会跳出缺少md5.dll的错误信息,证明其的确使用了md5.dll

我比较不解的是,大家不都是说md5基本上是不可逆的吗?

那我在这里请教一下大家的思路.

我有一个机器码Oooooooo(第一个字母是大写的O,其他的是o,我用这个软件在虚拟机上运行得出的机器码,觉得可能是与硬盘相关,在本机上注册码后面不全是零的)

软件随便输入直接点确定无任何反应,后来追踪发现,其必须输入16位注册码,也就是与我们字符串进行md5加密后的16位输出,暗合.

软件在计算注册码的一个call中,将我们输入的假注册码进行压缩,比如我们输入7878787878787878(字符串),其经过压缩后变成了xxxxxxxx(因为x的ascii是78)

然后调用md5.dll...(实在看不懂到底在md5里搞什么,只知道弄了一个1000多字节能堆栈,然后一通乱斌值)...

我上传一下这个md5.dll文件,那位兄弟帮我看看这个dll 到底在搞什么,只有一个导出函数.

//===============
我只是比较奇怪,他到底是如何通过机器码,计算出注册码的呢?md5不是不可逆的吗?

md5.rar

13.11 KB, 下载次数: 0, 下载积分: 飘云币 -2 枚

md5.dll

PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-12-15 01:25:09 | 显示全部楼层
此软件下载地址:
http://eastern.3322.net/download/maxjxcsetup.exe
希望那位喜欢 关于md5注册码算法的朋友,一起交流指点.

目前已经爆破,输入任何去何16位注册码都可以显示注册成功.也去掉了99次试用的限制.

但其程序的关于单据输入数量和不能月结的限制仍无法去除.

其非常有创意的使用一个函数,通过压入两个不同的参数进行程序走向的控制.
硬改那个函数中的jmp是不行的..只要强行修改其在验证注册时的压入的参数,使其相同..


QQ:30002580
PYG19周年生日快乐!

该用户从未签到

发表于 2007-12-15 11:20:06 | 显示全部楼层
不能逆推你就顺着来,用的是MD5,那么你只要找出机器码经过怎么转换后得出什么样的值,再推入MD5进行计算,
你所说的MD5.dll应该是MD5算法函数,可能没有别的作用,
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-12-15 12:00:32 | 显示全部楼层
这个程序的注册验证,包括了重启后的注册表中的注册码验证.
使用次数验证...

其非常有创意的使用了一个综合的函数,

示例函数:

//这个函数在注册模块进行调用的时候,会使用堆栈中的字符指针,要求eax 和edx指向的字符串内容相同.

验证(参数EAX,参数EDX)  {
  //最前面就是
cmp eax,edx
je  跳往注册成功,并写入注册表

....
下面是其他模块调用,由于push的参数,EAX,和EDX并不相同,前面的JE跳转就不会跳往注册成功,而进行他实际需要的操作。。。

所以如果硬改最上面的je为jne是不行的。。。会使程序其他模块调用的时候出现问题。
只能通过修改其验证模块的时候,强行的使EAX和EDX在调用这个函数之前的值就相同,这样就完成了注册。





}

但其还是200张单据数限制和月结功能限制,所以如果不找出真正的注册码,是很难完美破解的。

[ 本帖最后由 梦晰 于 2007-12-15 12:02 编辑 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2007-12-15 12:11:52 | 显示全部楼层
验证(参数EAX,参数EDX)  {
  //最前面就是
cmp eax,edx
je  跳往注册成功,并写入注册表

这里就是关键跳吗?我跟到这里了,之前有操作注册表,GetVolueInformatinn,CreateFile一个文件等,你比我强多了....
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-12-15 14:37:57 | 显示全部楼层
楼上的朋友....

这个软件的核心算法我也跟到了.只是对于他调用函数的方式,实在有点搞不清楚.

主要对于他MD5变换后,从那里搞得变换后的代码搞不清楚....

如果有想研究算法的,我可以提供断点......

至于楼上的朋友,你说关键跳??我觉得远远并非如此的简单.

因为这里只是一种验证,我们强压入相同的eax和edx的确可以成功注册,

但是后面还有一种,也是同样的CALL这个函数,还是需要用相同的办法,将 eax 和edx的值,压为相同,
否则,会显示试用期做废,因为我们输入的注册码,毕竟不正确.

而且这个软件有200张单据的张数限制和月结的限制...所以只有想想办法算出其真正的注册码,才能算是
完美cr....否则,我看非常的麻烦了..

而且有朋友说好象不是md5到象是DES...哈.有喜欢共同研究的朋友可以尝试跟一下.
QQ:30002580

[ 本帖最后由 梦晰 于 2007-12-15 15:18 编辑 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2007-12-15 21:32:23 | 显示全部楼层
没能追出来,汗,
只追到一部份,假码变换的前一部份,
里面有一个加密函数一个解密函数,其实是骗人的,调用的是同一个地方!
不像是MD5加密!

[ 本帖最后由 网络断魂 于 2007-12-15 21:34 编辑 ]
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2007-12-15 21:50:27 | 显示全部楼层
楼上哥们,我也卡在那里啊...我其实这几天就在想.如果他真的用md5散列了以后,他其他没有办法逆像..
但是我的md5.dll只有一个导出函数.可能这也就是你说的,调用的是同一个地方的意思吧.

如果他只是做假的,能不能在其要调用的参数的那个堆栈的地方下内存断点呢?
PYG19周年生日快乐!

该用户从未签到

发表于 2007-12-19 02:12:46 | 显示全部楼层
进来 学习下。。
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表