文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 用SMC的补丁方法来破解加壳的幻影2003

用SMC的补丁方法来破解加壳的幻影2003

时间:2004/10/15 0:58:00来源:本站整理作者:蓝点我要评论(0)

 软件:幻影2003  
加密方式:机器码+注册码,主运行文件huanying.exe被加壳ASPack 1.08.03,  
     未注册前有功能限制,不能保存、打印、发email。  
难度:中等  
所用工具:lodepe,softice,hiew6.83,topo  
破解环境:win98第二版  

本文仅在研究破解技术,请大家支持软件作者制作出更优秀的软件。  
请大家多提意见,完善文章内容,造福于所有的crack  

1、注册表中存放运行次数和注册码的地方  

REGEDIT4  

[HKEY_CURRENT_USER\Software\BraveTech\PhotoBuilder\regno]  
"showme"=dword:00000000  
"opensample"=dword:00000001  
"lastbk"="C:\\PROGRAM FILES\\幻影2003\\backgrnd\\BCG_094.JPG"  
"runtimes"=dword:00000005  
"bserino"="F9R9-B3C9-J5D9-P0L0"*******注册码以明文存放在这里  

2、软件破解  
    软件的主运行文件huanying.exe被加壳ASPack 1.08.03,用冲击波可得到入口地址OEP,脱壳后反  
汇编,得到如下代码段,修改410B6E处的代码为9090或7500,则软件破解完成(注册码的破解比较简单,  
采用的是明码比较,这里就不讲了)。  

OEP:  452564==>0043DF6C  

* Referenced by a CALL at Addresses:  
(四个调用检测注册码的代码段的地址,分别对应了四个功能。)  
|:00406531  , :0040A218  , :00414BF8  , :00414DE5  
|  
0167:00410820 6AFF                push FFFFFFFF  
.......  
.......  
0167:00410B6E  750D                JNZ      00410B7D  ********************  
0167:00410B70  C744242C01000000    MOV      DWORD PTR [ESP+2C],00000001  
0167:00410B78  E9C8010000          JMP      00410D45  
0167:00410B7D  33DB                XOR      EBX,EBX  
0167:00410B7F  53                  PUSH      EBX  
0167:00410B80  8D4C2444            LEA      ECX,[ESP+44]  
0167:00410B84  E8178BFFFF          CALL      004096A0  

3、此软件的破解并不难,手工或借助工具脱壳后修改一个字节就可完成破解;取消所有功能限制;  
但用来作为一个学习SMC补丁方法的例子刚好。(因为我的本意不是讲脱壳,所以这一部分略,若有  
人需要,可来信讨论,不过本人脱壳的水平不敢恭维。)  

4、SMC的补丁方法(加壳ASPack 1.08.03 -> Alexey Solodovnikov)  
分析:因为软件加壳,所以0167:00410B6E  750D  JNZ      00410B7D  
这一句代码是在内存动态生成的。那么首先看这一句是由哪一段代码生成的。  
用 Softice loader启动huanying.exe文件,下断点bpm 410b6e,  
ice中断后,用D 410b6e来看代码是不是750D  JNZ      00410B7D,  
若不是,按F5继续,直到代码生成为止。  

我们来分析最后一次中断后的地方:  
0167:00452333  8B85B5504400        MOV      EAX,[EBP+004450B5]  
0167:00452339  6800800000          PUSH      00008000***************  
0167:0045233E  6A00                PUSH      00  
0167:00452340  50                  PUSH      EAX  
0167:00452341  FF95BD504400        CALL      [EBP+004450BD]  
0167:00452347  83C608              ADD      ESI,08  
0167:0045234A  833E00              CMP      DWORD PTR [ESI],00  
0167:0045234D  0F8546FFFFFF        JNZ      00452299  
0167:00452353  8B9DDF4A4400        MOV      EBX,[EBP+00444ADF]  
0167:00452359  0BDB                OR        EBX,EBX  
0167:0045235B  7408                JZ        00452365  
0167:0045235D  8B03                MOV      EAX,[EBX]  

在00452339地址前,代码已经生成,所以我决定在此句前修改00410B6E的代码。用PE工具得到  
代码00452339也是动态生成的,所以也要找到生成00452339的代码段。  
用 Softice loader启动huanying.exe文件,下断点bpm 00452339,  
ice中断后,用D 00452339来看代码是不是6800800000  PUSH      00008000 ,  
若不是,按F5继续,直到代码生成为止。  

我们来分析最后一次中断后的地方:  
0167:004520B7  8B85B5504400        MOV      EAX,[EBP+004450B5]  
0167:004520BD  6800800000          PUSH      00008000***************  
0167:004520C2  6A00                PUSH      00  
0167:004520C4  50                  PUSH      EAX  
0167:004520C5  FF95BD504400        CALL      [EBP+004450BD]  
0167:004520CB  8D85374C4400        LEA      EAX,[EBP+00444C37]  
0167:004520D1  50                  PUSH      EAX  
0167:004520D2  C3                  RET  

在4520bd的地方,代码已经生成,所以我要在4520bd这一句前给软件补丁;用PE工具得到这一段  
代码在huanying.exe文件中是存在的,不需要再补丁。  


现在理一下SMC的补丁方法来破解加壳软件的思路:  
程序运行的过程:  
程序运行-->在004520BD生成00452339代码段-->在00452339生成00410B6E代码段-->00410B6E代码段运行  

程序补丁的过程:  
程序运行-->在004520BD补丁00452339代码段-->在00452339补丁00410B6E代码段-->补丁后的00410B6E代码运行,软件破解。  

从上面可以看出,补丁的代码要两处,第二处补丁第一处代码;以此类推,再复杂的加壳,第二处补丁第一处代码,  
第三处补丁第二处代码,第四处补丁第三处代码,在经过多次的补丁,最后也会补成功。  

具体步聘:  
1,用topo 在huanying.exe文件中寻找空白代码段,我得到的是00453250  
用hiew6.83修改源文件,在453250处加代码:  

0167:00453250  6800800000          PUSH      00008000  
0167:00453255  C7056E0B41007500C744MOV      DWORD PTR [00410B6E],44C70075********  
0167:0045325F  E9DAF0FFFF          JMP      0045233E  

这一句就是修改410b6e的代码,修改为  
0167:00410B6E  7500                JNZ      00410B70***********  


2、用hiew6.83修改源文件,修改004520BD处的代码为  
0167:004520BD  E9120F0000          JMP      00453264  

3、用hiew6.83修改源文件,在453264处加代码:  
0167:00453264  6800800000          PUSH      00008000  
0167:00453269  C70539234500E9120F00MOV      DWORD PTR [00452339],000F12E9***********  
0167:00453273  C6053D23450000      MOV      BYTE PTR [0045233D],00  
0167:0045327A  E943EEFFFF          JMP      004520C2  
这一句就是修改00452339 的代码,修改为00452339  E9120F0000    JMP    00453250  

4、运行软件,成功,补丁完成。试一试,功能限制已没有,破解完成。  

================ 附修改结果  

0167:004520B7  8B85B5504400        MOV      EAX,[EBP+004450B5]  
0167:004520BD  E9A2110000          JMP      00453264***********  
0167:004520C2  6A00                PUSH      00  
0167:004520C4  50                  PUSH      EAX  
0167:004520C5  FF95BD504400        CALL      [EBP+004450BD]  
0167:004520CB  8D85374C4400        LEA      EAX,[EBP+00444C37]  
0167:004520D1  50                  PUSH      EAX  
0167:004520D2  C3                  RET  

================ 附增加的代码段  
*****************************************************************************  
0167:00453250  6800800000          PUSH      00008000  
0167:00453255  C7056E0B41007500C744MOV      DWORD PTR [00410B6E],44C70075  
0167:0045325F  E9DAF0FFFF          JMP      0045233E  
0167:00453264  6800800000          PUSH      00008000  
0167:00453269  C70539234500E9120F00MOV      DWORD PTR [00452339],000F12E9  
0167:00453273  C6053D23450000      MOV      BYTE PTR [0045233D],00  
0167:0045327A  E943EEFFFF          JMP      004520C2  
*****************************************************************************  

================附动态补丁的结果  

0167:00452333  8B85B5504400        MOV      EAX,[EBP+004450B5]  
0167:00452339  E9120F0000          JMP      00453250***********  
0167:0045233E  6A00                PUSH      00  
0167:00452340  50                  PUSH      EAX  
0167:00452341  FF95BD504400        CALL      [EBP+004450BD]  
0167:00452347  83C608              ADD      ESI,08  
0167:0045234A  833E00              CMP      DWORD PTR [ESI],00  

================附动态补丁的结果(破解软件的关键地方)  
:u 410b6e l 30  
0167:00410B6E  7500                JNZ      00410B70***********  
0167:00410B70  C744242C01000000    MOV      DWORD PTR [ESP+2C],00000001  
0167:00410B78  E9C8010000          JMP      00410D45  
0167:00410B7D  33DB                XOR      EBX,EBX  
0167:00410B7F  53                  PUSH      EBX  
0167:00410B80  8D4C2444            LEA      ECX,[ESP+44]  
0167:00410B84  E8178BFFFF          CALL      004096A0  
0167:00410B89  B306                MOV      BL,06  
0167:00410B8B  8D4C2420            LEA      ECX,[ESP+20]  

希望能和大家互相交流经验,也希望能为crack们作一点贡献。  

下一篇准备写  
1,怎样修改软件文件,让软件自动输出注册号,自己成为自己的注册机。  
2,怎样修改软件文件,破解多模块加密狗(rokey)的方法。(一个国内非常有名的软件,采用加密狗加密,  
而且是多模块软件。)  

    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程