Saver 发表于 2005-2-18 18:07:36

全国电话通1.30分析

研究了1天终于把全国电话通1.30给搞定了,大家随便看看吧~喜欢的支持下噢~
【破文作者】   Saver

【 作者QQ 】   562194

【文章题目】   Saver申请加入7

【软件名称】   全国电话通1.30

【下载地址】   http://www.onlinedown.net/soft/22381.htm

----------------------------------------------------------------------------------------------
【加密方式】   UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo

【破解工具】   peid,od,recimport

【破解平台】   XP SP2

----------------------------------------------------------------------------------------------
【软件简介】

1.上海电话号码归属地查询(特色功能) 2.全国电话号码归属地查询(特色功能) 3.全国手机号码归属地查询 4.全国身份证号码查询 5.全国邮政编码查询 软件特色: 我们的数据库截止2003年12月1日,已经超过了32万。我们的数据库在不断的增加中(在线反馈,邮件反馈,工作人员反馈)。我们的数据库采用内嵌式,不需要任何数据库驱动引擎,真正的绿色软件。界面采用XP风格,简单上手。更新速度快,包括主程序和数据库。

【文章简介】

找出注册码

----------------------------------------------------------------------------------------------
【破解过程】

先用peid查看了下是UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
很简单,就手动脱了。用od载入,来到在这里
008F0A30 >60               pushad                   /////来到这里
008F0A31    BE 00007C00      mov esi,全国电话.007C0000
008F0A36    8DBE 0010C4FF      lea edi,dword ptr ds:
/////////////////////////////////////////////////////////////////////
根据堆栈平衡,往下找popad
008F0B87    83C3 04            add ebx,4
008F0B8A^ EB E1            jmp short 全国电话.008F0B6D
008F0B8C    FF96 B41F4F00      call dword ptr ds:
008F0B92    61               popad                   ////////F4到这
008F0B93- E9 8CA9BBFF      jmp 全国电话.004AB524   ////////大跳,F8后
//////////////////////////////////////////////////////////////////////
来到这
004AB524    55               push ebp                ////////来到这
004AB525    8BEC               mov ebp,esp
004AB527    83C4 F0            add esp,-10
004AB52A    B8 CCB14A00      mov eax,全国电话.004AB1CC
004AB52F    E8 14ABF5FF      call 全国电话.00406048
好,我们就用od自带的脱壳进程,选1,脱出来后,无法运行。说是“没有找到c.dll
打开原文件,用ImoprtREC载入,oep选刚脱出来的即:4ab524,点自动搜索IAT后,
全为真,好,我们在fix都刚脱出来的文件。再运行,这次都是没有提示了。但启动
画面结束后就自动退出了,看来是有自效验了。好,正式工作就要开始了~~GoGoGo~~
/////////////////////////////////////////////////////////////////////////
根据使用,可以发现,该软件再注册后会在该文件夹下生成一个user.ini文件,里面
放着就是你的注册名和注册码,看来该软件就是通过这个来效验的。好,那我们就在
od里找这个吧。一共有3个地方是用到了user.ini。分别为以下3处:
第一处:
* Possible StringData Ref from Data Obj ->"user.ini"    //////这里1
                                  |
:004A7022 BA74764A00            mov edx, 004A7674
:004A7027 E8C8D3F5FF            call 004043F4
:004A702C 8B9598FBFFFF            mov edx, dword ptr
:004A7032 8D85F8FEFFFF            lea eax, dword ptr
:004A7038 B9FF000000            mov ecx, 000000FF
:004A703D E886D3F5FF            call 004043C8
:004A7042 8D8590FBFFFF            lea eax, dword ptr
:004A7048 8D95F8FEFFFF            lea edx, dword ptr
:004A704E E83DD3F5FF            call 00404390
:004A7053 8B8D90FBFFFF            mov ecx, dword ptr
:004A7059 B201                  mov dl, 01

/////////////////////////////////////////
第2处
* Possible StringData Ref from Data Obj ->"user.ini"    //////这里2
                                  |
:004A8A9B BACC8B4A00            mov edx, 004A8BCC
:004A8AA0 E84FB9F5FF            call 004043F4
:004A8AA5 8B95FCFEFFFF            mov edx, dword ptr
:004A8AAB 8D8500FFFFFF            lea eax, dword ptr
:004A8AB1 B9FF000000            mov ecx, 000000FF
:004A8AB6 E80DB9F5FF            call 004043C8
:004A8ABB 8D85F4FEFFFF            lea eax, dword ptr
:004A8AC1 8D9500FFFFFF            lea edx, dword ptr
:004A8AC7 E8C4B8F5FF            call 00404390
:004A8ACC 8B8DF4FEFFFF            mov ecx, dword ptr
:004A8AD2 B201                  mov dl, 01


/////////////////////////////////////////
第3
* Possible StringData Ref from Data Obj ->"user.ini"
                                  |
:004A8CFB BA488E4A00            mov edx, 004A8E48
:004A8D00 E8EFB6F5FF            call 004043F4
:004A8D05 8B95FCFEFFFF            mov edx, dword ptr
:004A8D0B 8D8500FFFFFF            lea eax, dword ptr
:004A8D11 B9FF000000            mov ecx, 000000FF
:004A8D16 E8ADB6F5FF            call 004043C8
:004A8D1B 8D85F4FEFFFF            lea eax, dword ptr
:004A8D21 8D9500FFFFFF            lea edx, dword ptr
:004A8D27 E864B6F5FF            call 00404390
:004A8D2C 8B8DF4FEFFFF            mov ecx, dword ptr
:004A8D32 B201                  mov dl, 01
///////////////////////////////////////////////////////////////////////
由于不知道软件是从哪个验证的,我们就在这3个地方先全下断,等知道后,再
把其他的取消掉
好,F9运行,停在这里
004A7022    BA 74764A00      mov edx,全国.004A7674                  ////停在这里user.ini
004A7027    E8 C8D3F5FF      call 全国.004043F4
004A702C    8B95 98FBFFFF      mov edx,dword ptr ss:
004A7032    8D85 F8FEFFFF      lea eax,dword ptr ss:
004A7038    B9 FF000000      mov ecx,0FF
004A703D    E8 86D3F5FF      call 全国.004043C8
004A7042    8D85 90FBFFFF      lea eax,dword ptr ss:
004A7048    8D95 F8FEFFFF      lea edx,dword ptr ss:
004A704E    E8 3DD3F5FF      call 全国.00404390
004A7053    8B8D 90FBFFFF      mov ecx,dword ptr ss:
004A7059    B2 01            mov dl,1
004A705B    A1 E42C4300      mov eax,dword ptr ds:
004A7060    E8 2FBDF8FF      call 全国.00432D94
004A7065    A3 24FF4A00      mov dword ptr ds:,eax
004A706A    6A 00            push 0
004A706C    8D85 8CFBFFFF      lea eax,dword ptr ss:
004A7072    50               push eax
004A7073    B9 88764A00      mov ecx,全国.004A7688                  
004A7078    BA 98764A00      mov edx,全国.004A7698               
004A707D    A1 24FF4A00      mov eax,dword ptr ds:
004A7082    8B18               mov ebx,dword ptr ds:
004A7084    FF13               call dword ptr ds:
004A7086    8B95 8CFBFFFF      mov edx,dword ptr ss:
004A708C    8D85 F8FDFFFF      lea eax,dword ptr ss:
004A7092    B9 FF000000      mov ecx,0FF
004A7097    E8 2CD3F5FF      call 全国.004043C8
004A709C    68 AC764A00      push 全国.004A76AC
004A70A1    8D85 88FBFFFF      lea eax,dword ptr ss:
004A70A7    50               push eax
004A70A8    B9 C0764A00      mov ecx,全国.004A76C0               
004A70AD    BA D4764A00      mov edx,全国.004A76D4                  
004A70B2    A1 24FF4A00      mov eax,dword ptr ds:
004A70B7    8B18               mov ebx,dword ptr ds:
004A70B9    FF13               call dword ptr ds:            ////取注册名
004A70BB    8B95 88FBFFFF      mov edx,dword ptr ss:       ////edx=里的值,即为你的注册名
004A70C1    8B45 FC            mov eax,dword ptr ss:
004A70C4    05 B0050000      add eax,5B0
004A70C9    B9 FF000000      mov ecx,0FF
004A70CE    E8 F5D2F5FF      call 全国.004043C8                   ////取长度
004A70D3    68 E4764A00      push 全国.004A76E4
004A70D8    8D85 84FBFFFF      lea eax,dword ptr ss:
004A70DE    50               push eax
004A70DF    B9 F0764A00      mov ecx,全国.004A76F0               
004A70E4    BA D4764A00      mov edx,全国.004A76D4               
004A70E9    A1 24FF4A00      mov eax,dword ptr ds:
004A70EE    8B18               mov ebx,dword ptr ds:
004A70F0    FF13               call dword ptr ds:            ////取注册码
004A70F2    8B95 84FBFFFF      mov edx,dword ptr ss:       ////edx=为你的注册码
004A70F8    8B45 FC            mov eax,dword ptr ss:         ////eax=里的值
004A70FB    05 B0060000      add eax,6B0
004A7100    B9 FF000000      mov ecx,0FF
004A7105    E8 BED2F5FF      call 全国.004043C8                   ////取注册码长度
004A710A    8B45 FC            mov eax,dword ptr ss:
004A710D    80B8 B0060000 00   cmp byte ptr ds:,0          ////注册码是否为空
004A7114    75 0C            jnz short 全国.004A7122            ////为空就不跳
004A7116    8B45 FC            mov eax,dword ptr ss:
004A7119    66:C780 B0060000 0>mov word ptr ds:,3001
004A7122    33DB               xor ebx,ebx                        ////清0
004A7124    68 00010000      push 100
004A7129    8D85 F8FCFFFF      lea eax,dword ptr ss:
004A712F    50               push eax
004A7130    E8 7FF2F5FF      call <jmp.&kernel32.GetWindowsDirect>
004A7135    83FB 06            cmp ebx,6
004A7138    0F8D B5000000      jge 全国.004A71F3
004A713E    8D85 7CFBFFFF      lea eax,dword ptr ss:       ////回到这
004A7144    8B55 FC            mov edx,dword ptr ss:
004A7147    81C2 B0050000      add edx,5B0
004A714D    E8 3ED2F5FF      call 全国.00404390                   ////取注册名
004A7152    8B85 7CFBFFFF      mov eax,dword ptr ss:
004A7158    8D95 80FBFFFF      lea edx,dword ptr ss:
004A715E    E8 1110F6FF      call 全国.00408174
004A7163    8B85 80FBFFFF      mov eax,dword ptr ss:
004A7169    8B149D D4E14A00    mov edx,dword ptr ds:////取crsky,crsky,leozem,yzez,leozem
                                                                  ////前辈啊~以前破过此软件的牛人吧(偶自己猜的)
004A7170    E8 C3D3F5FF      call 全国.00404538                   ////比较call,是就跳飞
004A7175    74 35            je short 全国.004A71AC
004A7177    8D85 78FBFFFF      lea eax,dword ptr ss:
004A717D    8D95 F8FCFFFF      lea edx,dword ptr ss:
004A7183    B9 00010000      mov ecx,100
004A7188    E8 0FD2F5FF      call 全国.0040439C
004A718D    8D85 78FBFFFF      lea eax,dword ptr ss:
004A7193    BA 04774A00      mov edx,全国.004A7704                ////建立"\windows.ini"
004A7198    E8 57D2F5FF      call 全国.004043F4
004A719D    8B85 78FBFFFF      mov eax,dword ptr ss:
004A71A3    E8 8418F6FF      call 全国.00408A2C
004A71A8    84C0               test al,al
004A71AA    74 3D            je short 全国.004A71E9
004A71AC    8D85 74FBFFFF      lea eax,dword ptr ss:
004A71B2    8D95 F8FCFFFF      lea edx,dword ptr ss:
004A71B8    B9 00010000      mov ecx,100
004A71BD    E8 DAD1F5FF      call 全国.0040439C
004A71C2    8D85 74FBFFFF      lea eax,dword ptr ss:
004A71C8    BA 04774A00      mov edx,全国.004A7704                  
004A71CD    E8 22D2F5FF      call 全国.004043F4
004A71D2    8B85 74FBFFFF      mov eax,dword ptr ss:
004A71D8    E8 2317F6FF      call 全国.00408900
004A71DD    A1 90E74A00      mov eax,dword ptr ds:
004A71E2    8B00               mov eax,dword ptr ds:
004A71E4    E8 370EFDFF      call 全国.00478020
004A71E9    43               inc ebx
004A71EA    83FB 06            cmp ebx,6                            ////循环
004A71ED^ 0F8C 4BFFFFFF      jl 全国.004A713E                     ////跳回上面的004A713E继续比较
……………………………………………………………………
这里省略一部分代码
004A72EC    E8 9FD0F5FF      call 全国.00404390                   ////取注册名
004A72F1    8B8D 64FBFFFF      mov ecx,dword ptr ss:
004A72F7    8D85 68FBFFFF      lea eax,dword ptr ss:
004A72FD    BA B0774A00      mov edx,全国.004A77B0
004A7302    E8 31D1F5FF      call 全国.00404438
004A7307    8B95 68FBFFFF      mov edx,dword ptr ss:
004A730D    58               pop eax
004A730E    E8 151CF9FF      call 全国.00438F28
004A7313    8D85 5CFBFFFF      lea eax,dword ptr ss:
004A7319    8B55 FC            mov edx,dword ptr ss:
004A731C    81C2 B0050000      add edx,5B0
004A7322    E8 69D0F5FF      call 全国.00404390                   ////取注册名和位数
004A7327    8B8D 5CFBFFFF      mov ecx,dword ptr ss:
004A732D    8D85 60FBFFFF      lea eax,dword ptr ss:
004A7333    BA C4774A00      mov edx,全国.004A77C4
004A7338    E8 FBD0F5FF      call 全国.00404438
004A733D    8B95 60FBFFFF      mov edx,dword ptr ss:
004A7343    8B45 FC            mov eax,dword ptr ss:
004A7346    8B80 34030000      mov eax,dword ptr ds:
004A734C    E8 AF0DFBFF      call 全国.00458100
004A7351    8D85 58FBFFFF      lea eax,dword ptr ss:
004A7357    8B55 FC            mov edx,dword ptr ss:
004A735A    81C2 B0060000      add edx,6B0
004A7360    E8 2BD0F5FF      call 全国.00404390                     ////你的注册码
004A7365    8B85 58FBFFFF      mov eax,dword ptr ss:
004A736B    E8 1013F6FF      call 全国.00408680
004A7370    E8 1BEBFFFF      call 全国.004A5E90                     ////eax存放着你的注册码加上1ed2即eax+7890
004A7375    8BD8               mov ebx,eax
004A7377    8B45 F8            mov eax,dword ptr ss:         ////eax=,是不是觉得奇怪??
004A737A    E8 11EBFFFF      call 全国.004A5E90
004A737F    3BD8               cmp ebx,eax                            ////eax真注册码,ebx你的注册码
004A7381    74 05            je short 全国.004A7388               ////相等就OK了
/////////////////////////////////////////////////////////////////////////////////////
细心的话,你会发现跟到最后居然你的注册名没派上什么用场,到是莫名其妙的多了一个
dword ptr ss:这个,而且,有时还会不一样。看来关键是这里了。
好,我们向上找找看吧,在刚才中断的上面就有一个
004A6FC0    E8 DB1AF6FF      call 全国.00408AA0                  ////自效验开始,取文件大小
004A6FC5    85C0               test eax,eax
004A6FC7    75 23            jnz short 全国.004A6FEC               ////这个跳和下面的跳的地方一样
004A6FC9    81BD A4FBFFFF 1032>cmp dword ptr ss:,133210   ////和原文件大小比较,133210比原文件稍大一点,脱壳后就大了n多
004A6FD3    7E 17            jle short 全国.004A6FEC               ////就是这个跳和上面的跳一样,暴的话在这就可以
004A6FD5    8D85 A0FBFFFF      lea eax,dword ptr ss:
004A6FDB    E8 101BF6FF      call 全国.00408AF0                  ////自效验开始
004A6FE0    A1 90E74A00      mov eax,dword ptr ds:
004A6FE5    8B00               mov eax,dword ptr ds:
004A6FE7    E8 3410FDFF      call 全国.00478020                  ////这个call就是程序退出的关键call
                                                                     ////也可以在这nop掉“退出”的call
                                                                     ////以上这些,就可以去掉自效验了
004A6FEC    8B45 FC            mov eax,dword ptr ss:          ////eax=(暗码)**
004A6FEF    6B80 B0070000 75   imul eax,dword ptr ds:,75    ////eax=*75
004A6FF6    05 D4070000      add eax,7D4                           ////eax=eax+7d4
004A6FFB    8945 F8            mov dword ptr ss:,eax          ////看到了吧,就是这个
004A6FFE    8D95 94FBFFFF      lea edx,dword ptr ss:
004A7004    33C0               xor eax,eax
004A7006    E8 09BAF5FF      call 全国.00402A14
004A700B    8B85 94FBFFFF      mov eax,dword ptr ss:
004A7011    8D95 98FBFFFF      lea edx,dword ptr ss:
004A7017    E8 701BF6FF      call 全国.00408B8C
004A701C    8D85 98FBFFFF      lea eax,dword ptr ss:
004A7022    BA 74764A00      mov edx,全国.004A7674                  ////刚才中断的地方
004A7027    E8 C8D3F5FF      call 全国.004043F4
//////////////////////////////////////////////////////////////////
跟到这,会发现关键还是上面这个
dword ptr ds:,只要这个值找到了,一切都好办了。好,在OD里看到我这里的值是11E5500
我就用硬件断点访问中断这个。CTRL+F2重来。一阵中断后,来到这里
004AAED2    56               push esi
004AAED3    8BD8               mov ebx,eax
004AAED5    33C0               xor eax,eax
004AAED7    55               push ebp
004AAED8    68 4CAF4A00      push 全国.004AAF4C
004AAEDD    64:FF30            push dword ptr fs:
004AAEE0    64:8920            mov dword ptr fs:,esp
004AAEE3    E8 F4AEFFFF      call 全国.004A5DDC                   ////这个call*里关于cpu的运算
004AAEE8    E8 AB7BF5FF      call 全国.00402A98                  
004AAEED    8BF0               mov esi,eax                        ////关键值esi=eax
004AAEEF    89B3 B0070000      mov dword ptr ds:,esi
004AAEF5    8D55 F8            lea edx,dword ptr ss:
004AAEF8    8B83 B0070000      mov eax,dword ptr ds:
004AAEFE    E8 41D6F5FF      call 全国.00408544                   ////换成10进制
004AAF03    8B45 F8            mov eax,dword ptr ss:
004AAF06    E8 E194F5FF      call 全国.004043EC                   ////取位数
004AAF0B    48               dec eax                              ////减1
004AAF0C    50               push eax                           ////入栈
004AAF0D    8D55 F4            lea edx,dword ptr ss:         ////的地址给edx
004AAF10    8BC6               mov eax,esi                        ////eax=esi=刚才得到的值(16进制)
004AAF12    E8 2DD6F5FF      call 全国.00408544
004AAF17    8B45 F4            mov eax,dword ptr ss:
004AAF1A    8D4D FC            lea ecx,dword ptr ss:
004AAF1D    5A               pop edx
004AAF1E    E8 0557F8FF      call 全国.00430628                  ////取前n位,n为edx的值
004AAF23    8B45 FC            mov eax,dword ptr ss:
004AAF26    E8 55D7F5FF      call 全国.00408680                  ////关键的转换call,将值换成16进制的
004AAF2B    8983 B0070000      mov dword ptr ds:,eax      ////最后一次停在这,可以看到,过了这里后
                                                                     ////dword ptr ds:里就存放着我们所需
                                                                     ////要的值了,往上看
//////////////////////////////////////////////////////////////////////////
关键call*
004A5DDC    55               push ebp
004A5DDD    8BEC               mov ebp,esp
004A5DDF    83C4 B8            add esp,-48
004A5DE2    53               push ebx
004A5DE3    C745 D8 00000100   mov dword ptr ss:,10000      
004A5DEA    33C0               xor eax,eax
004A5DEC    8945 DC            mov dword ptr ss:,eax
004A5DEF    DF6D D8            fild qword ptr ss:         ////装入ebp-28,即10000
004A5DF2    D80D 885E4A00      fmul dword ptr ds:         ////执行乘法
004A5DF8    DF7D D8            fistp qword ptr ss:          ////Convert top of stack to integer
004A5DFB    9B               wait
004A5DFC    E8 9305F6FF      call <jmp.&kernel32.GetTickCount>    ////获取自windows启动以来经历的时间长度
004A5E01    8BD8               mov ebx,eax
004A5E03    E8 8C05F6FF      call <jmp.&kernel32.GetTickCount>
004A5E08    3BD8               cmp ebx,eax
004A5E0A^ 74 F7            je short 全国.004A5E03
004A5E0C    0F31               rdtsc                              ////CPU 内部定时器的值, 每经过一个 CPU 周期, 这个定时器就加一
004A5E0E    8955 FC            mov dword ptr ss:,edx
004A5E11    8945 F8            mov dword ptr ss:,eax
004A5E14    E8 7B05F6FF      call <jmp.&kernel32.GetTickCount>
004A5E19    8D93 E8030000      lea edx,dword ptr ds:
004A5E1F    3BC2               cmp eax,edx
004A5E21^ 72 F1            jb short 全国.004A5E14
004A5E23    0F31               rdtsc
004A5E25    8955 F4            mov dword ptr ss:,edx
004A5E28    8945 F0            mov dword ptr ss:,eax
004A5E2B    8B45 F4            mov eax,dword ptr ss:
004A5E2E    8945 D0            mov dword ptr ss:,eax
004A5E31    33C0               xor eax,eax
004A5E33    8945 D4            mov dword ptr ss:,eax
004A5E36    DF6D D0            fild qword ptr ss:
004A5E39    DF6D D8            fild qword ptr ss:
004A5E3C    DEC9               fmulp st(1),st
004A5E3E    8B45 F0            mov eax,dword ptr ss:
004A5E41    8945 C8            mov dword ptr ss:,eax
004A5E44    33C0               xor eax,eax
004A5E46    8945 CC            mov dword ptr ss:,eax
004A5E49    DF6D C8            fild qword ptr ss:
004A5E4C    DEC1               faddp st(1),st
004A5E4E    8B45 FC            mov eax,dword ptr ss:
004A5E51    8945 C0            mov dword ptr ss:,eax
004A5E54    33C0               xor eax,eax
004A5E56    8945 C4            mov dword ptr ss:,eax
004A5E59    DF6D C0            fild qword ptr ss:
004A5E5C    DF6D D8            fild qword ptr ss:
004A5E5F    DEC9               fmulp st(1),st
004A5E61    8B45 F8            mov eax,dword ptr ss:
004A5E64    8945 B8            mov dword ptr ss:,eax
004A5E67    33C0               xor eax,eax
004A5E69    8945 BC            mov dword ptr ss:,eax
004A5E6C    DF6D B8            fild qword ptr ss:
004A5E6F    DEC1               faddp st(1),st
004A5E71    DEE9               fsubp st(1),st
004A5E73    D835 8C5E4A00      fdiv dword ptr ds:
004A5E79    DB7D E0            fstp tbyte ptr ss:
004A5E7C    9B               wait
004A5E7D    DB6D E0            fld tbyte ptr ss:
004A5E80    5B               pop ebx
004A5E81    8BE5               mov esp,ebp
004A5E83    5D               pop ebp
004A5E84    C3               retn

以上就是你在最注册码时会出现不一样的原因。因为在这比较你的注册码时,cpu的运算时间在变
所以导致你在004A7377处的真注册码会不一样。跟踪到这时,我已经有点绝望了~用cpu的运算时间
来比较,那不是去死了嘛,于是,我放下这玩意~,就去被人蹂躏了n盘星际争霸后,突然想到,我
们的机器码到现在还没有用到呢,追追这个吧~
刚开始也是没头绪的说,看到是“158433”,我这的机器码,想到了,会不会也是从16进制转成
10进制的呢,找到上面的转换成10进制的call,即call 全国.00408544这个,在OD里运行(已去除
自效验),找到00408544这个地址,F2中断后,点注册软件,OK,中断,停在这里
///////////////////////////////////////////////////////////////////////////////////
00408544    56               push esi                     ////停在这里
00408545    89E6               mov esi,esp
00408547    83EC 10            sub esp,10
0040854A    31C9               xor ecx,ecx
0040854C    52               push edx
0040854D    31D2               xor edx,edx
0040854F    E8 A4FFFFFF      call 全国.004084F8
00408554    89F2               mov edx,esi
00408556    58               pop eax
00408557    E8 C0BCFFFF      call 全国.0040421C
0040855C    83C4 10            add esp,10
0040855F    5E               pop esi
00408560    C3               retn                        ////retn后会来到下面这个地方

///////////////////////////////////////////////////////////////////////////////////
机器码算法
004AA0C4    E8 67E2FAFF      call 全国.00458330
004AA0C9    8D55 FC            lea edx,dword ptr ss:         ////暗码**(一直找的值)
004AA0CC    6983 B0070000 D407>imul eax,dword ptr ds:,7D4    ////取暗码*7d4
004AA0D6    83C0 75            add eax,75                           ////eax=eax+75
004AA0D9    E8 66E4F5FF      call 全国.00408544                     ////转成10进制,得到机器码
004AA0DE    8B55 FC            mov edx,dword ptr ss:         ////上面retn到这里,向上看
004AA0E1    8B83 28050000      mov eax,dword ptr ds:


////////////////////////////////////////////////////////////////////////////////////
好了,到这,总算是追出来了,总结下算法。
在软件通过对cpu的操作,取的一个值即上面的dword ptr ds:这个里的值(m),而后
算出这个m=(m*75)+7d4
通过机器码得到的值:dword ptr ds:里的值(n)而且算出n=(n*7d4)+75
(上面的值全为16进制的)
注册机如下

        int i;
        private void button1_Click(object sender, System.EventArgs e)
        {
                        i=int.Parse(textBox1.Text);   //textBox1里输入机器码
                        i=i-117;
                        i=i/2004;
                        i=i*117;
                        i=i+2004;
                        textBox2.Text=i.ToString();   //textBox2里显示注册码
         }




----------------------------------------------------------------------------------------------
【破解心得】

通过分析该软件,又让我更一步加深了对算法的理解。

----------------------------------------------------------------------------------------------
【破解声明】   我是一只小菜鸟,偶得一点心得,愿与大家分享:)

【版权声明】   本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
                                                                                 文章写于2005-2-18 17:39:10

noTme 发表于 2005-2-19 12:54:13

写的很详细,列为精华!

jackily 发表于 2005-2-19 17:22:00

好文,支持。

飘雪 发表于 2005-2-20 16:13:39

好。顶!!!

Saver 发表于 2005-2-20 22:45:16

谢谢,真是非常感动啊~这是偶混论坛以来的第一个精华啊~~

飘云 发表于 2005-2-21 09:34:33

继续努力,还会有更多精华!

hyd009 发表于 2005-2-27 22:19:52

leozem是龙族的版主,WCR的老大。它有个特点就是盯着一个软件一直破

把这个软件破的没脾气。

不过它现在已收手了

飘云 发表于 2005-2-27 22:23:11

leozem?
难道就是Saver?
那我真是不知高人在此~!

Saver 发表于 2005-3-4 15:50:35

哪有的事嘛~偶整一菜鸟呢~

crazysky 发表于 2005-3-14 22:49:40

8错8错!
页: [1] 2
查看完整版本: 全国电话通1.30分析