文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 易吉八字算命3.2 简体中文版算法分析

易吉八字算命3.2 简体中文版算法分析

时间:2004/10/15 0:56:00来源:本站整理作者:蓝点我要评论(0)

 软件版本:3.2 简体中文版
软件下载: http://www.softreg.com.cn
http://www.bazi-soft.com
运行环境:Win95/98/Me/NT/2000/XP

一、软件简介 v3.2

★易吉八字算命软件是一款专业的排八字软件,可排出八字、命宫、胎元、大运、小运、日主强弱、用神、四柱及流年神煞、流年属性(包括岁运并临、与四柱冲合、神煞等信息),还有批近十年及近十二个月的运气等。点击批命示例可以看到本软件排出的八字样本。
★独一无二的采用天文时间(视太阳黄经时)计算出生时间,确保排出八字的准确性。
★输出的八字命状格式可任意修改,具体修改方法见帮助文件,其中已有十种格式可供选择,软件主页提供命状下载。
★收集了十多万字的八字知识。
★可查询全国2300多个城市的经纬度。
★软件注册费人民币100元(海外注册费US30或HK238或NT988)。

二、破解过程

1、安装完软件后试用,点“帮助”-->“输入注册码”进行注册,注册错误后一点提示都没有。下断点Bpx hmemcpy,不能中断,改下bpx SendMessage,正常中断后进行跟踪分析,用F8、F10、F12不断跟踪,没有结果,始终找不到关键点。此法不行,另想它法。
2、即然注册错误不显示提示框,注册正确应该显示吧。按此思路应先脱壳。用FI2.49分析为UPX1.22的壳,用PE-SCAN 3.31分析,得出OEP为422674h。用UPX 1.24w版正常脱去此壳,再用W32dsm89反汇编脱壳文件,点“字符串参考”,中文字串不显示。用UltraEdit打开,查找“注册成功”字符串,找到后改为“33333333”。再用W32dsm89反汇编脱壳文件,点“字符串参考”,找到“33333333”处双击,来到下面:
----------------------------------------------------
:00404F8F 90 nop
:00404F90 6AFF push FFFFFFFF
:00404F92 68B0DE4400 push 0044DEB0
:00404F97 64A100000000 mov eax, dword ptr fs:[00000000]
:00404F9D 50 push eax
:00404F9E 64892500000000 mov dword ptr fs:[00000000], esp
:00404FA5 83EC0C sub esp, 0000000C
:00404FA8 55 push ebp
:00404FA9 56 push esi
:00404FAA 8BF1 mov esi, ecx
:00404FAC 57 push edi
:00404FAD 8D4C240C lea ecx, dword ptr [esp+0C]
:00404FB1 E89A0E0100 call 00415E50
:00404FB6 8BCE mov ecx, esi
:00404FB8 C744242000000000 mov [esp+20], 00000000
:00404FC0 E874100300 call 00436039
:00404FC5 6A01 push 00000001
:00404FC7 8BCE mov ecx, esi
:00404FC9 E8A8EC0200 call 00433C76
:00404FCE 51 push ecx
:00404FCF 8D7E60 lea edi, dword ptr [esi+60]
:00404FD2 8BCC mov ecx, esp
:00404FD4 89642414 mov dword ptr [esp+14], esp
:00404FD8 57 push edi
:00404FD9 E8DCFF0200 call 00434FBA
:00404FDE 8D4C2410 lea ecx, dword ptr [esp+10]
:00404FE2 E8E9120100 call 004162D0 <--- 关键Call,在此计算注册码运算结果
:00404FE7 8D4C240C lea ecx, dword ptr [esp+0C]
:00404FEB 8BE8 mov ebp, eax <--- 关键Call,在此进行机器码运算
:00404FED E87E100100 call 00416070
:00404FF2 8D0440 lea eax, dword ptr [eax+2*eax]
:00404FF5 8D04C0 lea eax, dword ptr [eax+8*eax]
:00404FF8 3BE8 cmp ebp, eax
:00404FFA 753E jne 0040503A <--- 关键点,在此处进行机器码运算结果与注册码运算结果的比较!
:00404FFC 51 push ecx
:00404FFD 8BCC mov ecx, esp
:00404FFF 89642414 mov dword ptr [esp+14], esp
:00405003 57 push edi
:00405004 E8B1FF0200 call 00434FBA
:00405009 51 push ecx
:0040500A 83C664 add esi, 00000064
:0040500D 8BCC mov ecx, esp
:0040500F 8964241C mov dword ptr [esp+1C], esp
:00405013 56 push esi
:00405014 C644242C01 mov [esp+2C], 01
:00405019 E89CFF0200 call 00434FBA
:0040501E 8D4C2414 lea ecx, dword ptr [esp+14]
:00405022 C644242800 mov [esp+28], 00
:00405027 E8640E0100 call 00415E90
:0040502C 6A00 push 00000000
:0040502E 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"33333333333333" <---- 注册成功处
|
:00405030 6824BE4B00 push 004BBE24
:00405035 E85B830300 call 0043D395
----------------------------------------------------

3、用SoftIce加载程序,在404fd9h处设断,运行程序后,点“帮助”-->“输入注册码”-->“注册”,程序中断,中断后按F8进入这个Call,来到下面:
----------------------------------------------------
0167:004162CF NOP
0167:004162D0 SUB ESP,00000190
0167:004162D6 PUSH ESI
0167:004162D7 PUSH EDI
0167:004162D8 MOV DWORD PTR [ESP+08],0000001C <--- 索引表第一项
0167:004162E0 MOV DWORD PTR [ESP+0C],00000054 .
0167:004162E8 MOV DWORD PTR [ESP+10],00000051 .
0167:004162F0 MOV DWORD PTR [ESP+14],00000029 .
0167:004162F8 MOV DWORD PTR [ESP+18],00000048 .
0167:00416300 MOV DWORD PTR [ESP+1C],00000023 .
0167:00416308 MOV DWORD PTR [ESP+20],00000056 .
0167:00416310 MOV DWORD PTR [ESP+24],00000017 .
0167:00416318 MOV DWORD PTR [ESP+28],0000005C .
0167:00416320 MOV DWORD PTR [ESP+2C],0000003C .
0167:00416328 MOV DWORD PTR [ESP+30],0000000D .
0167:00416330 MOV DWORD PTR [ESP+34],00000013 .
0167:00416338 MOV DWORD PTR [ESP+38],0000005B .
0167:00416340 MOV DWORD PTR [ESP+3C],00000001 .
0167:00416348 MOV DWORD PTR [ESP+40],00000039 .
0167:00416350 MOV DWORD PTR [ESP+44],00000058 .
0167:00416358 MOV DWORD PTR [ESP+48],00000052 .
0167:00416360 MOV DWORD PTR [ESP+4C],0000002E .
0167:00416368 MOV DWORD PTR [ESP+50],00000011 .
0167:00416370 MOV DWORD PTR [ESP+54],00000042 .
0167:00416378 MOV DWORD PTR [ESP+58],0000004D .
0167:00416380 MOV DWORD PTR [ESP+5C],00000032 .
0167:00416388 MOV DWORD PTR [ESP+60],00000006 .
0167:00416390 MOV DWORD PTR [ESP+64],00000009 .
0167:00416398 MOV DWORD PTR [ESP+68],00000063 .
0167:004163A0 MOV DWORD PTR [ESP+6C],0000000B .
0167:004163A8 MOV DWORD PTR [ESP+70],00000003 .
0167:004163B0 MOV DWORD PTR [ESP+74],0000002B .
0167:004163B8 MOV DWORD PTR [ESP+78],0000000C .
0167:004163C0 MOV DWORD PTR [ESP+7C],0000001A .
0167:004163C8 MOV DWORD PTR [ESP+00000080],0000002A .
0167:004163D3 MOV DWORD PTR [ESP+00000084],00000010 .
0167:004163DE MOV DWORD PTR [ESP+00000088],0000003A .
0167:004163E9 MOV DWORD PTR [ESP+0000008C],00000024 .
0167:004163F4 MOV DWORD PTR [ESP+00000090],00000004 .
0167:004163FF MOV DWORD PTR [ESP+00000094],0000003D .
0167:0041640A MOV DWORD PTR [ESP+00000098],00000047 .
0167:00416415 MOV DWORD PTR [ESP+0000009C],0000005E .
0167:00416420 MOV DWORD PTR [ESP+000000A0],00000015 .
0167:0041642B MOV DWORD PTR [ESP+000000A4],0000003F .
0167:00416436 MOV DWORD PTR [ESP+000000A8],00000016 .
0167:00416441 MOV DWORD PTR [ESP+000000AC],00000014 .
0167:0041644C MOV DWORD PTR [ESP+000000B0],00000036 .
0167:00416457 MOV DWORD PTR [ESP+000000B4],00000059 .
0167:00416462 MOV DWORD PTR [ESP+000000B8],0000001E .
0167:0041646D MOV DWORD PTR [ESP+000000BC],00000061 .
0167:00416478 MOV DWORD PTR [ESP+000000C0],00000019 .
0167:00416483 MOV DWORD PTR [ESP+000000C4],00000053 .
0167:0041648E MOV DWORD PTR [ESP+000000C8],0000004A .
0167:00416499 MOV DWORD PTR [ESP+000000CC],00000045 .
0167:004164A4 MOV DWORD PTR [ESP+000000D0],00000043 .
0167:004164AF MOV DWORD PTR [ESP+000000D4],00000027 .
0167:004164BA MOV DWORD PTR [ESP+000000D8],0000004C .
0167:004164C5 MOV DWORD PTR [ESP+000000DC],00000046 .
0167:004164D0 MOV DWORD PTR [ESP+000000E0],0000005F .
0167:004164DB MOV DWORD PTR [ESP+000000E4],00000035 .
0167:004164E6 MOV DWORD PTR [ESP+000000E8],00000041 .
0167:004164F1 MOV DWORD PTR [ESP+000000EC],00000008 .
0167:004164FC MOV DWORD PTR [ESP+000000F0],00000050 .
0167:00416507 MOV DWORD PTR [ESP+000000F4],0000003B .
0167:00416512 MOV DWORD PTR [ESP+000000F8],00000025 .
0167:0041651D MOV DWORD PTR [ESP+000000FC],0000000F .
0167:00416528 MOV DWORD PTR [ESP+00000100],0000001F .
0167:00416533 MOV DWORD PTR [ESP+00000104],00000020 .
0167:0041653E MOV DWORD PTR [ESP+00000108],00000030 .
0167:00416549 MOV DWORD PTR [ESP+0000010C],0000001B .
0167:00416554 MOV DWORD PTR [ESP+00000110],0000005D .
0167:0041655F MOV DWORD PTR [ESP+00000114],0000004B .
0167:0041656A MOV DWORD PTR [ESP+00000118],00000012 .
0167:00416575 MOV DWORD PTR [ESP+0000011C],00000033 .
0167:00416580 MOV DWORD PTR [ESP+00000120],00000034 .
0167:0041658B MOV DWORD PTR [ESP+00000124],0000002C .
0167:00416596 MOV DWORD PTR [ESP+00000128],00000055 .
0167:004165A1 MOV DWORD PTR [ESP+0000012C],00000062 .
0167:004165AC MOV DWORD PTR [ESP+00000130],00000007 .
0167:004165B7 MOV DWORD PTR [ESP+00000134],00000018 .
0167:004165C2 MOV DWORD PTR [ESP+00000138],0000004F .
0167:004165CD MOV DWORD PTR [ESP+0000013C],0000000A .
0167:004165D8 MOV DWORD PTR [ESP+00000140],00000037 .
0167:004165E3 MOV EAX,[ESP+0000019C]
0167:004165EA XOR ESI,ESI
0167:004165EC PUSH 10
0167:004165EE PUSH ESI
0167:004165EF PUSH EAX
0167:004165F0 MOV DWORD PTR [ESP+00000150],00000028 .
0167:004165FB MOV [ESP+00000154],ESI .
0167:00416602 MOV DWORD PTR [ESP+00000158],0000004E .
0167:0041660D MOV DWORD PTR [ESP+0000015C],00000040 .
0167:00416618 MOV DWORD PTR [ESP+00000160],00000002 .
0167:00416623 MOV DWORD PTR [ESP+00000164],0000000E .
0167:0041662E MOV DWORD PTR [ESP+00000168],00000021 .
0167:00416639 MOV DWORD PTR [ESP+0000016C],00000026 .
0167:00416644 MOV DWORD PTR [ESP+00000170],0000001D .
0167:0041664F MOV DWORD PTR [ESP+00000174],0000002F .
0167:0041665A MOV DWORD PTR [ESP+00000178],00000057 .
0167:00416665 XLAT
0167:00416666 TEST [EDI*2+ESP],AH
0167:00416669 ADD [EAX],EAX
0167:0041666B ADD [EDX],AH
0167:0041666D ADD [EAX],AL
0167:0041666F ADD BH,AL
0167:00416671 TEST [EAX*4+EAX],AH
0167:00416674 ADD [EAX],EAX
0167:00416676 ADD [C7000000],CH
0167:0041667C TEST [EAX*4+ESP],AH
0167:0041667F ADD [EAX],EAX
0167:00416681 ADD [EAX+00],AH
0167:00416684 ADD [EAX],AL
0167:00416686 MOV DWORD PTR [ESP+00000188],00000005 .
0167:00416691 MOV DWORD PTR [ESP+0000018C],0000005A .
0167:0041669C MOV DWORD PTR [ESP+00000190],0000003E .
0167:004166A7 MOV DWORD PTR [ESP+00000194],00000038 .
0167:004166B2 MOV DWORD PTR [ESP+00000198],00000031 .
0167:004166BD MOV DWORD PTR [ESP+0000019C],00000044 .
0167:004166C8 MOV DWORD PTR [ESP+000001A0],00000049 <--- 索引表最后一项,共100项
0167:004166D3 CALL 004223A3
0167:004166D8 MOV EDI,EAX
0167:004166DA MOV ECX,00000064
0167:004166DF CDQ
0167:004166E0 ADD ESP,0C
0167:004166E3 IDIV ECX <--- Z1(输入的注册号)除以64h
0167:004166E5 LEA EAX,[ESP+08]
0167:004166E9 CMP [EAX],EDX <--- 一直查找直到索引表中找到(Z1%64h),将索引值存入ESI中,后面要用
0167:004166EB JZ 004166F6
0167:004166ED INC ESI
0167:004166EE ADD EAX,04
0167:004166F1 CMP ESI,63 <--- 此处可看出索引表共100(64h)项
0167:004166F4 JLE 004166E9
0167:004166F6 LEA ECX,[ESP+0000019C]
0167:004166FD CALL 00435245
0167:00416702 MOV EAX,EDI
0167:00416704 MOV ECX,00002710
0167:00416709 CDQ
0167:0041670A IDIV ECX
0167:0041670C MOV EAX,51EB851F <--- 这个操作数比较有意思,将它变为十进制为1374389535,不知是不是软件作者的手机号:-)
0167:00416711 MOV ECX,EDX
0167:00416713 IMUL ECX <--- 乘以(Z1%2710h)
0167:00416715 SAR EDX,05 <--- 除以20h
0167:00416718 MOV EAX,EDX
0167:0041671A SHR EAX,1F
0167:0041671D ADD EDX,EAX
0167:0041671F MOV EDX,[EDX*4+ESP+08]
0167:00416723 LEA EAX,[EDX*4+EDX] <--- 乘以64h(以下三条指令)
0167:00416726 LEA EAX,[EAX*4+EAX]
0167:00416729 SHL EAX,02
0167:0041672C SUB EAX,ECX <--- 减去(Z1%2710h)
0167:0041672E ADD EAX,ESI <--- 加上ESI,在4166EDh处的值
0167:00416730 ADD EAX,EDI <--- 加上Z1
0167:00416732 POP EDI
0167:00416733 POP ESI
0167:00416734 ADD ESP,00000190
0167:0041673A RET 0004
0167:0041673D NOP
----------------------------------------------------


三、注册算法分析:

设机器码为J1,机器码计算结果为J2,输入注册号为Z1,输入注册号计算结果为Z2,要注册成功必需使Z2=J2,另根据分析可得:Z2=Z1-Z1%2710h+以(Z1%64h)的为值的索引值+64h*{以[(51eb851fh*(Z1%2710h)的高位值/20h]为索引的值}。
J2为J1的函数,因该函数涉及到硬盘序列号等硬件标识的获取及运算,非常麻烦,而J2的值我们可以在内存中得到,故我们跳过该函数的分析,直接从内存中得到J2。

因此注册号的求解可等价为:

已知:J2=Z2=F(Z1),索引表(见附表) 求:Z1

求解过程:
因Z2=Z1-Z1%2710h+以(Z1%64h)的为值的索引值+64h*{以[(51eb851fh*(Z1%2710h)的高位值/20h]为索引的值},故可令
J2=A*2710h+B*64h+C,可得:

A*2710h=Z1-Z1%2710h ......①
B=以[((51eb851fh*(Z1%2710h))的高位值/20h]为索引的值 (此处高位值的意思是在内存中表现为EDX的值) ..②
C=以(Z1%64h)的为值的索引值 ......③

由①式可知:Z1必属于[A*2710h,(A+1)*2710h) ......④
由③式和索引表可得出:(Z1%64h),设为D ......⑤
由②式和索引表可得出:((51eb851fh*(Z1%2710h))的高位值/20h,设为E ......⑥

由⑥式可知:“((51eb851fh*(Z1%2710h))的高位值”必属于[E*20h,(E+1)*20h) ......⑦
再由⑦式可得:E*20h*100000000h/51eb851fh<=(Z1%2710h)<[(E+1)*20h*100000000+ffffffffh]/51eb851fh,令两个端值分别为F1、F2,(Z1%2710h)为G,则可得G属于[F1,F2) ......⑧

由④⑤⑧三式可得出结论:
正确的注册码Z1=A*2710+G,其中G属于[F1,F2),G/64h=D。


附:索引表

| 0 1 2 3 4 5 6 7 8 9 a b c d e f
-|----------------------------------------------------------------
0| 1c 54 51 29 48 23 56 17 5c 3c 0d 13 5b 01 39 58
1| 52 2e 11 42 4d 32 06 09 63 0b 03 2b 0c 1a 2a 10
2| 3a 24 04 3d 47 5e 15 3f 16 14 36 59 1e 61 19 53
3| 4a 45 43 27 4c 46 5f 35 41 08 50 3b 25 0f 1f 20
4| 30 1b 5d 4b 12 33 34 2c 55 62 07 18 4f 0a 37 *28
5| 00 4e 40 02 0e 21 26 1d 2f 57 22 2d 60 05 5a 3e
6| 38 31 44 49


在我机器上是这样的:
机器码:10324194746
注册码:44FC55E

四、注册机破解法
参照第三部分的分析,可写出注册机。在此不在细说。

五、暴力破解法
先用UPX脱壳,后用UltraEdit打开,找“753E518BCC”,找到后改为“9090518BCC”后存盘即可!


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程