==================================================================================
【工程作者】深海游侠【CZG】【OCN】
【作者邮箱】shenhaiyouxia@163.com
==================================================================================
【软件名称】网络安全卫士2005 5.2
【下载地址】http://www.newhua.com/soft/25042.htm
【所受限制】时间限制
【加壳保护】ASPack加壳
【破解目的】纯属兴趣,如有失误之处,请各位大侠指点!
【工程平台】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,发现他功能确定挺强大,看来也要接受一下它了。
因为时间是凌晨,所以我写的比较仓促,不过我已经尽力的去写清楚,简单。如果你在这篇文章中能学到点什么,那么我的目的也就达到了!

 

======================================================================
【工程声明】本过程只供内部学习之用!如要转载请保持过程完整!
======================================================================