==================================================================================
【工程作者】深海游侠【CZG】【OCN】
【作者邮箱】shenhaiyouxia@163.com
==================================================================================
【软件名称】网络安全卫士2005 5.2
【下载地址】http://www.newhua.com/soft/25042.htm
【所受限制】时间限制
【加壳保护】ASPack加壳
【破解目的】纯属兴趣,如有失误之处,请各位大侠指点!
【软件介绍】
网络安全卫士2005》是一款强大的网络安全与维护工具,全面兼容Windows98、WindowsME、Windows2000及WindowsXP、Windows2003等操作系统。其主要功能和
特色包括:
1、方便的系统修复功能。
主要包括如下功能:快速修复使用注册表编辑器的限制、禁止修改 IE 主页的限制、IE浏览器标题、隐藏硬盘等等……
2、超强的网络安全功能。
现在有部分网站恶意修改您和浏览器主页和标题,或者禁用您的注册表编辑、控制面板、文件夹选项等,您可以通过此项功能快速恢复它,当然您也可以通过此项功能来禁用部分功能以防治非法用户使用或修改您的电脑,保护您的系统安全。
3、强大的广告屏蔽功能。
我们在浏览网站的时候只要一打开某些网站,就会弹出一个或多个广告,不但消耗了大量的系统,而且给我们的工作带来不便,您可以通过此项功能来屏蔽掉大多数的广告……
4、网站地址、内容过滤。
网络安全卫士使用先进的网址拦截技术和网页内容过滤技术对浏览器进行实时监控,当用户有访问色情、暴力、反动等网站时,网络安全卫士会立刻屏蔽这些访问请求,指向用户指定的网址。用户也可以通过自定义“关键字”来屏蔽部分网站。
5、安全的历史清理功能。
当您在公用机房或网吧上网后,会留下您的上网记录,您可以通过此项功能快速清除它。
6、实用的网页免疫功能。
通过此项功能可以彻底防护网页脚本病毒……
7、随系统启动项目管理功能:可以非常方便的管理启动时自动运行的程序。
8、Active控件免疫功能:可以彻底屏蔽我们上网时那些烦人的弹出式安装证书对话框。
9、网络浏览加速功能:可以使用户根据需要有选择地禁止网页中的flash、图片、动画的显示,声音和视频的播放等,真正地加快网页的浏览速度。
10、IE的自动保护功能:包括自动保护IE首页,标题等等。
11、程序运行限制功能:对大多数家长而言,最烦恼的莫过于无法有效地控制小孩运行电脑中的程序,如聊天程序/游戏程序等等……这个功能可以解除您的烦恼,只要您设置了程序权限后,电脑中就只能运行您设置在左面列表中的应用程序了。
此项功能对家庭用户或者公用电脑有很大的实用价值。
==================================================================================
【工程平台】Win ME
【调试工具】Ollydbg,peid,AspackDie,W32DASM,windows自带计算器
【脱壳方式】专用工具脱壳
==================================================================================
【破解过程】
先查壳,ASPack 2.12 -> Alexey Solodovnikov 工具伺候~ Borland Delphi 6.0 - 7.0,用TRW2000载入,恩?黑屏!晕~不想浪费时间找他的反调试了,直接OD载入,恩,不反OD,然后W32DASM反编译,找到“注册码错误”最后OD下断,程序顺利断到此处!
004CA6A8 |. 68 AFA74C00 PUSH UNPACKED.004CA7AF
004CA6AD |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004CA6B0 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004CA6B3 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004CA6B6 |. 8B83 FC020000 MOV EAX,DWORD PTR DS:[EBX+2FC]
004CA6BC |. E8 CF38F7FF CALL UNPACKED.0043DF90
004CA6C1 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] //EAX=假码
004CA6C4 |. 50 PUSH EAX
004CA6C5 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004CA6C8 |. 8B83 F8020000 MOV EAX,DWORD PTR DS:[EBX+2F8]
004CA6CE |. E8 BD38F7FF CALL UNPACKED.0043DF90
004CA6D3 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004CA6D6 |. 50 PUSH EAX
004CA6D7 |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
004CA6DA |. 8B83 F4020000 MOV EAX,DWORD PTR DS:[EBX+2F4]
004CA6E0 |. E8 AB38F7FF CALL UNPACKED.0043DF90
004CA6E5 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] //EDX=用户名
004CA6E8 |. 8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314]
004CA6EE |. 59 POP ECX
004CA6EF |. E8 A4EDFFFF CALL UNPACKED.004C9498 //毫无疑问,关键CALL,跟进!
004CA6F4 |. 84C0 TEST AL,AL
004CA6F6 |. 75 2C JNZ SHORT UNPACKED.004CA724 //关键跳
004CA6F8 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CA6FB |. BA C4A74C00 MOV EDX,UNPACKED.004CA7C4
004CA700 |. E8 3B9FF3FF CALL UNPACKED.00404640
004CA705 |. 6A 40 PUSH 40
004CA707 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CA70A |. E8 65A3F3FF CALL UNPACKED.00404A74
004CA70F |. 8BD0 MOV EDX,EAX
004CA711 |. B9 F8A74C00 MOV ECX,UNPACKED.004CA7F8
004CA716 |. A1 38B64D00 MOV EAX,DWORD PTR DS:[4DB638]
004CA71B |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004CA71D |. E8 0238F9FF CALL UNPACKED.0045DF24 //注册码错误!
004CA722 |. EB 68 JMP SHORT UNPACKED.004CA78C
004CA724 |> 68 0CA84C00 PUSH UNPACKED.004CA80C
004CA729 |. 8BB3 14030000 MOV ESI,DWORD PTR DS:[EBX+314]
004CA72F |. FF76 48 PUSH DWORD PTR DS:[ESI+48]
004CA732 |. 68 38A84C00 PUSH UNPACKED.004CA838
004CA737 |. 68 44A84C00 PUSH UNPACKED.004CA844
004CA73C |. FF76 54 PUSH DWORD PTR DS:[ESI+54]
004CA73F |. 68 38A84C00 PUSH UNPACKED.004CA838
004CA744 |. 68 58A84C00 PUSH UNPACKED.004CA858
004CA749 |. FF76 5C PUSH DWORD PTR DS:[ESI+5C]
004CA74C |. 68 38A84C00 PUSH UNPACKED.004CA838
004CA751 |. 68 6CA84C00 PUSH UNPACKED.004CA86C
004CA756 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CA759 |. BA 0A000000 MOV EDX,0A
004CA75E |. E8 D9A1F3FF CALL UNPACKED.0040493C
004CA763 |. 6A 40 PUSH 40
004CA765 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CA768 |. E8 07A3F3FF CALL UNPACKED.00404A74
004CA76D |. 8BD0 MOV EDX,EAX
004CA76F |. B9 F8A74C00 MOV ECX,UNPACKED.004CA7F8
004CA774 |. A1 38B64D00 MOV EAX,DWORD PTR DS:[4DB638]
004CA779 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004CA77B |. E8 A437F9FF CALL UNPACKED.0045DF24
004CA780 |> A1 38B64D00 MOV EAX,DWORD PTR DS:[4DB638]
004CA785 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004CA787 |. E8 F436F9FF CALL UNPACKED.0045DE80
004CA78C |> 33C0 XOR EAX,EAX
004CA78E |. 5A POP EDX
004CA78F |. 59 POP ECX
004CA790 |. 59 POP ECX
004CA791 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CA794 |. 68 B6A74C00 PUSH UNPACKED.004CA7B6
004CA799 |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004CA79C |. BA 03000000 MOV EDX,3
004CA7A1 |. E8 269EF3FF CALL UNPACKED.004045CC
004CA7A6 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CA7A9 |. E8 FA9DF3FF CALL UNPACKED.004045A8
004CA7AE \. C3 RETN
004CA7AF .^ E9 FC97F3FF JMP UNPACKED.00403FB0
004CA7B4 .^ EB E3 JMP SHORT UNPACKED.004CA799
004CA7B6 . 5E POP ESI
004CA7B7 . 5B POP EBX
004CA7B8 . 8BE5 MOV ESP,EBP
004CA7BA . 5D POP EBP
004CA7BB . C3 RETN
004C9498 /$ 55 PUSH EBP
004C9499 |. 8BEC MOV EBP,ESP
004C949B |. 83C4 F0 ADD ESP,-10
004C949E |. 53 PUSH EBX
004C949F |. 33DB XOR EBX,EBX
004C94A1 |. 895D F0 MOV DWORD PTR SS:[EBP-10],EBX
004C94A4 |. 895D F4 MOV DWORD PTR SS:[EBP-C],EBX
004C94A7 |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
004C94AA |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
004C94AD |. 8BD8 MOV EBX,EAX
004C94AF |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004C94B2 |. E8 ADB5F3FF CALL UNPACKED.00404A64
004C94B7 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004C94BA |. E8 A5B5F3FF CALL UNPACKED.00404A64
004C94BF |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
004C94C2 |. E8 9DB5F3FF CALL UNPACKED.00404A64
004C94C7 |. 33C0 XOR EAX,EAX
004C94C9 |. 55 PUSH EBP
004C94CA |. 68 82954C00 PUSH UNPACKED.004C9582
004C94CF |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004C94D2 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004C94D5 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] //EAX=用户名
004C94D8 |. E8 9FB3F3FF CALL UNPACKED.0040487C //取用户名位数
004C94DD |. 3B43 4C CMP EAX,DWORD PTR DS:[EBX+4C] //是否大于100
004C94E0 |. 7F 19 JG SHORT UNPACKED.004C94FB //大于100?你还真能输入啊,死去!
004C94E2 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] //EAX=用户名
004C94E5 |. E8 92B3F3FF CALL UNPACKED.0040487C //再取位数
004C94EA |. 3B43 50 CMP EAX,DWORD PTR DS:[EBX+50] //是否小于3
004C94ED |. 7C 0C JL SHORT UNPACKED.004C94FB //小于3?你也太懒了吧,死去!
004C94EF |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] //EAX=注册码
004C94F2 |. E8 85B3F3FF CALL UNPACKED.0040487C //取未位数
004C94F7 |. 85C0 TEST EAX,EAX //是否输入
004C94F9 |. 75 04 JNZ SHORT UNPACKED.004C94FF
004C94FB |> 33DB XOR EBX,EBX
004C94FD |. EB 60 JMP SHORT UNPACKED.004C955F
004C94FF |> 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004C9502 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
004C9505 |. E8 9AF4F3FF CALL UNPACKED.004089A4
004C950A |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
004C950D |. 8D45 08 LEA EAX,DWORD PTR SS:[EBP+8]
004C9510 |. E8 2BB1F3FF CALL UNPACKED.00404640
004C9515 |. 8D4D F0 LEA ECX,DWORD PTR SS:[EBP-10]
004C9518 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004C951B |. 8BC3 MOV EAX,EBX
004C951D |. E8 BAFBFFFF CALL UNPACKED.004C90DC //算法CALL,跟进!
004C9522 |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004C9525 |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
004C9528 |. E8 EFF4F3FF CALL UNPACKED.00408A1C
004C952D |. 85C0 TEST EAX,EAX
004C952F |. 74 04 JE SHORT UNPACKED.004C9535 //也算关键跳!
004C9531 |. 33DB XOR EBX,EBX
004C9533 |. EB 2A JMP SHORT UNPACKED.004C955F
004C9535 |> 8D43 48 LEA EAX,DWORD PTR DS:[EBX+48]
004C9538 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004C953B |. E8 BCB0F3FF CALL UNPACKED.004045FC
004C9540 |. 8D43 54 LEA EAX,DWORD PTR DS:[EBX+54]
004C9543 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
004C9546 |. E8 B1B0F3FF CALL UNPACKED.004045FC
004C954B |. 8D43 5C LEA EAX,DWORD PTR DS:[EBX+5C]
004C954E |. 8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]
004C9551 |. E8 A6B0F3FF CALL UNPACKED.004045FC
004C9556 |. 8BC3 MOV EAX,EBX
004C9558 |. E8 DF010000 CALL UNPACKED.004C973C
004C955D |. B3 01 MOV BL,1
004C955F |> 33C0 XOR EAX,EAX
004C9561 |. 5A POP EDX
004C9562 |. 59 POP ECX
004C9563 |. 59 POP ECX
004C9564 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004C9567 |. 68 89954C00 PUSH UNPACKED.004C9589
004C956C |> 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004C956F |. BA 04000000 MOV EDX,4
004C9574 |. E8 53B0F3FF CALL UNPACKED.004045CC
004C9579 |. 8D45 08 LEA EAX,DWORD PTR SS:[EBP+8]
004C957C |. E8 27B0F3FF CALL UNPACKED.004045A8
004C9581 \. C3 RETN
004C9582 .^ E9 29AAF3FF JMP UNPACKED.00403FB0
004C9587 .^ EB E3 JMP SHORT UNPACKED.004C956C
004C9589 . 8BC3 MOV EAX,EBX
004C958B . 5B POP EBX
004C958C . 8BE5 MOV ESP,EBP
004C958E . 5D POP EBP
004C958F . C2 0400 RETN 4
004C90DC /$ 55 PUSH EBP
004C90DD |. 8BEC MOV EBP,ESP
004C90DF |. 83C4 E0 ADD ESP,-20
004C90E2 |. 53 PUSH EBX
004C90E3 |. 56 PUSH ESI
004C90E4 |. 57 PUSH EDI
004C90E5 |. 33DB XOR EBX,EBX
004C90E7 |. 895D EC MOV DWORD PTR SS:[EBP-14],EBX
004C90EA |. 895D E8 MOV DWORD PTR SS:[EBP-18],EBX
004C90ED |. 895D E4 MOV DWORD PTR SS:[EBP-1C],EBX
004C90F0 |. 895D E0 MOV DWORD PTR SS:[EBP-20],EBX
004C90F3 |. 8BF9 MOV EDI,ECX
004C90F5 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX
004C90F8 |. 8BF0 MOV ESI,EAX
004C90FA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] //用户名
004C90FD |. E8 62B9F3FF CALL UNPACKED.00404A64
004C9102 |. 33C0 XOR EAX,EAX
004C9104 |. 55 PUSH EBP
004C9105 |. 68 75924C00 PUSH UNPACKED.004C9275
004C910A |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004C910D |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004C9110 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
004C9113 |. BA 8C924C00 MOV EDX,UNPACKED.004C928C //ASCII "gf258369gf"
004C9118 |. E8 23B5F3FF CALL UNPACKED.00404640
004C911D |. 837D EC 00 CMP DWORD PTR SS:[EBP-14],0 //是否读取gf258369gf.
004C9121 |. 75 0D JNZ SHORT UNPACKED.004C9130
004C9123 |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
004C9126 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
004C9129 |. E8 12B5F3FF CALL UNPACKED.00404640
004C912E |. EB 5D JMP SHORT UNPACKED.004C918D
004C9130 |> 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] //EAX=gf258369gf
004C9133 |. E8 44B7F3FF CALL UNPACKED.0040487C //取位数小孩也看的出是A
004C9138 |. 8BD8 MOV EBX,EAX
004C913A |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
004C913D |. 50 PUSH EAX
004C913E |. 8BCB MOV ECX,EBX
004C9140 |. D1F9 SAR ECX,1 //逻辑右移,简单点说就是A/2=5
004C9142 |. 79 03 JNS SHORT UNPACKED.004C9147
004C9144 |. 83D1 00 ADC ECX,0
004C9147 |> BA 01000000 MOV EDX,1
004C914C |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
004C914F |. E8 80B9F3FF CALL UNPACKED.00404AD4
004C9154 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
004C9157 |. 50 PUSH EAX
004C9158 |. 8BC3 MOV EAX,EBX
004C915A |. D1F8 SAR EAX,1
004C915C |. 79 03 JNS SHORT UNPACKED.004C9161
004C915E |. 83D0 00 ADC EAX,0
004C9161 |> 8BCB MOV ECX,EBX
004C9163 |. 2BC8 SUB ECX,EAX
004C9165 |. 8BD3 MOV EDX,EBX
004C9167 |. D1FA SAR EDX,1
004C9169 |. 79 03 JNS SHORT UNPACKED.004C916E
004C916B |. 83D2 00 ADC EDX,0
004C916E |> 42 INC EDX
004C916F |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] //EAX=gf258369gf
004C9172 |. E8 5DB9F3FF CALL UNPACKED.00404AD4
004C9177 |. FF75 E8 PUSH DWORD PTR SS:[EBP-18]
004C917A |. FF75 FC PUSH DWORD PTR SS:[EBP-4]
004C917D |. FF75 E4 PUSH DWORD PTR SS:[EBP-1C]
004C9180 |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
004C9183 |. BA 03000000 MOV EDX,3
004C9188 |. E8 AFB7F3FF CALL UNPACKED.0040493C //为什么上边有些运算代码我不说呢,其实很简单,你往下跟就能猜的出来,他只是确实用户名应该插入gf258369gf的地方,也就是上边算的出第5位!这个CALL就实现!
004C918D |> C745 F0 00000>MOV DWORD PTR SS:[EBP-10],0
004C9194 |. C745 F4 00000>MOV DWORD PTR SS:[EBP-C],0
004C919B |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004C919E |. E8 D9B6F3FF CALL UNPACKED.0040487C
004C91A3 |. 3B46 4C CMP EAX,DWORD PTR DS:[ESI+4C] //再罗嗦一次是否大于64位
004C91A6 |. 7F 0D JG SHORT UNPACKED.004C91B5
004C91A8 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004C91AB |. E8 CCB6F3FF CALL UNPACKED.0040487C
004C91B0 |. 3B46 50 CMP EAX,DWORD PTR DS:[ESI+50] //是否小于3位
004C91B3 |. 7D 0C JGE SHORT UNPACKED.004C91C1
004C91B5 |> 8BC7 MOV EAX,EDI
004C91B7 |. E8 ECB3F3FF CALL UNPACKED.004045A8
004C91BC |. E9 91000000 JMP UNPACKED.004C9252
004C91C1 |> 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] //EAX=gf258cxxx369gf
004C91C4 |. E8 B3B6F3FF CALL UNPACKED.0040487C //取插入后的位数就是E
004C91C9 |. 8BD8 MOV EBX,EAX //EBX=位数,也当和计数器比较用!
004C91CB |. EB 37 JMP SHORT UNPACKED.004C9204 //看到循环了,估计就是计算过程!
004C91CD |> 8B46 68 /MOV EAX,DWORD PTR DS:[ESI+68] //很重要的东东此时EAX=0D3EDA8B 这个东东是计算的关键!
004C91D0 |. 8B56 6C |MOV EDX,DWORD PTR DS:[ESI+6C]
004C91D3 |. 0345 F0 |ADD EAX,DWORD PTR SS:[EBP-10] //EAX=0D3EDA8B+上次计算结果!(要循环)
004C91D6 |. 1355 F4 |ADC EDX,DWORD PTR SS:[EBP-C]
004C91D9 |. 52 |PUSH EDX
004C91DA |. 50 |PUSH EAX //压栈,但栈顶
004C91DB |. 8B45 E0 |MOV EAX,DWORD PTR SS:[EBP-20] //EAX=f258cxxx369gf
004C91DE |. 0FB64418 FF |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1] //看清了,因EBX=E,所以我们知道他是反向取的,先取最后一位的ASCII码
004C91E3 |. 50 |PUSH EAX
004C91E4 |. B8 59040000 |MOV EAX,459 //EAX=459
004C91E9 |. 5A |POP EDX
004C91EA |. 8BCA |MOV ECX,EDX
004C91EC |. 33D2 |XOR EDX,EDX
004C91EE |. F7F1 |DIV ECX //EAX mod ECX (EAX=459,ECX=你取那串的字符,主要看你第几次来的!)
004C91F0 |. 8BC2 |MOV EAX,EDX //余数入EAX
004C91F2 |. 33D2 |XOR EDX,EDX
004C91F4 |. 290424 |SUB DWORD PTR SS:[ESP],EAX //下D 可看到ESP=0D3EDA8B 此命令0D3EDA8B-EAX=ESP
004C91F7 |. 195424 04 |SBB DWORD PTR SS:[ESP+4],EDX
004C91FB |. 58 |POP EAX //EAX=上边减后结果!
004C91FC |. 5A |POP EDX
004C91FD |. 8945 F0 |MOV DWORD PTR SS:[EBP-10],EAX //结果入寄存器!
004C9200 |. 8955 F4 |MOV DWORD PTR SS:[EBP-C],EDX
004C9203 |. 4B |DEC EBX //好,位数减1准备倒数第2位
004C9204 |> 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
004C9207 |. E8 70B6F3FF |CALL UNPACKED.0040487C
004C920C |. 3BD8 |CMP EBX,EAX //是否每位都算了?没有,那你别想走了~
004C920E |. 7F 04 |JG SHORT UNPACKED.004C9214
004C9210 |. 85DB |TEST EBX,EBX
004C9212 |.^ 7F B9 \JG SHORT UNPACKED.004C91CD
004C9214 |> 8B5E 60 MOV EBX,DWORD PTR DS:[ESI+60]
004C9217 |. 85DB TEST EBX,EBX
004C9219 |. 7F 11 JG SHORT UNPACKED.004C922C
004C921B |. FF75 F4 PUSH DWORD PTR SS:[EBP-C]
004C921E |. FF75 F0 PUSH DWORD PTR SS:[EBP-10]
004C9221 |. 8BD7 MOV EDX,EDI
004C9223 |. 33C0 XOR EAX,EAX
004C9225 |. E8 1EFBF3FF CALL UNPACKED.00408D48
004C922A |. EB 26 JMP SHORT UNPACKED.004C9252
004C922C |> FF75 F4 PUSH DWORD PTR SS:[EBP-C]
004C922F |. FF75 F0 PUSH DWORD PTR SS:[EBP-10]
004C9232 |. 8BD7 MOV EDX,EDI
004C9234 |. 8BC3 MOV EAX,EBX //EBX=A,注册码实际位数,但根据你上边计算的结果,不足10位前面补0
004C9236 |. E8 0DFBF3FF CALL UNPACKED.00408D48 //实现!
004C923B |. 8B07 MOV EAX,DWORD PTR DS:[EDI] //EAX=真注册码,下面都是善后工作,不罗嗦了!
004C923D |. E8 3AB6F3FF CALL UNPACKED.0040487C
004C9242 |. 8BC8 MOV ECX,EAX
004C9244 |. 2B4E 60 SUB ECX,DWORD PTR DS:[ESI+60]
004C9247 |. 8B56 60 MOV EDX,DWORD PTR DS:[ESI+60]
004C924A |. 42 INC EDX
004C924B |. 8BC7 MOV EAX,EDI
004C924D |. E8 C2B8F3FF CALL UNPACKED.00404B14
004C9252 |> 33C0 XOR EAX,EAX
004C9254 |. 5A POP EDX
004C9255 |. 59 POP ECX
004C9256 |. 59 POP ECX
004C9257 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004C925A |. 68 7C924C00 PUSH UNPACKED.004C927C
004C925F |> 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
004C9262 |. BA 04000000 MOV EDX,4
004C9267 |. E8 60B3F3FF CALL UNPACKED.004045CC
004C926C |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004C926F |. E8 34B3F3FF CALL UNPACKED.004045A8
004C9274 \. C3 RETN
004C9275 .^ E9 36ADF3FF JMP UNPACKED.00403FB0
004C927A .^ EB E3 JMP SHORT UNPACKED.004C925F
004C927C . 5F POP EDI
004C927D . 5E POP ESI
004C927E . 5B POP EBX
004C927F . 8BE5 MOV ESP,EBP
004C9281 . 5D POP EBP
004C9282 . C3 RETN
2,总结:
1>真注册码10位
2>利用用户名计算.
3,推算:
这里我用户名=cxxx 注册码=121212
1>用户名先插入gf258369gf的第5位得gf258cxxx369gf
2>用459 mod 每位的ASCII码(必须是倒着算)
3>上边的结果再用0D3EDA8B-,最后结果再加0D3EDA8B,循环!
4>最后得出的结果,不足10位的前面补0!
5>我的用户名= cxxx 注册码= 00B96FF118
4,内存注册机:
中断地址:004C923D
中断次数:1
第一字节:E8
字节长度:5
寄存器:EAX(内存方式)
5,感评:
花了两个小时终于写完了,这次感受了一下OD,发现他功能确定挺强大,看来也要接受一下它了。
因为时间是凌晨,所以我写的比较仓促,不过我已经尽力的去写清楚,简单。如果你在这篇文章中能学到点什么,那么我的目的也就达到了!
======================================================================
【工程声明】本过程只供内部学习之用!如要转载请保持过程完整!
======================================================================
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)