欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

慧琦网通-IE安全卫士 1.2 破解过程全面分析 (22千字)

慧琦网通-IE安全卫士 1.2 破解过程全面分析 (22千字)

慧琦网通-IE安全卫士 1.2 破解过程全面分析
软件名称:慧琦网通-IE安全卫士 V1.2
软件简介:在浏览某些网站时,用户的个人电脑配置常常被这些网站偷梁换柱,许多人都碰到过这类情况。比如:网页的主页与标题被人设置,WINDOWS的某些功能被人禁用,每次开机时出现一些莫名其妙的网站等等。
下载地址:http://www.shareware.net.cn/download.asp?id={16A46F8E-45C7-4C22-9B0B-28F5EC38CA05}
未注册版限制:最多只能使用15次并有一些功能限制。
破解工具:W32DASM 8.93汉化版、PE iDentifier 0.7 Beta 汉化版、Hiew6.76、UPX 1.20。
破解人:飞鹰[BCG]
E-mail:flithawk@263.net

该软件的注册过程是通过你输入注册信息后,将软件关闭再打开,进行注册。
通过观察注册表可知,该软件的注册信息是被保存在注册表的 HKLM\SOFTWARE\Microsoft\tpcip\CurrentVersion 项目中;每次启动软件都要与该项中的键值比较,看你是否已经注册并判断注册信息是否正确。
下面,我们用 PE iDentifier 0.7 Beta 汉化版 查看可知该软件被用 UPX 加了壳,现在用 UPX 1.20 的 upx -d 命令进行脱壳后,用 W32DASM 8.93汉化版 反编译该软件,并查找 tpcip\CurrentVersion ,找到以下两处:
第一处:
* Possible StringData Ref from Code Obj ->"SOFTWARE\Microsoft\tpcip\CurrentVersion"
                                  |
:0049A644 68E4A64900              push 0049A6E4
:0049A649 6802000080              push 80000002
* Reference To: advapi32.RegCreateKeyExA, Ord:0000h
                                  |
:0049A64E E851C5F6FF              Call 00406BA4
:0049A653 85C0                    test eax, eax
:0049A655 7563                    jne 0049A6BA
:0049A657 8D55F4                  lea edx, dword ptr [ebp-0C]
:0049A65A 8B8360050000            mov eax, dword ptr [ebx+00000560]
:0049A660 E80F1DFAFF              call 0043C374
:0049A665 8B4DF4                  mov ecx, dword ptr [ebp-0C]
* Possible StringData Ref from Code Obj ->"Rotescode"
                                  |
:0049A668 BA14A74900              mov edx, 0049A714
:0049A66D 8B45FC                  mov eax, dword ptr [ebp-04]
:0049A670 E85F55FDFF              call 0046FBD4
:0049A675 8D55F0                  lea edx, dword ptr [ebp-10]
:0049A678 8B8370050000            mov eax, dword ptr [ebx+00000570]
:0049A67E E8F11CFAFF              call 0043C374
:0049A683 8B4DF0                  mov ecx, dword ptr [ebp-10]
* Possible StringData Ref from Code Obj ->"RotesNum"
                                  |
:0049A686 BA28A74900              mov edx, 0049A728
:0049A68B 8B45FC                  mov eax, dword ptr [ebp-04]
:0049A68E E84155FDFF              call 0046FBD4
:0049A693 8D55EC                  lea edx, dword ptr [ebp-14]
:0049A696 8B8368050000            mov eax, dword ptr [ebx+00000568]
:0049A69C E8D31CFAFF              call 0043C374
:0049A6A1 8B4DEC                  mov ecx, dword ptr [ebp-14]
* Possible StringData Ref from Code Obj ->"Object"
                                  |
:0049A6A4 BA3CA74900              mov edx, 0049A73C
:0049A6A9 8B45FC                  mov eax, dword ptr [ebp-04]
:0049A6AC E82355FDFF              call 0046FBD4
:0049A6B1 8B45FC                  mov eax, dword ptr [ebp-04]
:0049A6B4 50                      push eax
* Reference To: advapi32.RegCloseKey, Ord:0000h
                                  |
:0049A6B5 E8E2C4F6FF              Call 00406B9C
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0049A629(C), :0049A655(C)
|
:0049A6BA 33C0                    xor eax, eax
:0049A6BC 5A                      pop edx
:0049A6BD 59                      pop ecx
:0049A6BE 59                      pop ecx
:0049A6BF 648910                  mov dword ptr fs:[eax], edx
:0049A6C2 68DCA64900              push 0049A6DC
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049A6DA(U)
|
:0049A6C7 8D45EC                  lea eax, dword ptr [ebp-14]
:0049A6CA BA03000000              mov edx, 00000003
:0049A6CF E8C49FF6FF              call 00404698
:0049A6D4 C3                      ret
上面这些汇编代码的作用是:当软件退出时,把你输入的注册信息写入到注册表相关的项目中。
第二处:
* Possible StringData Ref from Code Obj ->"SOFTWARE\Microsoft\tpcip\CurrentVersion"
                                  |
:0049A0FB 6850A44900              push 0049A450
:0049A100 6802000080              push 80000002
* Reference To: advapi32.RegCreateKeyExA, Ord:0000h
                                  |
:0049A105 E89ACAF6FF              Call 00406BA4
:0049A10A 85C0                    test eax, eax
:0049A10C 7548                    jne 0049A156
:0049A10E 8D45FC                  lea eax, dword ptr [ebp-04]
:0049A111 50                      push eax
* Possible StringData Ref from Code Obj ->"PPPPP"
                                  |
:0049A112 B980A44900              mov ecx, 0049A480
* Possible StringData Ref from Code Obj ->"Rotescode"
                                  |
:0049A117 BA90A44900              mov edx, 0049A490
:0049A11C 8B45F0                  mov eax, dword ptr [ebp-10]
:0049A11F E87859FDFF              call 0046FA9C
:0049A124 8D45F8                  lea eax, dword ptr [ebp-08]
:0049A127 50                      push eax
* Possible StringData Ref from Code Obj ->"H012123"
                                  |
:0049A128 B9A4A44900              mov ecx, 0049A4A4
* Possible StringData Ref from Code Obj ->"RotesNum"
                                  |
:0049A12D BAB4A44900              mov edx, 0049A4B4
:0049A132 8B45F0                  mov eax, dword ptr [ebp-10]
:0049A135 E86259FDFF              call 0046FA9C
:0049A13A 8D45F4                  lea eax, dword ptr [ebp-0C]
:0049A13D 50                      push eax
:0049A13E 33C9                    xor ecx, ecx
* Possible StringData Ref from Code Obj ->"Object"
                                  |
:0049A140 BAC8A44900              mov edx, 0049A4C8
:0049A145 8B45F0                  mov eax, dword ptr [ebp-10]
:0049A148 E84F59FDFF              call 0046FA9C
:0049A14D 8B45F0                  mov eax, dword ptr [ebp-10]
:0049A150 50                      push eax
* Reference To: advapi32.RegCloseKey, Ord:0000h
                                  |
:0049A151 E846CAF6FF              Call 00406B9C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049A10C(C)
|
:0049A156 8B45F8                  mov eax, dword ptr [ebp-08]
* Possible StringData Ref from Code Obj ->"AHF000186"
                                  |
:0049A159 BAD8A44900              mov edx, 0049A4D8
:0049A15E E80DA9F6FF              call 00404A70
:0049A163 7516                    jne 0049A17B
:0049A165 8D55D8                  lea edx, dword ptr [ebp-28]
:0049A168 8B45F8                  mov eax, dword ptr [ebp-08]
:0049A16B E884E6F6FF              call 004087F4
:0049A170 8B55D8                  mov edx, dword ptr [ebp-28]
:0049A173 8D45F8                  lea eax, dword ptr [ebp-08]
:0049A176 E891A5F6FF              call 0040470C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049A163(C)
|
:0049A17B 8D4DD4                  lea ecx, dword ptr [ebp-2C]
:0049A17E 8B55F8                  mov edx, dword ptr [ebp-08]
:0049A181 8B45FC                  mov eax, dword ptr [ebp-04]
:0049A184 E85B53FDFF              call 0046F4E4
:0049A189 8B45D4                  mov eax, dword ptr [ebp-2C]==>EAX中存着算出的真注册码
:0049A18C 8B55F4                  mov edx, dword ptr [ebp-0C]==>EDX是存着你输入的注册码
:0049A18F E8DCA8F6FF              call 00404A70
:0049A194 740C                    je 0049A1A2==>判断输入注册码是否正确,正确则跳转
:0049A196 C683E005000001          mov byte ptr [ebx+000005E0], 01
:0049A19D E9BC000000              jmp 0049A25E
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049A194(C)
|
:0049A1A2 C683E005000000          mov byte ptr [ebx+000005E0], 00
:0049A1A9 837DF800                cmp dword ptr [ebp-08], 00000000
:0049A1AD 0F84AB000000            je 0049A25E==>这里如果跳转就OVER了
:0049A1B3 8B45F8                  mov eax, dword ptr [ebp-08]==>将你输入的用户编码赋给eax
:0049A1B6 8A00                    mov al, byte ptr [eax]==>取用户编码的第一位16进制值赋给al
:0049A1B8 04BF                    add al, BF==>al=al+BF
:0049A1BA 2C1A                    sub al, 1A==>al=al-1A
:0049A1BC 731E                    jnb 0049A1DC==>CF位的值是1则不跳,一跳就进入作者设好的陷井了
:0049A1BE 8B45F8                  mov eax, dword ptr [ebp-08]==>将你输入的用户编码赋给eax
:0049A1C1 8A4001                  mov al, byte ptr [eax+01]==>取用户编码的第二位16进制值赋给al
:0049A1C4 04BF                    add al, BF==>al=al+BF
:0049A1C6 2C0C                    sub al, 0C==>al=al-0C
:0049A1C8 7312                    jnb 0049A1DC==>CF位的值是1则不跳,一跳就进入作者设好的陷井了
:0049A1CA 8B45F8                  mov eax, dword ptr [ebp-08]==>将你输入的用户编码赋给eax
:0049A1CD 8A4002                  mov al, byte ptr [eax+02]==>取用户编码的第三位16进制值赋给al
:0049A1D0 04BF                    add al, BF==>al=al+BF
:0049A1D2 2C1A                    sub al, 1A==>al=al-1A
:0049A1D4 722E                    jb 0049A204==>CF位的值是1则跳,一跳就快注册成功了
:0049A1D6 04FA                    add al, FA==>al=al+FA
:0049A1D8 2C06                    sub al, 06==>al=al-06
:0049A1DA 7228                    jb 0049A204==>CF位的值是1则跳,不跳将会进入作者设好的陷井
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0049A1BC(C), :0049A1C8(C)
|
:0049A1DC C683E005000001          mov byte ptr [ebx+000005E0], 01      -------+软
:0049A1E3 B804000000              mov eax, 00000004                    -------+件
                                                                      -------+作
* Referenced by a (U)nconditional or (C)onditional Jump at Address:    -------+者
|:0049A202(C)                                                          -------+布
|                                                                      -------+置
:0049A1E8 8B55F8                  mov edx, dword ptr [ebp-08]          -------+的
:0049A1EB 8A5402FF                mov dl, byte ptr [edx+eax-01]        -------+陷
:0049A1EF 80C2D0                  add dl, D0                          -------+井
:0049A1F2 80EA0A                  sub dl, 0A                          -------+用
:0049A1F5 7207                    jb 0049A1FE                          -------+来
:0049A1F7 C683E005000001          mov byte ptr [ebx+000005E0], 01      -------+破
                                                                      -------+坏
* Referenced by a (U)nconditional or (C)onditional Jump at Address:    -------+你
|:0049A1F5(C)                                                          -------+的
|                                                                      -------+分
:0049A1FE 40                      inc eax                              -------+析
:0049A1FF 83F80A                  cmp eax, 0000000A                    -------+思
:0049A202 75E4                    jne 0049A1E8                        -------+路
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0049A1D4(C), :0049A1DA(C)
|
:0049A204 80BBE005000000          cmp byte ptr [ebx+000005E0], 00
:0049A20B 7551                    jne 0049A25E==>这里如果跳转就OVER了
:0049A20D 8B55FC                  mov edx, dword ptr [ebp-04]
:0049A210 8B8360050000            mov eax, dword ptr [ebx+00000560]
:0049A216 E88921FAFF              call 0043C3A4
:0049A21B 8B55F8                  mov edx, dword ptr [ebp-08]
:0049A21E 8B8370050000            mov eax, dword ptr [ebx+00000570]
:0049A224 E87B21FAFF              call 0043C3A4
:0049A229 8B55F4                  mov edx, dword ptr [ebp-0C]
:0049A22C 8B8368050000            mov eax, dword ptr [ebx+00000568]
:0049A232 E86D21FAFF              call 0043C3A4
:0049A237 33D2                    xor edx, edx
:0049A239 8B8360050000            mov eax, dword ptr [ebx+00000560]
:0049A23F 8B08                    mov ecx, dword ptr [eax]
:0049A241 FF5164                  call [ecx+64]
:0049A244 33D2                    xor edx, edx
:0049A246 8B8370050000            mov eax, dword ptr [ebx+00000570]
:0049A24C 8B08                    mov ecx, dword ptr [eax]
:0049A24E FF5164                  call [ecx+64]
:0049A251 33D2                    xor edx, edx
:0049A253 8B8368050000            mov eax, dword ptr [ebx+00000568]
:0049A259 8B08                    mov ecx, dword ptr [eax]
:0049A25B FF5164                  call [ecx+64]
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0049A19D(U), :0049A1AD(C), :0049A20B(C)
|
:0049A25E 8D55C8                  lea edx, dword ptr [ebp-38]
:0049A261 A1ACDA4900              mov eax, dword ptr [0049DAAC]
:0049A266 8B00                    mov eax, dword ptr [eax]
:0049A268 E89725FCFF              call 0045C804
:0049A26D 8B45C8                  mov eax, dword ptr [ebp-38]
:0049A270 8D55CC                  lea edx, dword ptr [ebp-34]
:0049A273 E81C8AFFFF              call 00492C94
:0049A278 8B4DCC                  mov ecx, dword ptr [ebp-34]
:0049A27B 8D45D0                  lea eax, dword ptr [ebp-30]
* Possible StringData Ref from Code Obj ->"当前版本号:"
                                  |
:0049A27E BAECA44900              mov edx, 0049A4EC
:0049A283 E8F0A6F6FF              call 00404978
:0049A288 8B55D0                  mov edx, dword ptr [ebp-30]
:0049A28B 8B8388050000            mov eax, dword ptr [ebx+00000588]
:0049A291 E80E21FAFF              call 0043C3A4
:0049A296 33D2                    xor edx, edx
:0049A298 8B83F4020000            mov eax, dword ptr [ebx+000002F4]
:0049A29E E835E5FCFF              call 004687D8
:0049A2A3 80BBE005000000          cmp byte ptr [ebx+000005E0], 00
:0049A2AA 7467                    je 0049A313==>这里如果跳转就注册成功了
:0049A2AC 33D2                    xor edx, edx
:0049A2AE 8B8340040000            mov eax, dword ptr [ebx+00000440]
:0049A2B4 8B08                    mov ecx, dword ptr [eax]
:0049A2B6 FF5164                  call [ecx+64]
:0049A2B9 33D2                    xor edx, edx
:0049A2BB 8B83AC040000            mov eax, dword ptr [ebx+000004AC]
:0049A2C1 8B08                    mov ecx, dword ptr [eax]
:0049A2C3 FF5164                  call [ecx+64]
:0049A2C6 33D2                    xor edx, edx
:0049A2C8 8B8398050000            mov eax, dword ptr [ebx+00000598]
:0049A2CE 8B08                    mov ecx, dword ptr [eax]
:0049A2D0 FF5164                  call [ecx+64]
:0049A2D3 33D2                    xor edx, edx
:0049A2D5 8B83E0030000            mov eax, dword ptr [ebx+000003E0]
:0049A2DB 8B08                    mov ecx, dword ptr [eax]
:0049A2DD FF5164                  call [ecx+64]
* Possible StringData Ref from Code Obj ->"本版为未注册试用版,部分功能只能在注册后才能使"
                                        ->"用!"
                                  |
==>未注册版出现的提示
:0049A2E0 BA04A54900              mov edx, 0049A504
:0049A2E5 8B8380050000            mov eax, dword ptr [ebx+00000580]
:0049A2EB E8B420FAFF              call 0043C3A4
:0049A2F0 8D55C4                  lea edx, dword ptr [ebp-3C]
:0049A2F3 8BC3                    mov eax, ebx
:0049A2F5 E87A20FAFF              call 0043C374
:0049A2FA 8D45C4                  lea eax, dword ptr [ebp-3C]
* Possible StringData Ref from Code Obj ->"[未注册功能限制版]"
                                  |
==>未注册版出现的提示
:0049A2FD BA40A54900              mov edx, 0049A540
:0049A302 E82DA6F6FF              call 00404934
:0049A307 8B55C4                  mov edx, dword ptr [ebp-3C]
:0049A30A 8BC3                    mov eax, ebx
:0049A30C E89320FAFF              call 0043C3A4
:0049A311 EB63                    jmp 0049A376
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049A2AA(C)
|

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功