浩浩呼白水 发表于 2006-7-22 22:28:56

破解**公交查询软件工具(含公交查询软件)

算法是wzwgp 写的 , 拿过来和和我一样 正在学习算法的朋友份分享一下 软件难度不大 重要是算法部分 希望大家能看懂
我这调试的时候 和帖子中的地址都不一样 破文我这就不发了 直接转载好了 昨天我那网速慢 让朋友帮忙转过来了 特此向 浩浩呼白水 感谢~~

软件下文中已经负上 不希望大家发表内存注册机 /:D

转自:一蓑烟雨 » 『 软件调试 』 » 菜鸟学习算法,破解**公交查询软件工具(简单)

BY:Nisy7月23日 13:00



【破解软件】**公交查询软件工具
【下载地址】国产软件不提供下载地址
【保护方式】ASPack 2.12 + 注册码
【作者声明】初学Crack,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
【调试环境】Winxp、OllyDBD、PEiD
【软件信息】**公交查询工具,公交直达查询并有换乘查询,是一款绿色软件。


一、追码

ASPack壳,脱壳略过。
OD 载入程序查找字串参考,找到:“注册成功”,向上在004D1498处下断。
注册框显示机器码:94473715811 填入注册码:12345678 

004D1498/.55            PUSH EBP
004D1499|.8BEC          MOV EBP,ESP
004D149B|.33C9          XOR ECX,ECX
004D149D|.51            PUSH ECX
004D149E|.51            PUSH ECX
004D149F|.51            PUSH ECX
004D14A0|.51            PUSH ECX
004D14A1|.51            PUSH ECX
004D14A2|.51            PUSH ECX
004D14A3|.53            PUSH EBX
004D14A4|.56            PUSH ESI
004D14A5|.8BD8          MOV EBX,EAX
004D14A7|.33C0          XOR EAX,EAX
004D14A9|.55            PUSH EBP
004D14AA|.68 A2154D00   PUSH tk.004D15A2
004D14AF|.64:FF30       PUSH DWORD PTR FS:
004D14B2|.64:8920       MOV DWORD PTR FS:,ESP
004D14B5|.8D45 F8       LEA EAX,DWORD PTR SS:
004D14B8|.E8 A7F7FFFF   CALL tk.004D0C64
004D14BD|.8B55 F8       MOV EDX,DWORD PTR SS:      ;=94473715811(机器码)
004D14C0|.8D4D FC       LEA ECX,DWORD PTR SS:
004D14C3|.B8 B8154D00   MOV EAX,tk.004D15B8               ;固定字符串:dflk56321
004D14C8|.E8 13FBFFFF   CALL tk.004D0FE0                  ;算法Call
004D14CD|.8D55 F4       LEA EDX,DWORD PTR SS:
004D14D0|.8B45 FC       MOV EAX,DWORD PTR SS:      ;=O17mt1774m(真码)
004D14D3|.E8 4C75F3FF   CALL tk.00408A24                  
004D14D8|.8B45 F4       MOV EAX,DWORD PTR SS:
004D14DB|.50            PUSH EAX
004D14DC|.8D55 EC       LEA EDX,DWORD PTR SS:
004D14DF|.8B83 00030000 MOV EAX,DWORD PTR DS:
004D14E5|.E8 E2ABF7FF   CALL tk.0044C0CC
004D14EA|.8B45 EC       MOV EAX,DWORD PTR SS:      
004D14ED|.8D55 F0       LEA EDX,DWORD PTR SS:
004D14F0|.E8 2F75F3FF   CALL tk.00408A24                  
004D14F5|.8B55 F0       MOV EDX,DWORD PTR SS:       ;=假码
004D14F8|.58            POP EAX
004D14F9|.E8 9A31F3FF   CALL tk.00404698                  ;比较真假码
004D14FE|.75 54         JNZ SHORT tk.004D1554               ;跳注册失败
004D1500|.A1 605E4D00   MOV EAX,DWORD PTR DS:
004D1505|.C600 01       MOV BYTE PTR DS:,1
004D1508|.8D55 E8       LEA EDX,DWORD PTR SS:
004D150B|.8B83 00030000 MOV EAX,DWORD PTR DS:
004D1511|.E8 B6ABF7FF   CALL tk.0044C0CC
004D1516|.8B45 E8       MOV EAX,DWORD PTR SS:
004D1519|.50            PUSH EAX
004D151A|.A1 28604D00   MOV EAX,DWORD PTR DS:
004D151F|.8B00          MOV EAX,DWORD PTR DS:
004D1521|.B9 CC154D00   MOV ECX,tk.004D15CC               ;ASCII "sn"
004D1526|.BA D8154D00   MOV EDX,tk.004D15D8               ;ASCII "config"
004D152B|.8B30          MOV ESI,DWORD PTR DS:
004D152D|.FF56 04       CALL NEAR DWORD PTR DS:      ;写注册信息
004D1530|.B8 E8154D00   MOV EAX,tk.004D15E8         ;注册成功
004D1535|.E8 062DF6FF   CALL tk.00434240                  
004D153A|.A1 9C5E4D00   MOV EAX,DWORD PTR DS:
004D153F|.8B00          MOV EAX,DWORD PTR DS:
004D1541|.BA FC154D00   MOV EDX,tk.004D15FC

004D14C8 处F7进入算法Call

004D0FE0/$55            PUSH EBP
004D0FE1|.8BEC          MOV EBP,ESP
004D0FE3|.51            PUSH ECX
004D0FE4|.B9 04000000   MOV ECX,4
004D0FE9|>6A 00         /PUSH 0
004D0FEB|.6A 00         |PUSH 0
004D0FED|.49            |DEC ECX
004D0FEE|.^ 75 F9         \JNZ SHORT tk.004D0FE9
004D0FF0|.51            PUSH ECX
004D0FF1|.874D FC       XCHG DWORD PTR SS:,ECX
004D0FF4|.53            PUSH EBX
004D0FF5|.56            PUSH ESI
004D0FF6|.57            PUSH EDI
004D0FF7|.8BF9          MOV EDI,ECX
004D0FF9|.8955 F8       MOV DWORD PTR SS:,EDX
004D0FFC|.8945 FC       MOV DWORD PTR SS:,EAX
004D0FFF|.8B45 FC       MOV EAX,DWORD PTR SS:
004D1002|.E8 3537F3FF   CALL tk.0040473C
004D1007|.8B45 F8       MOV EAX,DWORD PTR SS:
004D100A|.E8 2D37F3FF   CALL tk.0040473C
004D100F|.33C0          XOR EAX,EAX
004D1011|.55            PUSH EBP
004D1012|.68 54114D00   PUSH tk.004D1154
004D1017|.64:FF30       PUSH DWORD PTR FS:
004D101A|.64:8920       MOV DWORD PTR FS:,ESP
004D101D|.8D45 F0       LEA EAX,DWORD PTR SS:
004D1020|.E8 6732F3FF   CALL tk.0040428C
004D1025|.8D55 E8       LEA EDX,DWORD PTR SS:
004D1028|.8B45 F8       MOV EAX,DWORD PTR SS:          ;=机器码
004D102B|.E8 F479F3FF   CALL tk.00408A24
004D1030|.FF75 E8       PUSH DWORD PTR SS:
004D1033|.8D55 E4       LEA EDX,DWORD PTR SS:
004D1036|.8B45 FC       MOV EAX,DWORD PTR SS:
004D1039|.E8 E679F3FF   CALL tk.00408A24
004D103E|.FF75 E4       PUSH DWORD PTR SS:
004D1041|.68 6C114D00   PUSH tk.004D116C                      ; 固定字符串:29T.cOm
004D1046|.8D45 EC       LEA EAX,DWORD PTR SS:
004D1049|.BA 03000000   MOV EDX,3
004D104E|.E8 B935F3FF   CALL tk.0040460C                      ;连接机器码与固定字符串
004D1053|.8B45 EC       MOV EAX,DWORD PTR SS:         
                                                //=94473715811dflk5632129T.cOm
004D1056|.8D4D F4       LEA ECX,DWORD PTR SS:
004D1059|.BA 7C114D00   MOV EDX,tk.004D117C
004D105E|.E8 F9FDFFFF   CALL tk.004D0E5C                      ;运算符串F7进入
004D1063|.8D55 E0       LEA EDX,DWORD PTR SS:
004D1066|.8B45 F4       MOV EAX,DWORD PTR SS:          ;=n
004D1069|.E8 2AFAFFFF   CALL tk.004D0A98                      ;查表踢除非表内字符
004D106E|.8B55 E0       MOV EDX,DWORD PTR SS:
004D1071|.8D45 F4       LEA EAX,DWORD PTR SS:
004D1074|.E8 AB32F3FF   CALL tk.00404324
004D1079|.8B45 F4       MOV EAX,DWORD PTR SS:
004D107C|.E8 CB34F3FF   CALL tk.0040454C
004D1081|.83F8 0A       CMP EAX,0A                           
004D1084|.7D 0B         JGE SHORT tk.004D1091
004D1086|.8D45 F4       LEA EAX,DWORD PTR SS:
004D1089|.8B55 F8       MOV EDX,DWORD PTR SS:
004D108C|.E8 C334F3FF   CALL tk.00404554
004D1091|>8B45 F4       MOV EAX,DWORD PTR SS:
004D1094|.E8 B334F3FF   CALL tk.0040454C
004D1099|.83F8 0A       CMP EAX,0A
004D109C|.7E 16         JLE SHORT tk.004D10B4
004D109E|.8D45 F4       LEA EAX,DWORD PTR SS:
004D10A1|.50            PUSH EAX
004D10A2|.B9 0A000000   MOV ECX,0A
004D10A7|.BA 01000000   MOV EDX,1
004D10AC|.8B45 F4       MOV EAX,DWORD PTR SS:
004D10AF|.E8 F836F3FF   CALL tk.004047AC                      ;取计算结果前10位
004D10B4|>8B45 F4       MOV EAX,DWORD PTR SS:          ;=O17mt1774m
004D10B7|.E8 9034F3FF   CALL tk.0040454C
004D10BC|.8BD8          MOV EBX,EAX
004D10BE|.85DB          TEST EBX,EBX
----------------------中间省略-------------------------------
004D115C   .5E            POP ESI
004D115D   .5B            POP EBX
004D115E   .8BE5          MOV ESP,EBP
004D1160   .5D            POP EBP
004D1161   .C3            RETN                                  ;返回到 004D14CD


004D105E处F7进入运算字符串


004D0E5C/$55            PUSH EBP
004D0E5D|.8BEC          MOV EBP,ESP
004D0E5F|.6A 00         PUSH 0
004D0E61|.6A 00         PUSH 0
004D0E63|.6A 00         PUSH 0
004D0E65|.6A 00         PUSH 0
004D0E67|.6A 00         PUSH 0
004D0E69|.6A 00         PUSH 0
004D0E6B|.6A 00         PUSH 0
004D0E6D|.6A 00         PUSH 0
004D0E6F|.53            PUSH EBX
004D0E70|.56            PUSH ESI
004D0E71|.57            PUSH EDI
004D0E72|.894D F4       MOV DWORD PTR SS:,ECX
004D0E75|.8955 F8       MOV DWORD PTR SS:,EDX
004D0E78|.8945 FC       MOV DWORD PTR SS:,EAX
004D0E7B|.8B45 FC       MOV EAX,DWORD PTR SS:
004D0E7E|.E8 B938F3FF   CALL tk.0040473C
004D0E83|.8B45 F8       MOV EAX,DWORD PTR SS:
004D0E86|.E8 B138F3FF   CALL tk.0040473C
004D0E8B|.33C0          XOR EAX,EAX
004D0E8D|.55            PUSH EBP
004D0E8E|.68 D20F4D00   PUSH tk.004D0FD2
004D0E93|.64:FF30       PUSH DWORD PTR FS:
004D0E96|.64:8920       MOV DWORD PTR FS:,ESP
004D0E99|.BE 01000000   MOV ESI,1
004D0E9E|.8B45 F4       MOV EAX,DWORD PTR SS:
004D0EA1|.E8 E633F3FF   CALL tk.0040428C
004D0EA6|.8B45 FC       MOV EAX,DWORD PTR SS:
004D0EA9|.E8 9E36F3FF   CALL tk.0040454C
004D0EAE|.8BD8          MOV EBX,EAX
004D0EB0|.85DB          TEST EBX,EBX
004D0EB2|.7E 29         JLE SHORT tk.004D0EDD
004D0EB4|.BF 01000000   MOV EDI,1
004D0EB9|>8D45 EC       /LEA EAX,DWORD PTR SS:    ; 循环取出连接字符串偶数位
004D0EBC|.50            |PUSH EAX        
004D0EBD|.8BD7          |MOV EDX,EDI
004D0EBF|.03D2          |ADD EDX,EDX
004D0EC1|.B9 01000000   |MOV ECX,1
004D0EC6|.8B45 FC       |MOV EAX,DWORD PTR SS:
004D0EC9|.E8 DE38F3FF   |CALL tk.004047AC
004D0ECE|.8B55 EC       |MOV EDX,DWORD PTR SS:
004D0ED1|.8D45 F0       |LEA EAX,DWORD PTR SS:
004D0ED4|.E8 7B36F3FF   |CALL tk.00404554
004D0ED9|.47            |INC EDI
004D0EDA|.4B            |DEC EBX
004D0EDB|.^ 75 DC         \JNZ SHORT tk.004D0EB9            ; 得到:47751dl5319.O
004D0EDD|>8D45 FC       LEA EAX,DWORD PTR SS:
004D0EE0|.8B55 F0       MOV EDX,DWORD PTR SS:
004D0EE3|.E8 6C36F3FF   CALL tk.00404554                  ; 再次连接
004D0EE8|.8B45 FC       MOV EAX,DWORD PTR SS:      
                  ; =94473715811dflk5632129T.cOm47751dl5319.O
004D0EEB|.E8 5C36F3FF   CALL tk.0040454C                  ;EAX=28
004D0EF0|.8BD8          MOV EBX,EAX
004D0EF2|.85DB          TEST EBX,EBX
004D0EF4|.7E 46         JLE SHORT tk.004D0F3C
004D0EF6|.BF 01000000   MOV EDI,1
004D0EFB|>8D45 E8       /LEA EAX,DWORD PTR SS:
004D0EFE|.8B55 FC       |MOV EDX,DWORD PTR SS:   ;连接后字符串入EDX
004D0F01|.8A543A FF   |MOV DL,BYTE PTR DS:   ;顺取连接后的字符串
004D0F05|.8B4D F8       |MOV ECX,DWORD PTR SS:   ;=0D 01 14 05 02
004D0F08|.8A4C31 FF   |MOV CL,BYTE PTR DS:
004D0F0C|.32D1          |XOR DL,CL                        ;DL=39 xor D=34
004D0F0E|.E8 6135F3FF   |CALL tk.00404474               ;保存计算结果
004D0F13|.8B55 E8       |MOV EDX,DWORD PTR SS:
004D0F16|.8B45 F4       |MOV EAX,DWORD PTR SS:
004D0F19|.E8 3636F3FF   |CALL tk.00404554               ;保存计算结果
004D0F1E|.8B45 F4       |MOV EAX,DWORD PTR SS:
004D0F21|.8B45 F8       |MOV EAX,DWORD PTR SS:
004D0F24|.E8 2336F3FF   |CALL tk.0040454C               ; 取出(0D 01 14 05 02)
004D0F29|.8D56 01       |LEA EDX,DWORD PTR DS:
004D0F2C|.3BC2          |CMP EAX,EDX           ;取到第几位?
004D0F2E|.7C 03         |JL SHORT tk.004D0F33       ;取完5个跳
004D0F30|.46            |INC ESI
004D0F31|.EB 05         |JMP SHORT tk.004D0F38
004D0F33|>BE 01000000   |MOV ESI,1                        ;再从第1位开始
004D0F38|>47            |INC EDI                        ;取到第几位字符串
004D0F39|.4B            |DEC EBX                        ; EBX=连接字符串位数
004D0F3A|.^ 75 BF         \JNZ SHORT tk.004D0EFB            
    //计算出s1=45 21:0!=3<erii87'73?8@+aBl 2580pi7>0-+M
004D0F3C|>8B45 FC       MOV EAX,DWORD PTR SS:
004D0F3F|.E8 0836F3FF   CALL tk.0040454C                  ;计算结果长度
004D0F44|.8BD8          MOV EBX,EAX
004D0F46|.85DB          TEST EBX,EBX
004D0F48|.7E 48         JLE SHORT tk.004D0F92
004D0F4A|.BF 01000000   MOV EDI,1
004D0F4F|>8D45 E4       /LEA EAX,DWORD PTR SS:   
004D0F52|.8B55 FC       |MOV EDX,DWORD PTR SS:   ;连接后字符串
004D0F55|.8A543A FF   |MOV DL,BYTE PTR DS:   ;顺取连接后的字符串
004D0F59|.8B4D F8       |MOV ECX,DWORD PTR SS:   ; =0D 01 14 05 02
004D0F5C|.8A4C31 FF   |MOV CL,BYTE PTR DS:
004D0F60|.0AD1          |OR DL,CL                         ; DL=39 or D =3D
004D0F62|.E8 0D35F3FF   |CALL tk.00404474
004D0F67|.8B55 E4       |MOV EDX,DWORD PTR SS:
004D0F6A|.8B4D F4       |MOV ECX,DWORD PTR SS:
004D0F6D|.8B09          |MOV ECX,DWORD PTR DS:      
004D0F6F|.8B45 F4       |MOV EAX,DWORD PTR SS:
004D0F72|.E8 2136F3FF   |CALL tk.00404598               ;计算结果连在s1首部
004D0F77|.8B45 F8       |MOV EAX,DWORD PTR SS:
004D0F7A|.E8 CD35F3FF   |CALL tk.0040454C               ; 取出(0D 01 14 05 02)
004D0F7F|.8D56 01       |LEA EDX,DWORD PTR DS:
004D0F82|.3BC2          |CMP EAX,EDX                      ;取到第几位?
004D0F84|.7C 03         |JL SHORT tk.004D0F89             ;取完5个跳
004D0F86|.46            |INC ESI                        ;计数器
004D0F87|.EB 05         |JMP SHORT tk.004D0F8E
004D0F89|>BE 01000000   |MOV ESI,1                        ;再从第1位开始
004D0F8E|>47            |INC EDI                        ;取到第几位字符串
004D0F8F|.4B            |DEC EBX             ; EBX=连接字符串位数
004D0F90|.^ 75 BD         \JNZ SHORT tk.004D0F4F
004D0F92|>8D55 E0       LEA EDX,DWORD PTR SS:
----------------------中间省略-------------------------------
004D0FC4|.8D45 F8       LEA EAX,DWORD PTR SS:
004D0FC7|.BA 02000000   MOV EDX,2
004D0FCC|.E8 DF32F3FF   CALL tk.004042B0
004D0FD1\.C3            RETN
004D0FD2   .^ E9 D92BF3FF   JMP tk.00403BB0
004D0FD7   .^ EB DE         JMP SHORT tk.004D0FB7
004D0FD9   .5F            POP EDI
004D0FDA   .5E            POP ESI
004D0FDB   .5B            POP EBX
004D0FDC   .8BE5          MOV ESP,EBP
004D0FDE   .5D            POP EBP
004D0FDF   .C3            RETN                              ;返回到 004D1063


二、算法小结

1.字符串连结
94473715811(机器码)+dflk56321+29T.cOm(后二组是固定字符)
得到:94473715811dflk5632129T.cOm
 取出连接后的偶数位:47751dl5319.O
 再连接:94473715811dflk5632129T.cOm47751dl5319.O

2.连结字符串与固定数值(0D 01 14 05 02)逐位异或运算
 得到:45 21:0!=3<erii87'73?8@+aBl 2580pi7>0-+M (有不可显字符)

3.连结字符串与固定数值(0D 01 14 05 02)逐位或运算
逆序得到:O/=1?7mt1=774mOc/T9?3777=kmve=3=51?3745=

4.连接二组计算结果
 得到:O/=1?7mt1=774mOc/T9?3777=kmve=3=51?3745=45 21:0!=3<erii87'73?8@+aBl 2580pi7>0-+M
 
5.查表剔除非表内字符
 表:(ASCII "0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()[]{}-+")
 得到:O17mt1774mOcT93777kmve351374545210!3erii87738@+aBl2580pi70-+M
 
6.取出前10位是注册码
 注册码:O17mt1774m

7.注册信息保存在config.ini文件
                                                                                             
                              

[ 本帖最后由 Nisy 于 2006-7-23 12:57 编辑 ]

浩浩呼白水 发表于 2006-7-22 22:31:07

公交查询软件:
         

浩浩呼白水 发表于 2006-7-22 22:32:10

PART2

浩浩呼白水 发表于 2006-7-22 22:33:36

PART3

浩浩呼白水 发表于 2006-7-22 22:37:57

PART4

bfqyygy 发表于 2006-7-23 11:05:28

幸苦了.谢谢!

Nisy 发表于 2006-7-23 15:45:34

兄弟们都来练习一下~

野猫III 发表于 2006-7-23 23:32:09

晕~wzwgp兄都在咱们论坛原创发过些帖~

重复了。

浩浩呼白水 兄弟,发那么多帖带附件呀?请合并为一帖!谢谢!

[ 本帖最后由 野猫III 于 2006-7-23 23:34 编辑 ]

sky3749 发表于 2006-7-25 00:38:13

呵呵,写的不错,学习了!

qq263 发表于 2006-8-25 22:39:15

严重支持啊,好好学习了我要。。。
页: [1]
查看完整版本: 破解**公交查询软件工具(含公交查询软件)