首页
社区
课程
招聘
[原创]轻松击破BitEncrypt软件加密套件之“加密试用功能”
发表于: 2007-2-19 15:08 7522

[原创]轻松击破BitEncrypt软件加密套件之“加密试用功能”

2007-2-19 15:08
7522
【文章标题】: 轻松击破BitEncrypt软件加密套件之“加密试用功能”
【文章作者】: KuNgBiM
【作者邮箱】: kungbim@163.com
【作者主页】: http://www.crkcn.com
【软件名称】: BitEncrypt软件加密套件0.11D
【软件大小】: 75KB
【下载地址】: 自己搜索下载
【加壳方式】: ASPack2.12
【保护方式】: 加密组件调用
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: OD
【操作平台】: 盗版XPsp2
【软件介绍】:
    BitEncrypt软件加密套件(BEWorkShop)是一套用于软件加密的组件,它包括BEWorkShop加密组件和BEProtect加壳工具。
  BEWorkShop加密组件:
    以DLL方式提供,包括RSA128、RSA256、RSA512、RSA1024、RSA2048、RSA4096、获取硬盘系列号、获取文件CRC32校验值、软件反跟踪功能;
  BEProtect加壳工具:
    用于对EXE、DLL、OCX等可执行文件进行加壳保护。
  软件保护:
    采用RSA1024、RSA2048或RSA4096进行注册码保护,通过获取硬盘系列号作为加密依据,同时应用CRC32校验程序完整性和进行程序反跟踪    ,最后使用BEProtect加壳保护,使您的程序由里到外都有很强的保护。
  说明:
  1、RSA算法运算速度极快: <1024位加密、解密不超过1秒> <2048位加密、解密不超过2秒> <4096位加密、解密不超过6秒>
  2、获取硬盘物理系列号不需要管理员权限;
  3、CRC32算法应用汇编和固定码表,运算速度大大提高;
  4、RSA算法支持中文字符加密、解密;
  5、支持16进制、10进制数据加密、解密;
  6、防止非法注册机的制作。
--------------------------------------------------------------------------------
【详细过程】
  今天论坛上闲逛时发现BitEncrypt软件加密套件的介绍不错,非常NB,决定调试一翻,官方已经更新至0.11D版本,但保护不可恭维。。。
  
  大家可以到http://www.pefine.com/或http://www.onlinedown.net/soft/47253.htm下载加密套件。
  
  解压后将就用他的“调用例子”做了个目标程序,方便起见,我调用的是VB程序例子。代码如下(相关程序见附件):
  
  ====================================================================================================
  
  '程序调用部分
  
  Private Sub Form_Load()
  '允许试用次数为10次
  Dim lInt As Integer
  lInt = GetTrialTime(10)
  Select Case lInt
  Case -1
    Form1.Caption = "PEWorkShop加密套件 - " & "软件调用错误请与作者联系!"
    Command1.Caption = "非法使用"
    Command1.Enabled = False
  Case 0
    Form1.Caption = "PEWorkShop加密套件 - " & "软件试用次数已到请购买软件!"
    Command1.Caption = "已过期"
    Command1.Enabled = False
  Case Else
    Form1.Caption = "PEWorkShop加密套件 - " & "软件已试用" & CStr(lInt) & "次!"
  End Select
  '反调试、补丁、监视工具
  If AntiDebug Then
    MsgBox "软件被调试!", vbOKOnly, "提示"
  End If
  
  If AntiLoader Then
    MsgBox "软件被调试!", vbOKOnly, "提示"
  End If
  
  If AntiMonitor Then
    MsgBox "软件被监视!", vbOKOnly, "提示"
  End If
  End Sub
  
  '模块调用部分
  
  '试用时间
  Public Declare Function GetTrialTime Lib "PEWorkShop.DLL" (ByVal iTrialTime As Integer) As Integer
  '反调试、补丁、监视工具
  Public Declare Function AntiDebug Lib "PEWorkShop.DLL" () As Boolean
  Public Declare Function AntiLoader Lib "PEWorkShop.DLL" () As Boolean
  Public Declare Function AntiMonitor Lib "PEWorkShop.DLL" () As Boolean
  
  ====================================================================================================
  
  根据上面代码编译后,我们就制作完成了一个演示目标程序。
  
  由于程序调用的组件“PEWorkShop.dll”使用了ASPack 2.12加壳,而我们为使调试方便,所以先将“PEWorkShop.dll”做脱壳处理。
  
  OD装载演示程序,由于我们了解到程序要调用该加密组件,必须使用“GetTrialTime”函数,所以我们装载目标程序后可以利用OD字符串搜索。
  插件搜索这个字符,搜索来到:
  ====================================================================================================
  Ultra String Reference Plugin
  Address    Disassembly                               Text String
  004011E4   push    004014CC                          (Initial CPU selection)
  00401E13   push    00401DF0                          PEWorkShop.DLL
  00401E13   push    00401DF0                          GetTrialTime        //双击此处来到00401E13
  00401E57   push    00401E34                          PEWorkShop.DLL
  00401E57   push    00401E34                          AntiDebug
  00401E9B   push    00401E78                          PEWorkShop.DLL
  00401E9B   push    00401E78                          AntiLoader
  00401EDF   push    00401EBC                          PEWorkShop.DLL
  00401EDF   push    00401EBC                          AntiMonitor
  00402251   push    00401F00                          P
  00402294   push    00401FA8                          !k!
  004022FA   push    00401F00                          P
  004023C7   push    00401F00                          P
  ====================================================================================================
  我们来到这里:
  
  00401E08   $  A1 40334000                     mov     eax, dword ptr [403340]               ;  这里设断,F9运行
  00401E0D   .  0BC0                            or      eax, eax
  00401E0F   .  74 02                           je      short 00401E13                        ;  寻找加密组件
  00401E11   .  FFE0                            jmp     eax
  00401E13   >  68 F01D4000                     push    00401DF0                              ;  PEWorkShop.DLL
  00401E18   .  B8 70114000                     mov     eax, <jmp.&MSVBVM60.DllFunctionCall>  ;  准备调用
  00401E1D   .  FFD0                            call    eax
  00401E1F   .  FFE0                            jmp     eax                                   ;  进入组件内部!F7跟进
  
  F7跟进到:
  
  100060E0    81EC 18030000                     sub     esp, 318                        ; 跟进到这里
  100060E6    53                                push    ebx
  100060E7    55                                push    ebp
  100060E8    56                                push    esi
  100060E9    57                                push    edi
  100060EA    B9 3F000000                       mov     ecx, 3F
  100060EF    33C0                              xor     eax, eax
  100060F1    8DBC24 29020000                   lea     edi, dword ptr [esp+229]        ; ASCII "TrialTime"
  100060F8    C68424 28020000 00                mov     byte ptr [esp+228], 0
  10006100    F3:AB                             rep     stos dword ptr es:[edi]
  10006102    8B1D 20000110                     mov     ebx, dword ptr [10010020]       ; ADVAPI32.RegOpenKeyA
  10006108    66:AB                             stos    word ptr es:[edi]
  1000610A    8D4424 10                         lea     eax, dword ptr [esp+10]
  1000610E    50                                push    eax
  1000610F    68 CC360110                       push    100136CC                        ; ASCII "SOFTWARE\Microsoft\aSoft"
  10006114    68 02000080                       push    80000002
  10006119    FFD3                              call    ebx
  1000611B    8D4C24 24                         lea     ecx, dword ptr [esp+24]
  1000611F    8D9424 28020000                   lea     edx, dword ptr [esp+228]
  10006126    51                                push    ecx
  10006127    8B4C24 14                         mov     ecx, dword ptr [esp+14]
  1000612B    8D4424 24                         lea     eax, dword ptr [esp+24]
  1000612F    52                                push    edx
  10006130    50                                push    eax
  10006131    6A 00                             push    0
  10006133    68 C4360110                       push    100136C4                        ; ASCII "aSoft"
  10006138    51                                push    ecx
  10006139    FF15 00000110                     call    dword ptr [10010000]            ; ADVAPI32.RegQueryValueExA
  1000613F    8B2D 04000110                     mov     ebp, dword ptr [10010004]       ; ADVAPI32.RegCloseKey
  10006145    8B5424 10                         mov     edx, dword ptr [esp+10]
  10006149    52                                push    edx
  1000614A    FFD5                              call    ebp                             ; 使用加密所使用后的次数数据
  1000614C    B9 3F000000                       mov     ecx, 3F
  10006151    33C0                              xor     eax, eax
  10006153    8DBC24 29010000                   lea     edi, dword ptr [esp+129]
  1000615A    C68424 28010000 00                mov     byte ptr [esp+128], 0
  10006162    F3:AB                             rep     stos dword ptr es:[edi]
  10006164    66:AB                             stos    word ptr es:[edi]
  10006166    B9 3F000000                       mov     ecx, 3F
  1000616B    33C0                              xor     eax, eax
  1000616D    8D7C24 29                         lea     edi, dword ptr [esp+29]
  10006171    C64424 28 00                      mov     byte ptr [esp+28], 0
  10006176    F3:AB                             rep     stos dword ptr es:[edi]
  10006178    8B0D BC360110                     mov     ecx, dword ptr [100136BC]
  1000617E    66:8B15 C0360110                  mov     dx, word ptr [100136C0]
  10006185    66:AB                             stos    word ptr es:[edi]
  10006187    A1 B8360110                       mov     eax, dword ptr [100136B8]
  1000618C    894C24 18                         mov     dword ptr [esp+18], ecx
  10006190    894424 14                         mov     dword ptr [esp+14], eax
  10006194    A0 C2360110                       mov     al, byte ptr [100136C2]
  10006199    884424 1E                         mov     byte ptr [esp+1E], al
  1000619D    8DBC24 28020000                   lea     edi, dword ptr [esp+228]        ; ASCII "AE8D19D2C3B52844"
  100061A4    83C9 FF                           or      ecx, FFFFFFFF
  100061A7    33C0                              xor     eax, eax
  100061A9    F2:AE                             repne   scas byte ptr es:[edi]
  100061AB    F7D1                              not     ecx
  100061AD    49                                dec     ecx
  100061AE    66:895424 1C                      mov     word ptr [esp+1C], dx
  100061B3    83F9 10                           cmp     ecx, 10
  100061B6    75 1E                             jnz     short 100061D6
  100061B8    8D4C24 28                         lea     ecx, dword ptr [esp+28]
  100061BC    8D5424 14                         lea     edx, dword ptr [esp+14]         ; 访问组件中的所有服务项, ASCII
  "allServer"
  100061C0    51                                push    ecx
  100061C1    8D8424 2C020000                   lea     eax, dword ptr [esp+22C]        ; ASCII "AE8D19D2C3B52844"
  100061C8    52                                push    edx                             ; 访问网络?ASCII "pefine.com"
  100061C9    50                                push    eax                             ; ASCII "AE8D19D2C3B52844"
  100061CA    E8 B1FDFFFF                       call    10005F80
  100061CF    8D4C24 28                         lea     ecx, dword ptr [esp+28]
  100061D3    51                                push    ecx
  100061D4    EB 08                             jmp     short 100061DE
  100061D6    8D9424 28020000                   lea     edx, dword ptr [esp+228]
  100061DD    52                                push    edx
  100061DE    E8 9B160000                       call    1000787E
  100061E3    8BD0                              mov     edx, eax                        ; EAX中保留的为已使用次数
  100061E5    83C4 04                           add     esp, 4
  100061E8    85D2                              test    edx, edx
  100061EA    0F85 B6000000                     jnz     100062A6                        ; ??????
  100061F0    B9 3F000000                       mov     ecx, 3F
  100061F5    8DBC24 28010000                   lea     edi, dword ptr [esp+128]
  100061FC    F3:AB                             rep     stos dword ptr es:[edi]
  100061FE    66:AB                             stos    word ptr es:[edi]
  10006200    AA                                stos    byte ptr es:[edi]
  10006201    B9 3F000000                       mov     ecx, 3F
  10006206    33C0                              xor     eax, eax
  10006208    8D7C24 28                         lea     edi, dword ptr [esp+28]
  1000620C    8D9424 28010000                   lea     edx, dword ptr [esp+128]
  10006213    F3:AB                             rep     stos dword ptr es:[edi]
  10006215    66:AB                             stos    word ptr es:[edi]
  10006217    AA                                stos    byte ptr es:[edi]
  10006218    BF B4360110                       mov     edi, 100136B4
  1000621D    83C9 FF                           or      ecx, FFFFFFFF
  10006220    33C0                              xor     eax, eax
  10006222    F2:AE                             repne   scas byte ptr es:[edi]
  10006224    F7D1                              not     ecx
  10006226    2BF9                              sub     edi, ecx
  10006228    8BC1                              mov     eax, ecx
  1000622A    8BF7                              mov     esi, edi
  1000622C    8BFA                              mov     edi, edx
  1000622E    8D5424 14                         lea     edx, dword ptr [esp+14]
  10006232    C1E9 02                           shr     ecx, 2
  10006235    F3:A5                             rep     movs dword ptr es:[edi], dword >
  10006237    8BC8                              mov     ecx, eax
  10006239    8D8424 28010000                   lea     eax, dword ptr [esp+128]
  10006240    83E1 03                           and     ecx, 3
  10006243    F3:A4                             rep     movs byte ptr es:[edi], byte pt>
  10006245    8D4C24 28                         lea     ecx, dword ptr [esp+28]
  10006249    51                                push    ecx
  1000624A    52                                push    edx
  1000624B    50                                push    eax
  1000624C    E8 BFFBFFFF                       call    10005E10
  10006251    8D4C24 10                         lea     ecx, dword ptr [esp+10]
  10006255    51                                push    ecx
  10006256    68 CC360110                       push    100136CC                        ; ASCII "SOFTWARE\Microsoft\aSoft"
  1000625B    68 02000080                       push    80000002
  10006260    FF15 08000110                     call    dword ptr [10010008]            ; ADVAPI32.RegCreateKeyA
  10006266    8D7C24 28                         lea     edi, dword ptr [esp+28]
  1000626A    83C9 FF                           or      ecx, FFFFFFFF
  1000626D    33C0                              xor     eax, eax
  1000626F    8D5424 28                         lea     edx, dword ptr [esp+28]
  10006273    F2:AE                             repne   scas byte ptr es:[edi]
  10006275    F7D1                              not     ecx
  10006277    49                                dec     ecx
  10006278    51                                push    ecx
  10006279    52                                push    edx
  1000627A    6A 01                             push    1
  1000627C    50                                push    eax
  1000627D    8B4424 20                         mov     eax, dword ptr [esp+20]
  10006281    68 C4360110                       push    100136C4                        ; ASCII "aSoft"
  10006286    50                                push    eax
  10006287    FF15 0C000110                     call    dword ptr [1001000C]            ; ADVAPI32.RegSetValueExA
  1000628D    8B4C24 10                         mov     ecx, dword ptr [esp+10]
  10006291    51                                push    ecx
  10006292    FFD5                              call    ebp
  10006294    5F                                pop     edi
  10006295    5E                                pop     esi
  10006296    5D                                pop     ebp
  10006297    B8 01000000                       mov     eax, 1
  1000629C    5B                                pop     ebx
  1000629D    81C4 18030000                     add     esp, 318
  100062A3    C2 0400                           retn    4
  100062A6    3B9424 2C030000                   cmp     edx, dword ptr [esp+32C]      ; 内存中保留规定次数,EDX中为已使用次数
  100062AD    0F8D 9E000000                     jge     10006351                      ; ★这里就是TNT点,NOP掉后永久试用!★
  100062B3    B9 3F000000                       mov     ecx, 3F
  100062B8    33C0                              xor     eax, eax
  100062BA    8DBC24 28010000                   lea     edi, dword ptr [esp+128]
  100062C1    8D72 01                           lea     esi, dword ptr [edx+1]
  100062C4    F3:AB                             rep     stos dword ptr es:[edi]
  100062C6    66:AB                             stos    word ptr es:[edi]
  100062C8    AA                                stos    byte ptr es:[edi]
  100062C9    B9 3F000000                       mov     ecx, 3F
  100062CE    33C0                              xor     eax, eax
  100062D0    8D7C24 28                         lea     edi, dword ptr [esp+28]
  100062D4    8D9424 28010000                   lea     edx, dword ptr [esp+128]
  100062DB    F3:AB                             rep     stos dword ptr es:[edi]
  100062DD    66:AB                             stos    word ptr es:[edi]
  100062DF    6A 0A                             push    0A
  100062E1    52                                push    edx
  100062E2    56                                push    esi
  100062E3    AA                                stos    byte ptr es:[edi]
  100062E4    E8 386C0000                       call    1000CF21
  100062E9    83C4 0C                           add     esp, 0C
  100062EC    8D4424 28                         lea     eax, dword ptr [esp+28]
  100062F0    8D4C24 14                         lea     ecx, dword ptr [esp+14]
  100062F4    8D9424 28010000                   lea     edx, dword ptr [esp+128]
  100062FB    50                                push    eax
  100062FC    51                                push    ecx
  100062FD    52                                push    edx
  100062FE    E8 0DFBFFFF                       call    10005E10
  10006303    8D4424 10                         lea     eax, dword ptr [esp+10]
  10006307    50                                push    eax
  10006308    68 CC360110                       push    100136CC                        ; ASCII "SOFTWARE\Microsoft\aSoft"
  1000630D    68 02000080                       push    80000002
  10006312    FFD3                              call    ebx
  10006314    8D7C24 28                         lea     edi, dword ptr [esp+28]
  10006318    83C9 FF                           or      ecx, FFFFFFFF
  1000631B    33C0                              xor     eax, eax
  1000631D    8B5424 10                         mov     edx, dword ptr [esp+10]
  10006321    F2:AE                             repne   scas byte ptr es:[edi]
  10006323    F7D1                              not     ecx
  10006325    49                                dec     ecx
  10006326    51                                push    ecx
  10006327    8D4C24 2C                         lea     ecx, dword ptr [esp+2C]
  1000632B    51                                push    ecx
  1000632C    6A 01                             push    1
  1000632E    50                                push    eax
  1000632F    68 C4360110                       push    100136C4                        ; ASCII "aSoft"
  10006334    52                                push    edx
  10006335    FF15 0C000110                     call    dword ptr [1001000C]            ; ADVAPI32.RegSetValueExA
  1000633B    8B4424 10                         mov     eax, dword ptr [esp+10]
  1000633F    50                                push    eax
  10006340    FFD5                              call    ebp
  10006342    8BC6                              mov     eax, esi
  10006344    5F                                pop     edi
  10006345    5E                                pop     esi
  10006346    5D                                pop     ebp
  10006347    5B                                pop     ebx
  10006348    81C4 18030000                     add     esp, 318
  1000634E    C2 0400                           retn    4                               ;  反馈给程序
  
--------------------------------------------------------------------------------
【经验总结】
  总结:经过测试,被我们修改过的加密组件用于编译其他的程序,程序调用的“加密试用功能”均已失效。
  
  指出:大家也可以使用这样的调试方法一一击破程序中的“1 ~ 6”个特色功能。
  
  思考:难道以后遇见由“BitEncrypt软件加密套件”加密调用的程序,只需要替换这个“PEWorkShop.DLL”就能通用破解?
  
  意见:要求“BitEncrypt软件加密套件”厂商提供给用户使用的是源代码,然后进行自我编译,而不是现成的动态连接库文件。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年02月19日 PM 03:02:24

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
2
【本地下载】BitEncrypt软件加密套件 0.11D
上传的附件:
2007-2-19 15:10
0
雪    币: 89
活跃值: (151)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
老K就是老K新年头也这么用功
2007-2-19 15:17
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
4
其实利用修改注册表,也可以达到目的:

REGEDIT4

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\aSoft]
2007-2-19 15:41
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
被老k瞄上的东西,都会不走运
2007-2-19 17:48
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
修改后直接用dll2lib做一个,挺好用的
2007-2-19 19:02
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
7
最初由 sbright 发布
被老k瞄上的东西,都会不走运


2007-2-20 02:21
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
不会提供源代码的,最多lib :)
2007-2-20 02:48
0
雪    币: 281
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
老K能不能帮我看看这个(http://www.live-share.com/files/162432/f.rar.html),是用BitEncrypt加密的,最好能做出keygen
2007-2-20 11:42
0
雪    币: 158
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
学习....
2007-2-20 12:13
0
雪    币: 207
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
你太有才了!
2007-2-20 16:09
0
游客
登录 | 注册 方可回帖
返回
//