PC逆向 注册码校验分析

admin 2025年5月30日10:14:38评论24 views字数 3427阅读11分25秒阅读模式

说明:本文无任何成品软件,仅供分析结果过程。

已知他的系列号为:889544539513

他的注册码为:15位,经过多次尝试,得到判断。

注册码:111112222233333,那么前五位,用于计算8895,中五位用于计算4453,后五位,用于计算9513,三次均匹配成功。才能进行完整的注册流程。

操作之前:

首先使用OD,搜索特征码:“三次“,将上面的JNZ改为JMP。因为进入到运算过程中,只有三次机会,将他给跳转过去。防止多次调试而造成的弹窗。

PC逆向  注册码校验分析

重新生成软件,便可以追码。

重新用OD打开软件,搜索字符:注册码.txt

如下图所示,咱们需要进入三个CALL,然后进行追出来他的计算过程。

PC逆向  注册码校验分析

第一次追码过程:

在下面输入15位的注册码,用于进行校验。比如我输入“123459876500000”

PC逆向  注册码校验分析

那么在第一次进行F7步入。

开始分析。

PC逆向  注册码校验分析

已知前五位为12345,那么十进制的12345的十六进制为:3039

接着往下步入。需要计算系列号的过程:

已知设备码为:889544539513,那么需要进行十六进制相乘汇总,得到的结果与上面的固定值进行相加。

PC逆向  注册码校验分析
PC逆向  注册码校验分析

以下均为十六进制

8*1 8

8*2 10

9*3 1B

5*4 14

4*5 14

4*6 18

5*7 23

3*8 18

9*9 51

5*A 32

1*B B

3*C 24=160 + 859(固定)= 09B9

得到结果:

PC逆向  注册码校验分析

移四位得到9B90,并进行异或得93C9。

PC逆向  注册码校验分析

93C9+固定值:79FC = 10DC5。

取低十六位,得到DC5。那么设备码:889544539513的运算结果为DC5。

PC逆向  注册码校验分析

已知CALL返回为:DC5,那么接着执行。

EAX:DC5

ESI:3039(结果为注册码前五位的十进制转十六进制)

首先进行异或操作得到结果为3DFC。

3DFC+固定值:859得:4655

然后接着往下走:

4655/3等于=1771。

1771减固定值859 = F18

PC逆向  注册码校验分析

十六进制F18转十进制为:3864

PC逆向  注册码校验分析

所以最终汇总结果为:3864

咱们来确定一下结果。

已知上面有三处校验判断,在跳转时会有判断结果。

PC逆向  注册码校验分析

那么第一次校验,就可以撸出来一个软了。进行爆破。

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click        Dim 设备码 As String = "889544539513"        Dim 前4 As String = 设备码.Substring(04)        Dim 码1 As String = 校验(设备码, 前4)        MsgBox(码1)    End Sub    Function 校验(ByVal 设备码 As String, ByVal 前四位 As String)        For b = 1 To 99999            Dim inputText1 As String = b.ToString("D5")            Dim inputText As String = $"{inputText1}0000000000"            If inputText.Length >= 12 Then                Dim firstFiveDigits As String = inputText.Substring(05)                Dim decimalValue As Integer = Integer.Parse(firstFiveDigits)                Dim hexValue As String = decimalValue.ToString("X")                Dim 字符的值 As String = hexValue                Dim 字符的值_hex As Integer = Convert.ToInt32(字符的值, 16)                Dim deviceCode As String = 设备码                Dim totalSum As Integer = 0                For i As Integer = 0 To deviceCode.Length - 1                    Dim currentChar As Char = deviceCode(i)                    Dim hexValue1 As Integer = Convert.ToInt32(currentChar.ToString(), 16)                    Dim multipliedValue As Integer = hexValue1 * (i + 1)                    totalSum += multipliedValue                Next                Dim additionalValue As Integer = Convert.ToInt32("859", 16)                totalSum += additionalValue                totalSum <<= 4                Dim xorValue As Integer = Convert.ToInt32("859", 16)                Dim xorResult As Integer = totalSum Xor xorValue                ' 进行加法操作                Dim addValue As Integer = Convert.ToInt32("79FC", 16)                Dim finalResult As Integer = xorResult + addValue                ' 获取低16位(按位与操作)                Dim low16Bits As Integer = finalResult And &HFFFF                ' 进行异或操作:低16位与 0x3039                Dim xorWith3039 As Integer = low16Bits Xor 字符的值_hex                ' 第一步:3DFC + 859 = 4655                Dim additionResult As Integer = xorWith3039 + &H859                ' 第二步:4655 / 3 = 1771                Dim divisionResult As Integer = additionResult  3                ' 第三步:1771 - 859 = F18                Dim subtractionResult As Integer = divisionResult - &H859                ' 第四步:将 F18 转换为十进制                Dim hexToDecResult As Integer = Convert.ToInt32(subtractionResult.ToString("X"), 16)                If hexToDecResult.ToString() = 前四位 Then                    Return inputText1                End If            Else                MessageBox.Show("请输入至少12位字符。")            End If        Next    End Function

软件逻辑:从1开始运行99999,五位,一直执行到结果为我的系列号前四位:8895,并输出我运行的五位过程。

软件得到结果:

PC逆向  注册码校验分析

那么我的前五位为29994。拼接15位得:299940000000000

输入注册码进行校验。

PC逆向  注册码校验分析

那么第一次校验的过程就这样得到了。

后续校验:

接下来的两处校验,基本以这样的方式,都是可以追到的。

第二次校验,他的固定值为:0A3E

算法与上面,大同小异。追一下就能追出来了。

第三次校验,他的固定值为:02DD

第三次,正常追出来结果之后,最后需要注意一下,如DA98,那么需要循环四次。

需要循环四次。如D、A、9、8。

那么每一个需要

D + 2A - 30 得结果,然后进行相乘3E8=得结果记录。

A + 2A - 30 得结果,然后进行相乘64=得结果汇总。

9 + 2A - 30 得结果,然后进行相乘A=得结果汇总。

8 + 2A - 30 得结果,然后进行相乘1=得结果汇总。

最终的值才是结果。

收工结束,写不动了,有想研究的可以继续来研究研究。

他的每一个软件计算方式都不太相同,所以,此文还是以学习为主。

PC逆向  注册码校验分析

原文始发于微信公众号(逆向有你):PC逆向 -- 注册码校验分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月30日10:14:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PC逆向 注册码校验分析https://cn-sec.com/archives/4114267.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息