飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5241|回复: 15

全国电话通1.30分析

[复制链接]
  • TA的每日心情
    开心
    2023-12-22 19:44
  • 签到天数: 44 天

    [LV.5]常住居民I

    发表于 2005-2-18 18:07:36 | 显示全部楼层 |阅读模式
    研究了1天终于把全国电话通1.30给搞定了,大家随便看看吧~喜欢的支持下噢~
    【破文作者】   Saver[PYG]

    【 作者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:[esi+FFC41000]
    /////////////////////////////////////////////////////////////////////
    根据堆栈平衡,往下找popad
    008F0B87    83C3 04            add ebx,4
    008F0B8A  ^ EB E1              jmp short 全国电话.008F0B6D
    008F0B8C    FF96 B41F4F00      call dword ptr ds:[esi+4F1FB4]
    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 [ebp+FFFFFB98]
    :004A7032 8D85F8FEFFFF            lea eax, dword ptr [ebp+FFFFFEF8]
    :004A7038 B9FF000000              mov ecx, 000000FF
    :004A703D E886D3F5FF              call 004043C8
    :004A7042 8D8590FBFFFF            lea eax, dword ptr [ebp+FFFFFB90]
    :004A7048 8D95F8FEFFFF            lea edx, dword ptr [ebp+FFFFFEF8]
    :004A704E E83DD3F5FF              call 00404390
    :004A7053 8B8D90FBFFFF            mov ecx, dword ptr [ebp+FFFFFB90]
    :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 [ebp+FFFFFEFC]
    :004A8AAB 8D8500FFFFFF            lea eax, dword ptr [ebp+FFFFFF00]
    :004A8AB1 B9FF000000              mov ecx, 000000FF
    :004A8AB6 E80DB9F5FF              call 004043C8
    :004A8ABB 8D85F4FEFFFF            lea eax, dword ptr [ebp+FFFFFEF4]
    :004A8AC1 8D9500FFFFFF            lea edx, dword ptr [ebp+FFFFFF00]
    :004A8AC7 E8C4B8F5FF              call 00404390
    :004A8ACC 8B8DF4FEFFFF            mov ecx, dword ptr [ebp+FFFFFEF4]
    :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 [ebp+FFFFFEFC]
    :004A8D0B 8D8500FFFFFF            lea eax, dword ptr [ebp+FFFFFF00]
    :004A8D11 B9FF000000              mov ecx, 000000FF
    :004A8D16 E8ADB6F5FF              call 004043C8
    :004A8D1B 8D85F4FEFFFF            lea eax, dword ptr [ebp+FFFFFEF4]
    :004A8D21 8D9500FFFFFF            lea edx, dword ptr [ebp+FFFFFF00]
    :004A8D27 E864B6F5FF              call 00404390
    :004A8D2C 8B8DF4FEFFFF            mov ecx, dword ptr [ebp+FFFFFEF4]
    :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:[ebp-468]
    004A7032    8D85 F8FEFFFF      lea eax,dword ptr ss:[ebp-108]
    004A7038    B9 FF000000        mov ecx,0FF
    004A703D    E8 86D3F5FF        call 全国.004043C8
    004A7042    8D85 90FBFFFF      lea eax,dword ptr ss:[ebp-470]
    004A7048    8D95 F8FEFFFF      lea edx,dword ptr ss:[ebp-108]
    004A704E    E8 3DD3F5FF        call 全国.00404390
    004A7053    8B8D 90FBFFFF      mov ecx,dword ptr ss:[ebp-470]
    004A7059    B2 01              mov dl,1
    004A705B    A1 E42C4300        mov eax,dword ptr ds:[432CE4]
    004A7060    E8 2FBDF8FF        call 全国.00432D94
    004A7065    A3 24FF4A00        mov dword ptr ds:[4AFF24],eax
    004A706A    6A 00              push 0
    004A706C    8D85 8CFBFFFF      lea eax,dword ptr ss:[ebp-474]
    004A7072    50                 push eax
    004A7073    B9 88764A00        mov ecx,全国.004A7688                  
    004A7078    BA 98764A00        mov edx,全国.004A7698                 
    004A707D    A1 24FF4A00        mov eax,dword ptr ds:[4AFF24]
    004A7082    8B18               mov ebx,dword ptr ds:[eax]
    004A7084    FF13               call dword ptr ds:[ebx]
    004A7086    8B95 8CFBFFFF      mov edx,dword ptr ss:[ebp-474]
    004A708C    8D85 F8FDFFFF      lea eax,dword ptr ss:[ebp-208]
    004A7092    B9 FF000000        mov ecx,0FF
    004A7097    E8 2CD3F5FF        call 全国.004043C8
    004A709C    68 AC764A00        push 全国.004A76AC
    004A70A1    8D85 88FBFFFF      lea eax,dword ptr ss:[ebp-478]
    004A70A7    50                 push eax
    004A70A8    B9 C0764A00        mov ecx,全国.004A76C0                 
    004A70AD    BA D4764A00        mov edx,全国.004A76D4                  
    004A70B2    A1 24FF4A00        mov eax,dword ptr ds:[4AFF24]
    004A70B7    8B18               mov ebx,dword ptr ds:[eax]
    004A70B9    FF13               call dword ptr ds:[ebx]              ////取注册名
    004A70BB    8B95 88FBFFFF      mov edx,dword ptr ss:[ebp-478]       ////edx=[ebp-478]里的值,即为你的注册名
    004A70C1    8B45 FC            mov eax,dword ptr ss:[ebp-4]
    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:[ebp-47C]
    004A70DE    50                 push eax
    004A70DF    B9 F0764A00        mov ecx,全国.004A76F0               
    004A70E4    BA D4764A00        mov edx,全国.004A76D4               
    004A70E9    A1 24FF4A00        mov eax,dword ptr ds:[4AFF24]
    004A70EE    8B18               mov ebx,dword ptr ds:[eax]
    004A70F0    FF13               call dword ptr ds:[ebx]              ////取注册码
    004A70F2    8B95 84FBFFFF      mov edx,dword ptr ss:[ebp-47C]       ////edx=[ebp-47c]为你的注册码
    004A70F8    8B45 FC            mov eax,dword ptr ss:[ebp-4]         ////eax=[ebp-4]里的值
    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:[ebp-4]
    004A710D    80B8 B0060000 00   cmp byte ptr ds:[eax+6B0],0          ////注册码是否为空
    004A7114    75 0C              jnz short 全国.004A7122              ////为空就不跳
    004A7116    8B45 FC            mov eax,dword ptr ss:[ebp-4]
    004A7119    66:C780 B0060000 0>mov word ptr ds:[eax+6B0],3001
    004A7122    33DB               xor ebx,ebx                          ////清0
    004A7124    68 00010000        push 100
    004A7129    8D85 F8FCFFFF      lea eax,dword ptr ss:[ebp-308]
    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:[ebp-484]       ////回到这
    004A7144    8B55 FC            mov edx,dword ptr ss:[ebp-4]
    004A7147    81C2 B0050000      add edx,5B0
    004A714D    E8 3ED2F5FF        call 全国.00404390                   ////取注册名
    004A7152    8B85 7CFBFFFF      mov eax,dword ptr ss:[ebp-484]
    004A7158    8D95 80FBFFFF      lea edx,dword ptr ss:[ebp-480]
    004A715E    E8 1110F6FF        call 全国.00408174
    004A7163    8B85 80FBFFFF      mov eax,dword ptr ss:[ebp-480]
    004A7169    8B149D D4E14A00    mov edx,dword ptr ds:[ebx*4+4AE1D4]  ////取crsky,crsky[BCG],leozem[YCG],yzez,leozem
                                                                        ////前辈啊~以前破过此软件的牛人吧(偶自己猜的)
    004A7170    E8 C3D3F5FF        call 全国.00404538                   ////比较call,是就跳飞
    004A7175    74 35              je short 全国.004A71AC
    004A7177    8D85 78FBFFFF      lea eax,dword ptr ss:[ebp-488]
    004A717D    8D95 F8FCFFFF      lea edx,dword ptr ss:[ebp-308]
    004A7183    B9 00010000        mov ecx,100
    004A7188    E8 0FD2F5FF        call 全国.0040439C
    004A718D    8D85 78FBFFFF      lea eax,dword ptr ss:[ebp-488]
    004A7193    BA 04774A00        mov edx,全国.004A7704                ////建立"\windows.ini"
    004A7198    E8 57D2F5FF        call 全国.004043F4
    004A719D    8B85 78FBFFFF      mov eax,dword ptr ss:[ebp-488]
    004A71A3    E8 8418F6FF        call 全国.00408A2C
    004A71A8    84C0               test al,al
    004A71AA    74 3D              je short 全国.004A71E9
    004A71AC    8D85 74FBFFFF      lea eax,dword ptr ss:[ebp-48C]
    004A71B2    8D95 F8FCFFFF      lea edx,dword ptr ss:[ebp-308]
    004A71B8    B9 00010000        mov ecx,100
    004A71BD    E8 DAD1F5FF        call 全国.0040439C
    004A71C2    8D85 74FBFFFF      lea eax,dword ptr ss:[ebp-48C]
    004A71C8    BA 04774A00        mov edx,全国.004A7704                  
    004A71CD    E8 22D2F5FF        call 全国.004043F4
    004A71D2    8B85 74FBFFFF      mov eax,dword ptr ss:[ebp-48C]
    004A71D8    E8 2317F6FF        call 全国.00408900
    004A71DD    A1 90E74A00        mov eax,dword ptr ds:[4AE790]
    004A71E2    8B00               mov eax,dword ptr ds:[eax]
    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:[ebp-49C]
    004A72F7    8D85 68FBFFFF      lea eax,dword ptr ss:[ebp-498]
    004A72FD    BA B0774A00        mov edx,全国.004A77B0
    004A7302    E8 31D1F5FF        call 全国.00404438
    004A7307    8B95 68FBFFFF      mov edx,dword ptr ss:[ebp-498]
    004A730D    58                 pop eax
    004A730E    E8 151CF9FF        call 全国.00438F28
    004A7313    8D85 5CFBFFFF      lea eax,dword ptr ss:[ebp-4A4]
    004A7319    8B55 FC            mov edx,dword ptr ss:[ebp-4]
    004A731C    81C2 B0050000      add edx,5B0
    004A7322    E8 69D0F5FF        call 全国.00404390                   ////取注册名和位数
    004A7327    8B8D 5CFBFFFF      mov ecx,dword ptr ss:[ebp-4A4]
    004A732D    8D85 60FBFFFF      lea eax,dword ptr ss:[ebp-4A0]
    004A7333    BA C4774A00        mov edx,全国.004A77C4
    004A7338    E8 FBD0F5FF        call 全国.00404438
    004A733D    8B95 60FBFFFF      mov edx,dword ptr ss:[ebp-4A0]
    004A7343    8B45 FC            mov eax,dword ptr ss:[ebp-4]
    004A7346    8B80 34030000      mov eax,dword ptr ds:[eax+334]
    004A734C    E8 AF0DFBFF        call 全国.00458100
    004A7351    8D85 58FBFFFF      lea eax,dword ptr ss:[ebp-4A8]
    004A7357    8B55 FC            mov edx,dword ptr ss:[ebp-4]
    004A735A    81C2 B0060000      add edx,6B0
    004A7360    E8 2BD0F5FF        call 全国.00404390                     ////你的注册码
    004A7365    8B85 58FBFFFF      mov eax,dword ptr ss:[ebp-4A8]
    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:[ebp-8]           ////eax=[ebp-8],是不是觉得奇怪??
    004A737A    E8 11EBFFFF        call 全国.004A5E90
    004A737F    3BD8               cmp ebx,eax                            ////eax真注册码,ebx你的注册码
    004A7381    74 05              je short 全国.004A7388                 ////相等就OK了
    /////////////////////////////////////////////////////////////////////////////////////
    细心的话,你会发现跟到最后居然你的注册名没派上什么用场,到是莫名其妙的多了一个
    dword ptr ss:[ebp-8]这个,而且,有时还会不一样。看来关键是这里了。
    好,我们向上找找看吧,在刚才中断的上面就有一个
    004A6FC0    E8 DB1AF6FF        call 全国.00408AA0                    ////自效验开始,取文件大小
    004A6FC5    85C0               test eax,eax
    004A6FC7    75 23              jnz short 全国.004A6FEC               ////这个跳和下面的跳的地方一样
    004A6FC9    81BD A4FBFFFF 1032>cmp dword ptr ss:[ebp-45C],133210     ////和原文件大小比较,133210比原文件稍大一点,脱壳后就大了n多
    004A6FD3    7E 17              jle short 全国.004A6FEC               ////就是这个跳和上面的跳一样,暴的话在这就可以
    004A6FD5    8D85 A0FBFFFF      lea eax,dword ptr ss:[ebp-460]
    004A6FDB    E8 101BF6FF        call 全国.00408AF0                    ////自效验开始
    004A6FE0    A1 90E74A00        mov eax,dword ptr ds:[4AE790]
    004A6FE5    8B00               mov eax,dword ptr ds:[eax]
    004A6FE7    E8 3410FDFF        call 全国.00478020                    ////这个call就是程序退出的关键call
                                                                         ////也可以在这nop掉“退出”的call
                                                                         ////以上这些,就可以去掉自效验了
    004A6FEC    8B45 FC            mov eax,dword ptr ss:[ebp-4]          ////eax=[ebp-4](暗码)**
    004A6FEF    6B80 B0070000 75   imul eax,dword ptr ds:[eax+7B0],75    ////eax=[eax+7b0]*75
    004A6FF6    05 D4070000        add eax,7D4                           ////eax=eax+7d4
    004A6FFB    8945 F8            mov dword ptr ss:[ebp-8],eax          ////看到了吧,就是这个
    004A6FFE    8D95 94FBFFFF      lea edx,dword ptr ss:[ebp-46C]
    004A7004    33C0               xor eax,eax
    004A7006    E8 09BAF5FF        call 全国.00402A14
    004A700B    8B85 94FBFFFF      mov eax,dword ptr ss:[ebp-46C]
    004A7011    8D95 98FBFFFF      lea edx,dword ptr ss:[ebp-468]
    004A7017    E8 701BF6FF        call 全国.00408B8C
    004A701C    8D85 98FBFFFF      lea eax,dword ptr ss:[ebp-468]
    004A7022    BA 74764A00        mov edx,全国.004A7674                  ////刚才中断的地方
    004A7027    E8 C8D3F5FF        call 全国.004043F4
    //////////////////////////////////////////////////////////////////
    跟到这,会发现关键还是上面这个
    dword ptr ds:[eax+7B0],只要这个值找到了,一切都好办了。好,在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:[eax]
    004AAEE0    64:8920            mov dword ptr fs:[eax],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:[ebx+7B0],esi
    004AAEF5    8D55 F8            lea edx,dword ptr ss:[ebp-8]
    004AAEF8    8B83 B0070000      mov eax,dword ptr ds:[ebx+7B0]
    004AAEFE    E8 41D6F5FF        call 全国.00408544                   ////换成10进制
    004AAF03    8B45 F8            mov eax,dword ptr ss:[ebp-8]
    004AAF06    E8 E194F5FF        call 全国.004043EC                   ////取位数
    004AAF0B    48                 dec eax                              ////减1
    004AAF0C    50                 push eax                             ////入栈
    004AAF0D    8D55 F4            lea edx,dword ptr ss:[ebp-C]         ////[ebp-c]的地址给edx
    004AAF10    8BC6               mov eax,esi                          ////eax=esi=刚才得到的值(16进制)
    004AAF12    E8 2DD6F5FF        call 全国.00408544
    004AAF17    8B45 F4            mov eax,dword ptr ss:[ebp-C]
    004AAF1A    8D4D FC            lea ecx,dword ptr ss:[ebp-4]
    004AAF1D    5A                 pop edx
    004AAF1E    E8 0557F8FF        call 全国.00430628                    ////取前n位,n为edx的值
    004AAF23    8B45 FC            mov eax,dword ptr ss:[ebp-4]
    004AAF26    E8 55D7F5FF        call 全国.00408680                    ////关键的转换call,将值换成16进制的
    004AAF2B    8983 B0070000      mov dword ptr ds:[ebx+7B0],eax        ////最后一次停在这,可以看到,过了这里后
                                                                         ////dword ptr ds:[ebx+7B0]里就存放着我们所需
                                                                         ////要的值了,往上看
    //////////////////////////////////////////////////////////////////////////
    关键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:[ebp-28],10000      
    004A5DEA    33C0               xor eax,eax
    004A5DEC    8945 DC            mov dword ptr ss:[ebp-24],eax
    004A5DEF    DF6D D8            fild qword ptr ss:[ebp-28]           ////装入ebp-28,即10000
    004A5DF2    D80D 885E4A00      fmul dword ptr ds:[4A5E88]           ////执行乘法
    004A5DF8    DF7D D8            fistp qword ptr ss:[ebp-28]          ////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:[ebp-4],edx
    004A5E11    8945 F8            mov dword ptr ss:[ebp-8],eax
    004A5E14    E8 7B05F6FF        call <jmp.&kernel32.GetTickCount>
    004A5E19    8D93 E8030000      lea edx,dword ptr ds:[ebx+3E8]
    004A5E1F    3BC2               cmp eax,edx
    004A5E21  ^ 72 F1              jb short 全国.004A5E14
    004A5E23    0F31               rdtsc
    004A5E25    8955 F4            mov dword ptr ss:[ebp-C],edx
    004A5E28    8945 F0            mov dword ptr ss:[ebp-10],eax
    004A5E2B    8B45 F4            mov eax,dword ptr ss:[ebp-C]
    004A5E2E    8945 D0            mov dword ptr ss:[ebp-30],eax
    004A5E31    33C0               xor eax,eax
    004A5E33    8945 D4            mov dword ptr ss:[ebp-2C],eax
    004A5E36    DF6D D0            fild qword ptr ss:[ebp-30]
    004A5E39    DF6D D8            fild qword ptr ss:[ebp-28]
    004A5E3C    DEC9               fmulp st(1),st
    004A5E3E    8B45 F0            mov eax,dword ptr ss:[ebp-10]
    004A5E41    8945 C8            mov dword ptr ss:[ebp-38],eax
    004A5E44    33C0               xor eax,eax
    004A5E46    8945 CC            mov dword ptr ss:[ebp-34],eax
    004A5E49    DF6D C8            fild qword ptr ss:[ebp-38]
    004A5E4C    DEC1               faddp st(1),st
    004A5E4E    8B45 FC            mov eax,dword ptr ss:[ebp-4]
    004A5E51    8945 C0            mov dword ptr ss:[ebp-40],eax
    004A5E54    33C0               xor eax,eax
    004A5E56    8945 C4            mov dword ptr ss:[ebp-3C],eax
    004A5E59    DF6D C0            fild qword ptr ss:[ebp-40]
    004A5E5C    DF6D D8            fild qword ptr ss:[ebp-28]
    004A5E5F    DEC9               fmulp st(1),st
    004A5E61    8B45 F8            mov eax,dword ptr ss:[ebp-8]
    004A5E64    8945 B8            mov dword ptr ss:[ebp-48],eax
    004A5E67    33C0               xor eax,eax
    004A5E69    8945 BC            mov dword ptr ss:[ebp-44],eax
    004A5E6C    DF6D B8            fild qword ptr ss:[ebp-48]
    004A5E6F    DEC1               faddp st(1),st
    004A5E71    DEE9               fsubp st(1),st
    004A5E73    D835 8C5E4A00      fdiv dword ptr ds:[4A5E8C]
    004A5E79    DB7D E0            fstp tbyte ptr ss:[ebp-20]
    004A5E7C    9B                 wait
    004A5E7D    DB6D E0            fld tbyte ptr ss:[ebp-20]
    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:[ebp-4]           ////暗码**(一直找的值)
    004AA0CC    6983 B0070000 D407>imul eax,dword ptr ds:[ebx+7B0],7D4    ////取暗码[ebx+7b0]*7d4
    004AA0D6    83C0 75            add eax,75                             ////eax=eax+75
    004AA0D9    E8 66E4F5FF        call 全国.00408544                     ////转成10进制,得到机器码
    004AA0DE    8B55 FC            mov edx,dword ptr ss:[ebp-4]           ////上面retn到这里,向上看
    004AA0E1    8B83 28050000      mov eax,dword ptr ds:[ebx+528]


    ////////////////////////////////////////////////////////////////////////////////////
    好了,到这,总算是追出来了,总结下算法。
    在软件通过对cpu的操作,取的一个值即上面的dword ptr ds:[ebx+7B0]这个里的值(m),而后
    算出这个m=(m*75)+7d4
    通过机器码得到的值:dword ptr ds:[ebx+7B0]里的值(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
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-2-19 12:54:13 | 显示全部楼层
    写的很详细,列为精华!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-2-19 17:22:00 | 显示全部楼层
    好文,支持。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-2-20 16:13:39 | 显示全部楼层
    好。顶!!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-12-22 19:44
  • 签到天数: 44 天

    [LV.5]常住居民I

     楼主| 发表于 2005-2-20 22:45:16 | 显示全部楼层
    谢谢,真是非常感动啊~这是偶混论坛以来的第一个精华啊~~
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2005-2-21 09:34:33 | 显示全部楼层
    继续努力,还会有更多精华!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2005-2-27 22:19:52 | 显示全部楼层
    leozem是龙族的版主,WCR的老大。它有个特点就是盯着一个软件一直破

    把这个软件破的没脾气。

    不过它现在已收手了
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2005-2-27 22:23:11 | 显示全部楼层
    leozem?
    难道就是Saver?
    那我真是不知高人在此~!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-12-22 19:44
  • 签到天数: 44 天

    [LV.5]常住居民I

     楼主| 发表于 2005-3-4 15:50:35 | 显示全部楼层
    哪有的事嘛~偶整一菜鸟呢~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-6-4 20:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2005-3-14 22:49:40 | 显示全部楼层
    8错8错!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表