首页
社区
课程
招聘
[旧帖] [原创]XX土方软件追码及注册机编写[邀请码已发放] 0.00雪花
发表于: 2009-8-28 13:33 1486

[旧帖] [原创]XX土方软件追码及注册机编写[邀请码已发放] 0.00雪花

2009-8-28 13:33
1486
前几天研究了一下系列软件的注册方式,发现大同小异,均为软件根据硬件算出一个机器码,然后用机器码推算出注册码,和填写的注册码比对,相同则注册成功,不同则弹出MessageBox。
系列中的国产的xx土方软件算是比较简单的一个,没有人写过注册机,所以贴出来研究一下。
【软件简介】:
1.提供智能的等高线.高程数据转换功能,可以快捷地将普通地形图转换为具有三维信息的地形图。
2.方格网法,断面法等土方计算方法,快速准确计算出场地区域内土石方工程量。
3.灵活的土方边坡定制及边坡计算功能,可灵活定义单、多级土方区域边界放坡。
4.国内首套提供土方调配功能的软件,可根据地形及地理条件,确定各土方调配区的土方调配方案,从而缩短工程工期、降低施工成本。
5.软件的场地布置功能,帮助设计人员快速绘制出三维景观效果工程方案图。

首先下断bpx GetWindowTextA,输入假码,确定。
OD F8回到软件领空,然后跟着假码或跟着机器码走,很快就来到这里:

0DAC9DC0      57                push edi
0DAC9DC1      8B7C24 10         mov edi,dword ptr ss:[esp+10]              ; 机器码长度
0DAC9DC5      33C9              xor ecx,ecx                                ; 计数器清零
0DAC9DC7      85FF              test edi,edi
0DAC9DC9      7E 21             jle short tch_init.0DAC9DEC                ; 机器码长度为0跳出
0DAC9DCB      8A5424 0C         mov dl,byte ptr ss:[esp+C]                 ; 基准数
0DAC9DCF      56                push esi
0DAC9DD0      8B7424 0C         mov esi,dword ptr ss:[esp+C]               ; 机器码
0DAC9DD4      8A0431            mov al,byte ptr ds:[ecx+esi]               ; 机器码第一位
0DAC9DD7      32C2              xor al,dl                                  ; 跟基准数XOR
0DAC9DD9      8AD0              mov dl,al                                  ; 交换
0DAC9DDB      880431            mov byte ptr ds:[ecx+esi],al               ; 注册码第一位
0DAC9DDE      C0E2 06           shl dl,6                                   ; 左移6
0DAC9DE1      C0E8 04           shr al,4                                   ; 右移4
0DAC9DE4      02D0              add dl,al                                  ; 相加
0DAC9DE6      41                inc ecx                                    ; 计数器+1
0DAC9DE7      3BCF              cmp ecx,edi                                ; 到达机器码长度了吗?
0DAC9DE9    ^ 7C E9             jl short tch_init.0DAC9DD4
0DAC9DEB      5E                pop esi
0DAC9DEC      5F                pop edi
0DAC9DED      C3                retn

以上是机器码推算注册码的过程。弄清楚注册码算法之后,反推回去就可以写注册机了。

需要注意的是
0DAC9DCB      8A5424 0C         mov dl,byte ptr ss:[esp+C]     

系列软件里每个软件有不同的DL固定值。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 399
活跃值: (214)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
2
注册机是VB写的。

Private Sub Calcmd_Click()

Dim Output As String  '输出的注册码

Dim serial As String    '序列号
Dim length As Integer   '序列号长度=EBP
Dim i As Integer    '循环数
Dim Output_Length As Integer
Dim CL As Integer '不同软件不同常量,CL
Dim CL_Tmp As String   'CL取整、去头的过程变量
Dim OutCheck As String
Dim Output_Once As String

Output = "" '初始化注册码--->AL

Dim DL As Integer '--->DL
Dim NumStr As Integer
Dim OutputNum As Integer '输出的AL的数字形态
Dim CL_check As String

CL = Val(&H46) '--->CL初始值

serial = serialfrm.Text
serial = LTrim(serial)
serial = RTrim(serial)  '去掉空格

length = Len(serial)
        If length = 0 Then
                regfrm.Text = "你耍我的吧?"
goto finish
        End If

            For i = 1 To length
                    DL = Asc(Mid(serial, i, 1)) '取字符的ascII码,DL
                    OutputNum = DL Xor CL 'AL
                  
                    OutCheck = Hex(OutputNum)

                    Output_Length = Len(OutCheck)
                    
                    '输出AL的ASCII

                    '不但需要计算output多于两位,还要计算少于两位的情况

                                Select Case Output_Length

                                        Case Is > 2

                                            Output_Once =Right(OutCheck, 2)

                                        Case 2

                                            Output_Once = OutCheck

                                        Case 1

                                     Output_Once = "0" & OutCheck

                                        Case 0

                                            Output_Once = "00"

                                End Select

                    CL_check = Right(Hex(OutputNum * 64), 2)

                    CL_Tmp = Hex(Val("&H" & CL_check) + OutputNum \ 16)     '左移+右移

                    CL = Val("&H" & Right(CL_Tmp, 2)) '取后两位字符串变成十进制数字

                    regfrm.TextOutput = regfrm.Text & Output_Once

            Next
            
finish:
End Sub
2009-8-28 13:36
0
雪    币: 399
活跃值: (214)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
3
不知道看雪允许贴注册机不,所以注册机先不贴了。

不知道一个初学者写的文章能不能入各位老大的法眼,能不能获得邀请码呢?
2009-8-28 13:38
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
4
哎,VB看不懂。。。
2009-8-28 13:44
0
游客
登录 | 注册 方可回帖
返回
//