黑客防线,在攻与防的对立统一中寻求突破!2001年创刊的黑客技术专业刊物!

设为首页
收藏本站
联系我们
网站导航

黑客文章 - 加密解密 - 浏览 - 马甲透视SVKP 1.3x 之Registry Medic2.98

马甲透视SVKP 1.3x 之Registry Medic2.98

黑客 发布日期:2008-6-2 2:12:39 共有 792 人次浏览
马甲透视SVKP 1.3x 之Registry Medic
【目 标】: Registry Medic 2.98
【工 具】:OllyDbg 1.1b(DIY版)
【任 务】:不脱马甲,巧妙注册
【操作平台】:WINDOWS 2000 ADV sp2
【作 者】:loveboom[DFCG]
【相关链接】:www.skycn.com(好像是这里


看完后再次回来:  

004E23EB  |.  85C0          TEST EAX,EAX  
004E23ED  |.  75 45         JNZ SHORT RegMedic.004E2434              //  这里一定要跳不跳则over  
004E23EF  |>  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]            //  跳到这里就over了  
004E23F2  |.  BA 14254E00   MOV EDX,RegMedic.004E2514                //  ASCII "Registration failed. Please try again!"  
004E23F7  |.  E8 4419F2FF   CALL RegMedic.00403D40  
004E23FC  |.  6A 30         PUSH 30  

上面跳成功后来到这里:  
004E2434  |> \8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]            //  注册码入edx  
004E2437  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             //  用户名入eax  
004E243A  |.  E8 5D9FFAFF   CALL RegMedic.0048C39C          //这里可以进去看看:  
0048C39C  /$Content$nbsp; 55            PUSH EBP  
0048C39D  |.  8BEC          MOV EBP,ESP  
0048C39F  |.  B9 06000000   MOV ECX,6  
0048C3A4  |>  6A 00         /PUSH 0  
0048C3A6  |.  6A 00         |PUSH 0  
0048C3A8  |.  49            |DEC ECX  
0048C3A9  |.^ 75 F9         \JNZ SHORT RegMedic.0048C3A4  
0048C3AB  |.  8955 F8       MOV DWORD PTR SS:[EBP-8],EDX             //  EBP-8=假码  
0048C3AE  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX             //  [EBP-4]=用户名  
0048C3B1  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]  
0048C3B4  |.  E8 237DF7FF   CALL RegMedic.004040DC  
0048C3B9  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]  
0048C3BC  |.  E8 1B7DF7FF   CALL RegMedic.004040DC  
0048C3C1  |.  33C0          XOR EAX,EAX  
0048C3C3  |.  55            PUSH EBP  
0048C3C4  |.  68 90C54800   PUSH RegMedic.0048C590  
0048C3C9  |.  64:FF30       PUSH DWORD PTR FS:[EAX]  
0048C3CC  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP  
0048C3CF  |.  B2 01         MOV DL,1  
0048C3D1  |.  A1 58324700   MOV EAX,DWORD PTR DS:[473258]  
0048C3D6  |.  E8 7D6FFEFF   CALL RegMedic.00473358  
0048C3DB  |.  8945 F4       MOV DWORD PTR SS:[EBP-C],EAX  
0048C3DE  |.  33C0          XOR EAX,EAX  
0048C3E0  |.  55            PUSH EBP  
0048C3E1  |.  68 59C54800   PUSH RegMedic.0048C559  
0048C3E6  |.  64:FF30       PUSH DWORD PTR FS:[EAX]  
0048C3E9  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP  
0048C3EC  |.  BA 02000080   MOV EDX,80000002  
0048C3F1  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]  
0048C3F4  |.  E8 FF6FFEFF   CALL RegMedic.004733F8  
0048C3F9  |.  33C9          XOR ECX,ECX  
0048C3FB  |.  BA A4C54800   MOV EDX,RegMedic.0048C5A4                //  ASCII "SoftWare\Classes\CLSID\{B087CE89-A8EE-4890-91E7-696B3F749500}"  
0048C400  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]  
0048C403  |.  E8 5870FEFF   CALL RegMedic.00473460  
0048C408  |.  84C0          TEST AL,AL  
0048C40A  |.  74 68         JE SHORT RegMedic.0048C474  
0048C40C  |.  BA ECC54800   MOV EDX,RegMedic.0048C5EC                //  ASCII "AppIdK"  
0048C411  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]  
0048C414  |.  E8 2B78FEFF   CALL RegMedic.00473C44  
0048C419  |.  84C0          TEST AL,AL  
0048C41B  |.  74 57         JE SHORT RegMedic.0048C474  
0048C41D  |.  8D4D EC       LEA ECX,DWORD PTR SS:[EBP-14]  
0048C420  |.  BA ECC54800   MOV EDX,RegMedic.0048C5EC                //  ASCII "AppIdK"  
0048C425  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]  
0048C428  |.  E8 AF75FEFF   CALL RegMedic.004739DC  
0048C42D  |.  8D4D E8       LEA ECX,DWORD PTR SS:[EBP-18]  
0048C430  |.  BA 01000000   MOV EDX,1  
0048C435  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]            //  把我们输入的假码和注册表里的值连接起来.  
0048C438  |.  E8 6FFDFFFF   CALL RegMedic.0048C1AC  
0048C43D  |.  FF75 E8       PUSH DWORD PTR SS:[EBP-18]               //  push第一部分值’071F3A81002C5C7CFE34’  
0048C440  |.  68 FCC54800   PUSH RegMedic.0048C5FC  
0048C445  |.  8D4D E4       LEA ECX,DWORD PTR SS:[EBP-1C]  
0048C448  |.  BA 02000000   MOV EDX,2                                //  这里开始取第二部分了  
0048C44D  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]  
0048C450  |.  E8 57FDFFFF   CALL RegMedic.0048C1AC                   //  这个Call就是取值过程  
0048C455  |.  FF75 E4       PUSH DWORD PTR SS:[EBP-1C]               //  取出的第二部分入栈  
0048C458  |.  68 FCC54800   PUSH RegMedic.0048C5FC  
0048C45D  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]  
……  
0048C4ED  |.  E8 D66EFEFF   CALL RegMedic.004733C8  
0048C4F2  |.  FF75 F0       PUSH DWORD PTR SS:[EBP-10]               //  push第一部分和第二部分连接后的值  
0048C4F5  |.  8D55 D0       LEA EDX,DWORD PTR SS:[EBP-30]  
0048C4F8  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             //  EAX=用户名bmd2chen@tom.com  
0048C4FB  |.  E8 0C080000   CALL RegMedic.0048CD0C  
0048C500  |.  FF75 D0       PUSH DWORD PTR SS:[EBP-30]               //  push 值:"45205DEE712FB90D5AB957BC01A7C3AC"也就是第三部分  
0048C503  |.  68 FCC54800   PUSH RegMedic.0048C5FC  
0048C508  |.  FF75 F8       PUSH DWORD PTR SS:[EBP-8]                //  push 假码  
0048C50B  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]  
0048C50E  |.  BA 04000000   MOV EDX,4  
0048C513  |.  E8 D07AF7FF   CALL RegMedic.00403FE8  
0048C518  |.  B1 01         MOV CL,1  
0048C51A  |.  BA A4C54800   MOV EDX,RegMedic.0048C5A4                //  ASCII "SoftWare\Classes\CLSID\{B087CE89-A8EE-4890-91E7-696B3F749500}"  
0048C51F  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]  
0048C522  |.  E8 396FFEFF   CALL RegMedic.00473460  
0048C527  |.  84C0          TEST AL,AL  
0048C529  |.  74 18         JE SHORT RegMedic.0048C543  
0048C52B  |.  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]            //  这里再次取注册表里的值  
0048C52E  |.  BA ECC54800   MOV EDX,RegMedic.0048C5EC                //  ASCII "AppIdK"  
0048C533  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]  

后面就没看跟它转了,因为再跟就跑去壳里去了.  
现在回到这里:  

004E243F  |.  E8 90AAFAFF   CALL RegMedic.0048CED4 //这里就跟就会在壳代码里晕来晕去(由此我个人猜它应该是用svkp1.3x sdk加的壳),过了按F8过这里时会有异常,所以我又懒一下,跟了第一次,就不再有第二次了。  
004E2444  |.  A1 E0C74F00   MOV EAX,DWORD PTR DS:[4FC7E0]    //注意这里,这里如果[4FC7E0]=1的话就注册成功,等于0的话就失败,所以我这里也用fly大侠的“狸猫换太子”给它易容。  

004E2449  |.  8038 00       CMP BYTE PTR DS:[EAX],0  
004E244C  |.  74 25         JE SHORT RegMedic.004E2473  
004E244E  |.  A1 64C84F00   MOV EAX,DWORD PTR DS:[4FC864]            //  这里EAX能等于0,否则就完了  
004E2453  |.  8338 00       CMP DWORD PTR DS:[EAX],0  
004E2456  |.  74 0C         JE SHORT RegMedic.004E2464               //  这里就是"生死"跳,跳转成功就是死,否则就生  
004E2458  |.  A1 64C84F00   MOV EAX,DWORD PTR DS:[4FC864]  
004E245D  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]  
004E245F  |.  E8 94D0FFFF   CALL RegMedic.004DF4F8  
004E2464  |>  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]  
004E2467  |.  BA 50254E00   MOV EDX,RegMedic.004E2550                //  ASCII "Thank you for registering Registry Medic."  
004E246C  |.  E8 CF18F2FF   CALL RegMedic.00403D40  
004E2471  |.  EB 0D         JMP SHORT RegMedic.004E2480  
004E2473  |>  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]  
004E2476  |.  BA 14254E00   MOV EDX,RegMedic.004E2514                //  ASCII "Registration failed. Please try again!"  
004E247B  |.  E8 C018F2FF   CALL RegMedic.00403D40  
……  

看完一堆代码后,我们就开始易容了。  
在数据窗口里找个是01的地方,我自己找的是4E4359,因为我发现这里从一开始到后面这里的值都是01.  

狸猫换太子开始了,在程序地盘里CTRL+F7找MOV EAX,DWORD PTR DS:[4FC7E0]一共找到三个地方:  

004B2CF4    A1 E0C74F00     MOV EAX,DWORD PTR DS:[4FC7E0]  
//改为  
004B2CF4    B8 59434E00     MOV EAX,RegMedic.004E4359  

004E2444    A1 E0C74F00     MOV EAX,DWORD PTR DS:[4FC7E0]  
//改为  
004E2444    B8 59434E00     MOV EAX,RegMedic.004E4359  


004E25C8    A1 E0C74F00     MOV EAX,DWORD PTR DS:[4FC7E0]  
//改为  
004E25C8    B8 59434E00     MOV EAX,RegMedic.004E4359  

全部改完后,现在就是注册版了,这样重开后还是提示没注册呀,不要急,当然是这样的了,我们再做一个loader那不就可以了.  
用keymaker做一个内存补丁(也就是loader了):  

修改地址    修改长度    原始指令    修改指令  
4E2444      4      A1E0C74F    B859434E  
4B2CF4      4      A1E0C74F    B859434E  
4E25C8      4      A1E0C74F    B859434E  

现在试试怎么样,注册成功了吧.注册码长度为&H27位的情况也这样解决它。  
到这里我也应该收工了,我的问题还望各位大侠指点一二。各位老大看完了不要忘了帮我顶一下,我可是一中午没睡哦.我菜鸟一个所以文章中不可避免的存在问题,请多指教!  

【后    记】:  

做什么事都要灵活一点,如果没什么收获的话,不访和MM聊一下(我一下楼好多PL护士MM,今天的灵感多少来自她们的),也许就有灵感了。至于是不是真的是SDK的我也不敢肯定的说,因为并没有什么东西可以证明。
2/2页次 第一页 上一页 第1页 第2页
所属分类: 加密解密     网摘收藏: Google 雅虎 百度 POCO 365key 和讯 天极