您的位置:首页精文荟萃破解文章 → 图像处理软件XFader的简要分析

图像处理软件XFader的简要分析

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

 

 



破解软件:XFader
下载地址:www.21hh.net
破解难度:易
破解工具:TRW1.22
软件说明:方便的图像素材生成工具,可以从任意一个位图创建无穷多的纹理素材。只需执行XFader,打开一个
bitmap或jpeg文件然后按“渐变”按钮即可,注册用户可以及时预览效果。它本身并不具备太多图片的编修功
能,它对于制作不同风格的网页或是制作布景主题是蛮需要的。赶快试试吧,绝对让你大吃一惊。


任意输入用户名ShenGe和注册码12345678,下BPX HMEMCPY中断,点Register,程序被中断,按7下F12再按F10来到以下代码:
0167:00470BDD  LEA      EDX,[EBP-08]
0167:00470BE0  MOV      EAX,[0049EB50]
0167:00470BE5  MOV      EAX,[EAX+01F4]
0167:00470BEB  CALL     0041D25C
0167:00470BF0  MOV      EAX,[EBP-08]               <---程序中断于此,取输入的注册码到EAX中
0167:00470BF3  PUSH     EAX
0167:00470BF4  LEA      EDX,[EBP-0C]
0167:00470BF7  MOV      EAX,[0049EB50]
0167:00470BFC  MOV      EAX,[EAX+01F0]
0167:00470C02  CALL     0041D25C                  
0167:00470C07  MOV      EDX,[EBP-0C]               <---取输入的用户名到EDX中
0167:00470C0A  MOV      EAX,EBX
0167:00470C0C  POP      ECX                        <---ECX中为输入的注册码
0167:00470C0D  CALL     00470530                   <---关键的Call,跟进
0167:00470C12  TEST     AL,AL
0167:00470C14  JZ       NEAR 00470C9D              <---关键跳转,要爆破改为JNZ即可
0167:00470C1A  LEA      EDX,[EBP-08]
0167:00470C1D  MOV      EAX,[0049EB50]
0167:00470C22  MOV      EAX,[EAX+01F4]
0167:00470C28  CALL     0041D25C
0167:00470C2D  MOV      EAX,[EBP-08]
0167:00470C30  PUSH     EAX
跟进上面的那个Call,来到如下代码处:
0167:00470530  PUSH     EBP
0167:00470531  MOV      EBP,ESP
0167:00470533  PUSH     ECX
0167:00470534  MOV      ECX,04
0167:00470539  PUSH     BYTE +00
0167:0047053B  PUSH     BYTE +00
0167:0047053D  DEC      ECX
0167:0047053E  JNZ      00470539
。。。。。。。
0167:004705B3  LEA      ECX,[EBP-24]
0167:004705B6  MOV      EDX,ESI
0167:004705B8  MOV      EAX,[EBX+4C]
0167:004705BB  MOV      EDI,[EAX]
0167:004705BD  CALL     NEAR [EDI+0C]
0167:004705C0  MOV      EDX,[EBP-24]
0167:004705C3  MOV      ECX,08
0167:004705C8  MOV      EAX,EBX
0167:004705CA  CALL     00470674                    <---此Call将我们输入的用户名进行转换:小写全部转换成大写;
0167:004705CF  MOV      ECX,[EBP-20]                    若用户名不足8位,则不足部分依次从输入的用户名的第1位起
0167:004705D2  MOV      EDX,ESI                         取字符补齐,如我输入的为ShenGe,则转换后为SHENGESH
0167:004705D4  MOV      EAX,[EBX+4C]
0167:004705D7  MOV      EDI,[EAX]
0167:004705D9  CALL     NEAR [EDI+20]
0167:004705DC  INC      ESI
0167:004705DD  DEC      DWORD [EBP-1C]
0167:004705E0  JNZ      004705AD
0167:004705E2  MOV      EDX,[EBP-10]
0167:004705E5  MOV      EAX,[EBX+4C]
0167:004705E8  MOV      ECX,[EAX]
0167:004705EA  CALL     NEAR [ECX+50]
0167:004705ED  TEST     EAX,EAX
0167:004705EF  JNL      0047062B
0167:004705F1  MOV      EAX,[EBP-10]
0167:004705F4  CALL     00403BE4
0167:004705F9  TEST     EAX,EAX
0167:004705FB  JNG      0047062B
0167:004705FD  MOV      EAX,[EBP-14]
0167:00470600  CALL     00403BE4
0167:00470605  TEST     EAX,EAX
0167:00470607  JNG      0047062B
0167:00470609  LEA      EAX,[EBP-18]
0167:0047060C  PUSH     EAX
0167:0047060D  MOV      ECX,[EBP-10]                 <---D ECX可看到转换后的用户名
0167:00470610  MOV      EDX,[EBP-14]                 <---D EDX可看到固定字符串“PXF12OKT”
0167:00470613  MOV      EAX,EBX
0167:00470615  CALL     004707C0                     <---计算注册码的Call,跟进
0167:0047061A  MOV      EAX,[EBP-18]                 <--- D EAX可看到正确的注册码
0167:0047061D  MOV      EDX,[EBP-08]                 <--- D EDX可看到我们输的假的注册码  
0167:00470620  CALL     00403CF4                     <--- 进行比较的Call
0167:00470625  JNZ      0047062B                     <---关键跳转
0167:00470627  MOV      BYTE [EBP-09],01
0167:0047062B  XOR      EAX,EAX
0167:0047062D  POP      EDX
0167:0047062E  POP      ECX
0167:0047062F  POP      ECX
0167:00470630  MOV      [FS:EAX],EDX
0167:00470633  PUSH     DWORD 00470667
0167:00470638  LEA      EAX,[EBP-24]
0167:0047063B  MOV      EDX,02
0167:00470640  CALL     0040398C
0167:00470645  LEA      EAX,[EBP-18]
0167:00470648  MOV      EDX,03
0167:0047064D  CALL     0040398C
0167:00470652  LEA      EAX,[EBP-08]
0167:00470655  MOV      EDX,02
0167:0047065A  CALL     0040398C
0167:0047065F  RET  
由上可看到,只要在 0167:0047061A 处下D EAX即可看到正确的注册码,但我们的目的是找出算法,跟进上面的那个Call可看到以下代码:
0167:004707C0  PUSH     EBP
0167:004707C1  MOV      EBP,ESP
0167:004707C3  ADD      ESP,FFFFFEB4
0167:004707C9  PUSH     EBX
0167:004707CA  PUSH     ESI
0167:004707CB  PUSH     EDI
0167:004707CC  XOR      EBX,EBX
0167:004707CE  MOV      [EBP+FFFFFED8],EBX
0167:004707D4  MOV      [EBP+FFFFFED4],EBX
0167:004707DA  MOV      [EBP+FFFFFED0],EBX
。。。。。。。
0167:00470838  PUSH     EAX
0167:00470839  MOV      ECX,08
0167:0047083E  MOV      EDX,01
0167:00470843  MOV      EAX,[EBP-04]
0167:00470846  CALL     00403DE8
0167:0047084B  PUSH     DWORD [EBP+FFFFFED4]
0167:00470851  LEA      EAX,[EBP+FFFFFED0]
0167:00470857  PUSH     EAX
0167:00470858  MOV      ECX,08
0167:0047085D  MOV      EDX,01
0167:00470862  MOV      EAX,[EBP-08]
0167:00470865  CALL     00403DE8
0167:0047086A  PUSH     DWORD [EBP+FFFFFED0]       <---D *EBP+FFFFFED0可看到为转换后的用户名
0167:00470870  PUSH     DWORD 004709DC             <---D 004709DC可看到########
0167:00470875  LEA      EAX,[EBP+FFFFFED8]
0167:0047087B  MOV      EDX,03
0167:00470880  CALL     00403CA4                   <---这个Call将固定串“PXF12OKT”与转换后的用户名及"########"合并后存入[EBP+FFFFFED8]中
0167:00470885  MOV      EDX,[EBP+FFFFFED8]
0167:0047088B  LEA      EAX,[EBP+FFFFFEDC]
0167:00470891  MOV      ECX,FF
0167:00470896  CALL     00403BC0                  
0167:0047089B  LEA      EDX,[EBP+FFFFFEDC]
0167:004708A1  LEA      EAX,[EBP-21]
0167:004708A4  MOV      CL,18
0167:004708A6  CALL     004029AC
0167:004708AB  PUSH     BYTE +03                   <---置入口参数                  -----------|    
0167:004708AD  PUSH     BYTE +05                   <---置入口参数                             |
0167:004708AF  PUSH     BYTE +07                   <---置入口参数                             |
0167:004708B1  LEA      EDX,[EBP-21]                                                          |
0167:004708B4  MOV      CL,01                                                                 |
0167:004708B6  MOV      EAX,EBX                                                               |
0167:004708B8  CALL     00470784                   <---此Call是对上面合并后的字符串进行处理   |
0167:004708BD  MOV      [EBP-10],AL                <---运算后的结果存入[EBP-10]中  -----------|
0167:004708C0  PUSH     BYTE +04         -----------------------|
0167:004708C2  PUSH     BYTE +0A                                |                
0167:004708C4  PUSH     BYTE +0C                                |
0167:004708C6  LEA      EDX,[EBP-21]                            |
0167:004708C9  MOV      CL,02                                   |  
0167:004708CB  MOV      EAX,EBX                                 |    
0167:004708CD  CALL     00470784                                |
0167:004708D2  MOV      [EBP-0F],AL      -----------------------|                                  
0167:004708D5  PUSH     BYTE +0B                                |
0167:004708D7  PUSH     BYTE +0D                                |    
0167:004708D9  PUSH     BYTE +0F                                |
0167:004708DB  LEA      EDX,[EBP-21]                            |    
0167:004708DE  MOV      CL,09                                   |
0167:004708E0  MOV      EAX,EBX                                 |
0167:004708E2  CALL     00470784                                |
0167:004708E7  MOV      [EBP-0E],AL       ----------------------|
0167:004708EA  PUSH     BYTE +08                                |
0167:004708EC  PUSH     BYTE +0E                                |
0167:004708EE  PUSH     BYTE +10                                |
0167:004708F0  LEA      EDX,[EBP-21]                            |
0167:004708F3  MOV      CL,06                                   |
0167:004708F5  MOV      EAX,EBX                                 |
0167:004708F7  CALL     00470784                                |
0167:004708FC  MOV      [EBP-0D],AL       ----------------------|
0167:004708FF  PUSH     BYTE +10                                |
0167:00470901  PUSH     BYTE +02                                |
0167:00470903  PUSH     BYTE +0F                                |
0167:00470905  LEA      EDX,[EBP-21]                            |
0167:00470908  MOV      CL,01                                   |
0167:0047090A  MOV      EAX,EBX                                 |
0167:0047090C  CALL     00470784                                |
0167:00470911  MOV      [EBP-0C],AL       ----------------------|
0167:00470914  PUSH     BYTE +0E                                |
0167:00470916  PUSH     BYTE +04                                |
0167:00470918  PUSH     BYTE +0D                                |  
0167:0047091A  LEA      EDX,[EBP-21]                            |
0167:0047091D  MOV      CL,03                                   |
0167:0047091F  MOV      EAX,EBX                                 |
0167:00470921  CALL     00470784                                |
0167:00470926  MOV      [EBP-0B],AL       ----------------------|          
0167:00470929  PUSH     BYTE +0C                                |
0167:0047092B  PUSH     BYTE +06                                |
0167:0047092D  PUSH     BYTE +0B                                |
0167:0047092F  LEA      EDX,[EBP-21]                            |
0167:00470932  MOV      CL,05                                   |
0167:00470934  MOV      EAX,EBX                                 |
0167:00470936  CALL     00470784                                |
0167:0047093B  MOV      [EBP-0A],AL       ----------------------|  
0167:0047093E  PUSH     BYTE +0A                                |
0167:00470940  PUSH     BYTE +08                                |
0167:00470942  PUSH     BYTE +09                                |
0167:00470944  LEA      EDX,[EBP-21]                            |
0167:00470947  MOV      CL,07                                   |
0167:00470949  MOV      EAX,EBX                                 |
0167:0047094B  CALL     00470784                                |
0167:00470950  MOV      [EBP-09],AL      -----------------------|
0167:00470953  MOV      EBX,08
0167:00470958  LEA      ECX,[EBP-10]           <---取上面8次Call运算后的结果到[ECX]中
0167:0047095B  XOR      EAX,EAX                <---EAX清零
0167:0047095D  MOV      AL,[ECX]               <---按位取[ECX]中的值到EAX中
0167:0047095F  MOV      EDI,0A                 <---EDI中置为定值0AH
0167:00470964  CDQ                             <---EDX清零
0167:00470965  IDIV     EDI
0167:00470967  ADD      EDX,BYTE +30           <---将余数转化成十六进制数值(正确注册码)
0167:0047096A  MOV      [ECX],DL               <---十六进制值存入[ECX]中
0167:0047096C  INC      ECX
0167:0047096D  DEC      EBX
0167:0047096E  JNZ      0047095B               <---循环判断,是否取完
0167:00470970  LEA      EAX,[EBP+FFFFFEB4]
0167:00470976  PUSH     EAX
0167:00470977  MOV      ECX,08
0167:0047097C  MOV      EDX,11
0167:00470981  LEA      EAX,[EBP-21]
0167:00470984  CALL     00402794               <---此Call将上面的计算结果(即正确注册码)存入[EBP+FFFFFEB4]中
0167:00470989  LEA      EDX,[EBP+FFFFFEB4]
0167:0047098F  MOV      EAX,ESI
0167:00470991  CALL     00403B88
0167:00470996  XOR      EAX,EAX
0167:00470998  POP      EDX
0167:00470999  POP      ECX
0167:0047099A  POP      ECX
0167:0047099B  MOV      [FS:EAX],EDX
0167:0047099E  PUSH     DWORD 004709C8
0167:004709A3  LEA      EAX,[EBP+FFFFFED0]
0167:004709A9  MOV      EDX,03
0167:004709AE  CALL     0040398C
0167:004709B3  LEA      EAX,[EBP-08]
0167:004709B6  MOV      EDX,02
0167:004709BB  CALL     0040398C
0167:004709C0  RET    
0167:004709C1  JMP      00403388
0167:004709C6  JMP      SHORT 004709A3
0167:004709C8  POP      EDI
0167:004709C9  POP      ESI
0167:004709CA  POP      EBX
0167:004709CB  MOV      ESP,EBP
0167:004709CD  POP      EBP
0167:004709CE  RET      04
可看到上面调用8次CALL 00470784 ,然后根据此Call得到的结果再与0AH除得到注册码,我们不凡再跟进此Call看看它到底如何运算0167:00470784  PUSH     EBP
0167:00470785  MOV      EBP,ESP
0167:00470787  ADD      ESP,BYTE -08
0167:0047078A  MOV      [EBP-05],CL             <---CL的值存入[EBP-05]中
0167:0047078D  MOV      [EBP-04],EDX
0167:00470790  LEA      EDX,[EBP-06]
0167:00470793  MOV      EDI,[EBP-04]            <---下D EDI可看到合并后的字符串
0167:00470796  XOR      EBX,EBX                 <---EBX=0
0167:00470798  MOV      BL,[EBP-05]             <---取[EBP-05]中的值到EBX中,控制取第几位值
0167:0047079B  MOV      AL,[EDI+EBX]            <---取合并后字符串的第BL位到AL中
0167:0047079E  MOV      BL,[EBP+10]             <---[EBP+10]中为第1个入栈的参数值
0167:004707A1  XOR      AL,[EDI+EBX]            
0167:004707A4  MOV      BL,[EBP+0C]             <---[EBP+0C]中为第2个入栈的参数值
0167:004707A7  MOV      CL,[EDI+EBX]
0167:004707AA  ROL      AL,CL
0167:004707AC  MOV      BL,[EBP+08]             <---[EBP+08]中为第3个入栈的参数值
0167:004707AF  XOR      AL,[EDI+EBX]
0167:004707B2  MOV      [EBP-06],AL             <---结果存入[EBP-06]中
0167:004707B5  MOV      AL,[EDX]
0167:004707B7  POP      ECX
0167:004707B8  POP      ECX
0167:004707B9  POP      EBP
0167:004707BA  RET      0C
我们可大概得出此Call的计算方法,即根据CL值及入口参数确定取合并字符串的的第几位,然后参与运算。
该程序注册成功后将注册信息保存在注册表的
“HKEY_LOCAL_MACHINE/Software/Pegtop/Xfader”中
我得到的为
用户名:ShenGe
注册码:99835539

总会有一些简单的遗憾   简单的一如从前
总会有一些一些改变     随着这岁月变迁


    
    
     
    
    
     

相关阅读 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破解如何给软件脱壳基础教程