首页
社区
课程
招聘
[原创]华威医药POS管理软件的注册码算法分析,附暴破方法
发表于: 2005-6-21 08:57 5805

[原创]华威医药POS管理软件的注册码算法分析,附暴破方法

2005-6-21 08:57
5805
[软件名称]:华威管理软件--医药POS管理软件
[软件用途]:无硬件环境,详细作用不明确
[破解工具]:UtrlEdit10.20 ,OllyDbg1.09 ,W32Dasm8.93白金版
[破解方法]:找出注册码的算法,另附加暴力破解方法
[额外说明]:主程序本身无壳,仅自带文件“pos58j.dll”带一弱壳,可用工具自动脱,不脱好象也无影响
[破解目的]:仅受托于本论坛某初学者自我学习要求,本人也只限于学习,无任何商业目的

一、注册码校验原理

    注册界面,系统会产生三个参数,依次称为参数1、参数2、参数3,系统内部还有一个固定参数字符串:SCMBUILDERYYPOS9,注册程序就是使用输入的注册码依次与固定参数、参数3、参数2的ACSII码逐位进行16进制加运算。输入的注册码各位必须是16进制数字,共为16位。固定参数也为16位,参数3和参数2一般不够16位,进行加运算的时候就循环进行,所有逐位运算结果只取低位值。最后得出的结果与参数1进行比较,如果一样,就正确注册,不一样,弹出错误提示。

   

    在我的机器中运行,程序注册窗口的各参数如下:

    参数1值:53 53 98 68 3C 6D 94 13 0D 8F D3 0D 12 D7 A8 1E
    参数2值:5JVL4E5Q  ACSII码:35 4A 56 4C 34 45 35 51
    参数3值:067594    ACSII码:30 36 37 35 39 34
    固定参数:SCMBUILDERYYPOS9  ACSII码:53 43 4D 42 55 49 4C 44 45 52 59 59 50 4F 53 39  
    根据以上算法,可得注册码:9B90 BEA5 7AAB E348 5CBE EB34 5E0D E95F

    下面为详细算法实例解析,实际计算注册码时,请使用你机器的3个参数替换。

    算法的代码见“四、暴力破解”。

二、注册码算法实例(逆向)

我的机器参数如下:

参数1值:53 53 98 68 3C 6D 94 13 0D 8F D3 0D 12 D7 A8 1E
参数2值:5JVL4E5Q  ACSII码:35 4A 56 4C 34 45 35 51
参数3值:067594    ACSII码:30 36 37 35 39 34

现在根据参数1,2,3逆向计算正确的注册码。

1、参数1连续依次减去参数2:5JVL4E5Q 的ACSII码值

            53 53 98 68 3C 6D 94 13 0D 8F D3 0D 12 D7 A8 1E
            35 4A 56 4C 34 45 35 51 35 4A 56 4C 34 45 35 51
16进制减法 -------------------------------------------------取低位值
            1E 09 42 1C 08 28 5F C2 D8 45 7D C1 DE 92 73 CD

2、第1步结果连续依次减去参数3:067594 的ACSII码值

            1E 09 42 1C 08 28 5F C2 D8 45 7D C1 DE 92 73 CD
            30 36 37 35 39 34 30 36 37 35 39 34 30 36 37 35
16进制减法 -------------------------------------------------取低位值
            EE D3 0B E7 CF F4 2F 8C A1 10 44 8D AE 5C 3C 98

3、第2步结果连续依次减去固定参数 SCMBUILDERYYPOS9 的
   ACSII码:53 43 4D 42 55 49 4C 44 45 52 59 59 50 4F 53 39

            EE D3 0B E7 CF F4 2F 8C A1 10 44 8D AE 5C 3C 98
            53 43 4D 42 55 49 4C 44 45 52 59 59 50 4F 53 39
16进制减法 -------------------------------------------------取低位值
            9B 90 BE A5 7A AB E3 48 5C BE EB 34 5E 0D E9 5F

4、第3步结果两两拼合,即可得出正确的注册码            
            9B90 BEA5 7AAB E348 5CBE EB34 5E0D E95F

三、注册机

    算法很简单,自己手算也可在5分钟内得出,再兼于是国产软件,就不做了。

四、如果不想找注册码,可如下暴力破解,由于每个CALL内的代码都特别长,这里就精简了。

1、先寻找以下到语句,看注册码的运算原理(可与注册算法步骤对应看)。

'赋值寄存器,准备进行算法运算

0053E8E6  |. 8D55 F0        LEA EDX,DWORD PTR SS:[EBP-10]
0053E8E9  |. 8B43 08        MOV EAX,DWORD PTR DS:[EBX+8]

'将输入的注册码的16进制字符串与固定参数:SCMBUILDERYYPOS9 的ACSII码
'(53 43 4D 42 55 49 4C 44 45 52 59 59 50 4F 53 39)
'逐位进行16进制加法,相加结果只取低位值

0053E8EC  |. E8 8FF2FFFF    CALL YYPOS.0053DB80

'将上一步所得结果赋值寄存器,准备进行下一步算法运算

0053E8F1  |. 8D55 F0        LEA EDX,DWORD PTR SS:[EBP-10]
0053E8F4  |. 8D4D FC        LEA ECX,DWORD PTR SS:[EBP-4]
0053E8F7  |. 8B43 04        MOV EAX,DWORD PTR DS:[EBX+4]

'将上步骤得出的16进制字符串结果与参数3的ACSII码
'循环逐位进行16进制加法,相加结果只取低位值

'将上步骤得出的16进制字符串结果与参数2的ACSII码
'循环逐位进行16进制加法,相加结果只取低位值

0053E8FA  |. E8 F5F5FFFF    CALL YYPOS.0053DEF4

'将计算出的16进制字符串存EDX

0053E8FF     8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]

'将注册窗口的参数1的16进制字符串存EAX

0053E902  |. 8B03           MOV EAX,DWORD PTR DS:[EBX]

'执行文本比较,返回BL,BL不为0,正确;为0,错误

0053E904  |. E8 2F59ECFF    CALL YYPOS.00404238
0053E909  |. 75 04          JNZ SHORT YYPOS.0053E90F

'如果BL不为0,至BL为1,跳转YYPOS.0053E911;如果BL为0,跳转YYPOS.0053E90F

0053E90B  |. B3 01          MOV BL,1
0053E90D  |. EB 02          JMP SHORT YYPOS.0053E911

'BL清0,AL清0

0053E90F  |> 33DB           XOR EBX,EBX
0053E911  |> 33C0           XOR EAX,EAX
0053E913  |. 5A             POP EDX
0053E914  |. 59             POP ECX
0053E915  |. 59             POP ECX
.......
0053E934  |. C3             RET

2、根据以上注册码比较原理,可如下暴破:

'原理是:原来EDX是用计算出的字符串赋值的,现在改为用实际参数1赋值
'这将抛弃算法计算结果,保证比较永远正确

'将:

0053E8FF     8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]

'改为:

0053E8FF     8B13           MOV EDX,DWORD PTR DS:[EBX]
0053E901     90             NOP

'暴破OK!
  

3、由于我没有POS机,暴破不能完全测试,但根据分析,应该没问题。

五、题外话

  本不想写破文,但觉得这个破解简单、完美,适合初学者的进步,就花时间写了。
  整个破解过程只使用了2个小时,整理思路近1个小时,写此篇教程用1个小时,这可能就是高手们不愿意写详细破文的原因,所以,请大家不要责怪高手,时间对于每个人都很宝贵,自学很重要。

  再:由于国产软件,请小范围内交流,谢谢

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
坐个沙发支持一下

―――――――――――――――――――――――――――――
破解天堂:11493135
2005-6-21 10:07
0
雪    币: 203
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哪下这个软件啊,没见着,希望能明示哪下,我可以依样画葫芦来操练一番,谢谢
2005-6-21 12:25
0
游客
登录 | 注册 方可回帖
返回
//