fywy 发表于 2011-4-7 21:54:32

里诺固定资产及设备管理软件 1.90 SQL网络版算法分析

本帖最后由 fywy 于 2011-4-7 22:02 编辑

【文章标题】: 里诺固定资产及设备管理软件 1.90 SQL网络版
【文章作者】: fywy
【作者邮箱】: [email protected]
【作者主页】: 无
【作者QQ号】: 1349718927
【软件名称】: 里诺固定资产及设备管理软件 1.90 SQL网络版
【下载地址】: http://www.skycn.com/soft/33046.html
【加壳方式】: 无
【保护方式】: 无
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: peid+od+vb
【操作平台】: winxp sp2
【软件介绍】: 里诺通用固定资产及设备管理系统是一款通用性极强的
【作者声明】: 第一次写算法注册机,失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
软件介绍:
里诺通用固定资产及设备管理系统是一款通用性极强的固定资产及设备管理软件,适用于企业、机关、学校、事业单位等任何需要管理固定资产及设备的单位。
软件提供了完善的资产及设备档案管理,支持资产及设备的增加、删除、修改、清理等基本管理环节。软件同时提供了资产及设备的借出与归还管理,资产及设备转移管理,资产及设备维修管理。软件支持资产及设备折旧管理功能,并提供折旧额的自动核算。软件提供了模糊查询功能,多中查询条件可以任意选择。软件提供了多种报表格式,可以任意选择报表输出,同时支持将软件中任何数据转换EXCEL数据格式。同时软件提供了报表自定义格式设置功能,使用户使用中更加方便灵活。软件操作界面友好、灵活、易操作。
软件的后台数据库使用的是SQL Server2000,软件具有安全度高,速度快等特点,特别适合数据量大的公司,软件完全可以满足中小型企业的要求

1、peid查壳无壳编程语言为Borland Delphi 6.0 - 7.0
2、试用行程序输入假码,弹出提示如图所示:

3、OD载入,查找字符串“已保存了注册信息!下次启动本程序时将会对你的注册码进行验证,如注册码正确,本程序所有功能限制将被解除,您成为我们正式版本用户!”
如图所示:


我们在0068A4B9   PUSH SQLAsset.0068A538    -   上双击来到了0068A4B9|.68 38A56800   PUSH SQLAsset.0068A538                   ;-
向上找到0068A348/$55            PUSH EBP这个位置F2下断,然后F9运行,软件被断下来了。
然后F8运行,我们的机器出现在寄存器窗口注意观察。
我们看到这个循环的作用是对机器码转换成了一组16进制数
0068A394|> /8D4D EC       /LEA ECX,DWORD PTR SS:
0068A397|. |8B45 FC       |MOV EAX,DWORD PTR SS:
0068A39A|. |0FB64418 FF   |MOVZX EAX,BYTE PTR DS:[EAX+EBX->
0068A39F|. |33D2          |XOR EDX,EDX
0068A3A1|. |E8 E2FFD7FF   |CALL SQLAsset.0040A388
0068A3A6|. |8B55 EC       |MOV EDX,DWORD PTR SS:
0068A3A9|. |8D45 F8       |LEA EAX,DWORD PTR SS:
0068A3AC|. |E8 BFA5D7FF   |CALL SQLAsset.00404970
0068A3B1|. |43            |INC EBX
0068A3B2|. |4E            |DEC ESI
0068A3B3|.^\75 DF         \JNZ SHORT SQLAsset.0068A394

堆栈 SS:=0332A888, (ASCII "57442D574D41563243523730323336")
EAX=00000002
跳转来自 0068A38D

//转换后的16进制数57442D574D41563243523730323336记为s1

F8继续往下
又到了一个循环,它的作用是对s1倒排
0068A3C8|> /8B45 F8       /MOV EAX,DWORD PTR SS:
0068A3CB|. |E8 98A5D7FF   |CALL SQLAsset.00404968
0068A3D0|. |2BC3          |SUB EAX,EBX
0068A3D2|. |8B55 F8       |MOV EDX,DWORD PTR SS:
0068A3D5|. |8A1402      |MOV DL,BYTE PTR DS:
0068A3D8|. |8D45 E8       |LEA EAX,DWORD PTR SS:
0068A3DB|. |E8 A0A4D7FF   |CALL SQLAsset.00404880
0068A3E0|. |8B55 E8       |MOV EDX,DWORD PTR SS:
0068A3E3|. |8D45 F4       |LEA EAX,DWORD PTR SS:
0068A3E6|. |E8 85A5D7FF   |CALL SQLAsset.00404970
0068A3EB|. |43            |INC EBX
0068A3EC|. |4E            |DEC ESI
0068A3ED|.^\75 D9         \JNZ SHORT SQLAsset.0068A3C8

堆栈 SS:=0332A8B4, (ASCII "63332303732534236514D475D24475")
EAX=0012FD40

//倒排后的结果63332303732534236514D475D24475   记为s2


然后对s2取取前四位:6333记为s3
然后对s2第5位开始取取了四位:2303记为s4

引入了一个常量
0068A496|.BA 20A56800   MOV EDX,SQLAsset.0068A520      ;WAssts45yr87记为s5

对s5取前四位:WAss 记为s6

加入了分隔符 0068A4B9|.68 38A56800   PUSH SQLAsset.0068A538         ;-

后面跟的是s3      0068A4BE|.FF75 F8       PUSH DWORD PTR SS:

又从s5中第4位开始取了5位:ts45y记为s7

加入了分隔符0068A4DA|.68 38A56800   PUSH SQLAsset.0068A538         ;-

后面跟的是s4

整个算法就完成了。

完成算法表示为:

s6-s3&s7-s4

用VB表示算法为

Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim str4 As String
Dim i As Integer
str2 = ""
str3 = ""
str1 = Text1.Text
For i = 1 To Len(str1)
      str2 = str2 & Hex(Asc(Mid(str1, i, 1)))
Next i
For i = Len(str2) To 1 Step -1
    str3 = str3 & Mid(str2, i, 1)
Next
str1 = "WAssts45yr87"
str4 = Left(str1, 4) & "-" & Left(str3, 4) & Mid(str1, 5, 5) & "-" & Mid(str3, 5, 4)
Text2.Text = str4

注册机:

   

--------------------------------------------------------------------------------
【经验总结】
第一次写算法注册机,没什么经验。给新人一些鼓励!!!

--------------------------------------------------------------------------------
【版权声明】: 本文原创于fywy, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2011年04月07日 21:50:27

sdrf5678lk 发表于 2011-4-8 14:03:07

兄弟~~~~~~~
这个作者的算法都是一样的没有什么好分析的~~~~~~~
把的只是哪内置的字符串~/:011

刚刚看了 fywy 里诺会员管理软件爆破+追码+内存注册机就算法了下软件的算法很间单
注册机, 注册码, 字符串, 软件, 会员
我分析了一下软件的算法!!!!!!!!
1. 把机器转化为10进制数!!!!
2. 把进制进行一个倒序!!!
3. 从倒序好的字符串取两组字符串,第1个是取1-4位字符为K。第二组是取第5-8位字符为U!!!
4. 在把一个内置字符串mem45erpe进行分解。分成mem45erpe这两组。
5在把注册码按:mem4-K5erpe-u这个格式打印出来.

foxjinlin 发表于 2011-4-9 13:04:25

支持算法分析

学习下

jmpreg 发表于 2011-4-10 10:27:15

支持算法分析!!赞一个!

jmpreg 发表于 2011-4-10 10:28:55

兄弟~~~~~~~
这个作者的算法都是一样的没有什么好分析的~~~~~~~
把的只是哪内置的字符串~

刚刚 ...
sdrf5678lk 发表于 2011-4-8 14:03 https://www.chinapyg.com/images/common/back.gif


    见过牛人没有见过您这么牛的!!!超级顶你!太绝了,这就是精髓!/:good

missyoukkk 发表于 2011-4-11 16:20:09

/:good二楼太牛叉了吧。

yunfeng 发表于 2011-4-11 16:26:19

sdrf5678lk 已经将算法总结了一下,这对学习和分析算法很有帮助。

uygh 发表于 2011-4-12 01:09:14

回复 1# fywy


    {:2_143:}

cjteam 发表于 2011-4-12 23:12:24

/:013算法貌似是多年不变

512162712 发表于 2011-4-14 18:01:36

谢谢 拿了
页: [1] 2
查看完整版本: 里诺固定资产及设备管理软件 1.90 SQL网络版算法分析