首页
社区
课程
招聘
Second段内存断点――比泰软件防盗版战士2005J V1.00脱壳
发表于: 2005-2-3 21:25 17968

Second段内存断点――比泰软件防盗版战士2005J V1.00脱壳

fly 活跃值
85
2005-2-3 21:25
17968

妙用Second段内存断点大法――比泰软件防盗版战士2005J V1.00脱壳
            
           
            
下载页面:  http://www.skycn.com/soft/10178.html
软件大小:  1052 KB
软件语言:  简体中文
软件类别:  国产软件 / 试用版 / 加密工具
应用平台:  Win9x/NT/2000/XP
加入时间:  2005-01-10 15:14:20
下载次数:  2982
推荐等级:  ****
开 发 商:  http://WWW.bittide.com/
软件介绍:  比泰软件防盗版战士(BS-APC),是比泰科技(?2002-2005)出品的一个软件加密保护产品系列(含L版、A版、J版等产品线),它们为商业软件提供可靠的防盗版保护并支持数字化发行。|它采用比泰公司世界领先的“执行代码抽取加密”技术,软硬件结合,以“认证技术”保证软件“对象安全”、以“功能相关法”保证软件“入口安全”、以具有唯一性的计算机(物理)特征数据作为身份认证指纹,并以软件用户计算机本身的运算能力进行防盗版保护。|具有64位以上,到128位的加密安全强度。安全强度远胜传统的外壳加密式加密狗、API内嵌式加密狗,软件保护的功能范围及运行效率超过智能狗,且无须学习加密狗编程,不引入附加硬件维护问题。|适合对C/MFC/Visual C++(VC++)/Borland C++ Builder(BCB)、Delphi/Object Pascal、Power Builder(PB)、Authorware、Director等开发工具所编译程序的保护。|因为它是对真实指令进行代码抽取加密,因此暂不保护伪编译程序,如VB、VFP、C#、JAVA。
              
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
            
【调试环境】:WinXP、Ollydbg V1.10、PEiD、LordPE、ImportREC
            
―――――――――――――――――――――――――――――――――
【脱壳过程】:
         
         
比泰软件防盗版战士是国产壳,有些特色。
壳首先通过ShareDll.dll对EXE主程序解码,包括重新定位IAT。
ShareDll.dll就是这个壳的特征!IAT处理有点繁琐。
OEP就是壳的EP,呵呵,不必寻找了。
简单写一下脱壳过程,希望作者能够继续完善这个壳,成长为新的猛壳。   
―――――――――――――――――――――――――――――――――
一、两次Second段内存断点定位输入表处理部分
            
      
1、预处理
      
设置Ollydbg忽略所有异常选项。设置Ollydbg暂停在系统断点。
老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。

7C921231     C3                         retn
//进入Ollydbg后暂停在系统断点

Alt+B 察看断点窗口,会发现Ollydbg默认在BSLicense.exe的EP处设置了断点
点右键,删除这个断点,否则会导致解码出错!

现在Alt+M 显示内存窗口,在第2个区段00401000段“设置内存写入断点”。
F9运行,中断下来,取消断点。Ctrl+F9执行到返回

10002C83     8908                mov dword ptr ds:[eax],ecx
//中断在这里
10002C85     8B4C24 2C           mov ecx,dword ptr ss:[esp+2C]
10002C89     8950 04             mov dword ptr ds:[eax+4],edx
10002C8C     8B5424 30           mov edx,dword ptr ss:[esp+30]
10002C90     8948 08             mov dword ptr ds:[eax+8],ecx
10002C93     8950 0C             mov dword ptr ds:[eax+C],edx
10002C96     75 AA               jnz short Sharedll.10002C42
10002C98     5D                  pop ebp
10002C99     5B                  pop ebx
10002C9A     8D4C24 08           lea ecx,dword ptr ss:[esp+8]
10002C9E     C74424 34 FFFFFFFF  mov dword ptr ss:[esp+34],-1
10002CA6     C1E7 04             shl edi,4
10002CA9     E8 D2E4FFFF         call Sharedll.10001180
10002CAE     8B4C24 2C           mov ecx,dword ptr ss:[esp+2C]
10002CB2     8BC7                mov eax,edi
10002CB4     5F                  pop edi
10002CB5     5E                  pop esi
10002CB6     64:890D 00000000    mov dword ptr fs:[0],ecx
10002CBD     83C4 30             add esp,30
10002CC0     C2 1000             retn 10
//或者直接F4至这里

――――――――――――――――――――――――
2、第二次Second段内存断点定位输入表处理部分

现在再次在00401000段“设置内存写入断点”。F9运行,中断后取消断点。
OK,我们就来到了ShareDll.dll中对EXE主程序输入表的处理部分了。

下面这段可能看着比较郁闷,你可以比较一下加壳程序运行流程和下面修改后的运行流程,这样容易理解点。

10002A0B     8B4424 0C           mov eax,dword ptr ss:[esp+C]
10002A0F     C606 E9             mov byte ptr ds:[esi],0E9
//中断在这里,我们要在这里Patch,否则壳会把输入表搞的乱七八糟。
//修改为:jmp 10009900 ★  跳到Patch代码
10002A12     2BC6                sub eax,esi
10002A14     83C0 FB             add eax,-5
10002A17     8946 01             mov dword ptr ds:[esi+1],eax
10002A1A     8B5424 14           mov edx,dword ptr ss:[esp+14]
10002A1E     8B4424 20           mov eax,dword ptr ss:[esp+20]
//[esp+20]保存的是命令类型  ★
10002A22     3D 2D8B0000         cmp eax,8B2D
//分支①、8B2D ★
10002A27     893A                mov dword ptr ds:[edx],edi
10002A29     0F8F 9C000000       jg Sharedll.10002ACB
10002A2F     0F84 86000000       je Sharedll.10002ABB
10002A35     3D 158B0000         cmp eax,8B15
//分支②、8B15 ★
10002A3A     7F 68               jg short Sharedll.10002AA4
10002A3C     74 38               je short Sharedll.10002A76
10002A3E     3D A1000000         cmp eax,0A1
//分支③、A1 ★
10002A43     74 1B               je short Sharedll.10002A60
10002A45     3D 0D8B0000         cmp eax,8B0D
//分支④、8B0D ★
10002A4A     0F85 D9000000       jnz Sharedll.10002B29
10002A50     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002A54     8D46 06             lea eax,dword ptr ds:[esi+6]
10002A57     C601 8B             mov byte ptr ds:[ecx],8B
10002A5A     C641 01 0D          mov byte ptr ds:[ecx+1],0D
10002A5E     EB 24               jmp short Sharedll.10002A84
10002A60     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002A64     8D46 05             lea eax,dword ptr ds:[esi+5]
10002A67     C601 A1             mov byte ptr ds:[ecx],0A1
10002A6A     8B5424 14           mov edx,dword ptr ss:[esp+14]
10002A6E     8951 01             mov dword ptr ds:[ecx+1],edx
10002A71     83C1 05             add ecx,5
10002A74     EB 18               jmp short Sharedll.10002A8E
10002A76     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002A7A     8D46 06             lea eax,dword ptr ds:[esi+6]
10002A7D     C601 8B             mov byte ptr ds:[ecx],8B
10002A80     C641 01 15          mov byte ptr ds:[ecx+1],15
10002A84     8B5424 14           mov edx,dword ptr ss:[esp+14]
10002A88     8951 02             mov dword ptr ds:[ecx+2],edx
10002A8B     83C1 06             add ecx,6
10002A8E     2BC1                sub eax,ecx
10002A90     C601 E9             mov byte ptr ds:[ecx],0E9
10002A93     83E8 05             sub eax,5
10002A96     5F                  pop edi
10002A97     8941 01             mov dword ptr ds:[ecx+1],eax
10002A9A     5E                  pop esi
10002A9B     33C0                xor eax,eax
10002A9D     5B                  pop ebx
10002A9E     83C4 10             add esp,10
10002AA1     C2 0C00             retn 0C
10002AA4     3D 1D8B0000         cmp eax,8B1D
//分支⑤、8B1D ★
10002AA9     75 7E               jnz short Sharedll.10002B29
10002AAB     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002AAF     8D46 06             lea eax,dword ptr ds:[esi+6]
10002AB2     C601 8B             mov byte ptr ds:[ecx],8B
10002AB5     C641 01 1D          mov byte ptr ds:[ecx+1],1D
10002AB9     EB C9               jmp short Sharedll.10002A84
10002ABB     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002ABF     8D46 06             lea eax,dword ptr ds:[esi+6]
10002AC2     C601 8B             mov byte ptr ds:[ecx],8B
10002AC5     C641 01 2D          mov byte ptr ds:[ecx+1],2D
10002AC9     EB B9               jmp short Sharedll.10002A84
10002ACB     3D 15FF0000         cmp eax,0FF15
//分支⑥、FF15 ★
10002AD0     7F 3D               jg short Sharedll.10002B0F
10002AD2     74 2C               je short Sharedll.10002B00
10002AD4     2D 358B0000         sub eax,8B35
10002AD9     74 15               je short Sharedll.10002AF0
10002ADB     83E8 08             sub eax,8
10002ADE     75 49               jnz short Sharedll.10002B29
10002AE0     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002AE4     8D46 06             lea eax,dword ptr ds:[esi+6]
10002AE7     C601 8B             mov byte ptr ds:[ecx],8B
10002AEA     C641 01 3D          mov byte ptr ds:[ecx+1],3D
10002AEE     EB 94               jmp short Sharedll.10002A84
10002AF0     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002AF4     8D46 06             lea eax,dword ptr ds:[esi+6]
10002AF7     C601 8B             mov byte ptr ds:[ecx],8B
10002AFA     C641 01 35          mov byte ptr ds:[ecx+1],35
10002AFE     EB 84               jmp short Sharedll.10002A84
10002B00     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002B04     8D46 06             lea eax,dword ptr ds:[esi+6]
10002B07     C601 FF             mov byte ptr ds:[ecx],0FF
10002B0A     E9 71FFFFFF         jmp Sharedll.10002A80
10002B0F     3D 25FF0000         cmp eax,0FF25
//分支⑦、FF25 ★
10002B14     75 13               jnz short Sharedll.10002B29
10002B16     8B4C24 10           mov ecx,dword ptr ss:[esp+10]
10002B1A     8D46 06             lea eax,dword ptr ds:[esi+6]
10002B1D     C601 FF             mov byte ptr ds:[ecx],0FF
10002B20     C641 01 25          mov byte ptr ds:[ecx+1],25
10002B24     E9 5BFFFFFF         jmp Sharedll.10002A84
10002B29     5F                  pop edi
10002B2A     C743 04 15270000    mov dword ptr ds:[ebx+4],2715
10002B31     5E                  pop esi
10002B32     83C8 FF             or eax,FFFFFFFF
10002B35     5B                  pop ebx
10002B36     83C4 10             add esp,10
10002B39     C2 0C00             retn 0C

――――――――――――――――――――――――
3、Patch 处理:搞定输入表

现在我们要找2个地方
1、Patch代码存放地址  选择Patch代码存放的地址时候要小心,其他地方会引发异常。可以用playar兄弟的MemoryManage插件申请一段临时内存。一般在ShareDll.dll第2区段的末尾处可以存放临时数据。
2、跳转表存放地址   这里的地址要保证是不被占用的空白处,我选择放在00430660处。

10009900     53                  push ebx
10009901     3E:8B5C24 70        mov ebx,dword ptr ds:[esp+70]; kernel32.7C800000
//[esp-70]处保存的是处理DLL的基址 ★
10009906     3B1D 00064300       cmp ebx,dword ptr ds:[430600]; kernel32.7C800000
//提前在[430600]处写入当前处理DLL的基址 ★
1000990C     74 0D               je short Sharedll.1000991B
//这样比较前后2次处理的函数是否是同一个DLL的
1000990E     891D 00064300       mov dword ptr ds:[430600],ebx
10009914     8305 04064300 04    add dword ptr ds:[430604],4
//提前在[430604]处写入准备放跳转地址的地址00430660  ★ 呵呵,有点拗口了
1000991B     3B3D 08064300       cmp edi,dword ptr ds:[430608]; ntdll.RtlReAllocateHeap
//第一个函数过后在[430608]处写入第一个函数的地址
10009921     74 0D               je short Sharedll.10009930
//这个壳把一个相同函数放好几个地方,比较烦
//比较前后2次处理的函数是否相同 ★
10009923     893D 08064300       mov dword ptr ds:[430608],edi
//保存不同函数地址的值
10009929     8305 04064300 04    add dword ptr ds:[430604],4
//跳转地址+4
10009930     3E:8B5C24 24        mov ebx,dword ptr ds:[esp+24]
//[esp+24]是壳放置的命令类型代码! ★
10009935     81FB A1000000       cmp ebx,0A1
//有一个单字节的,所以需要单独提出来
1000993B     74 11               je short Sharedll.1000994E
1000993D     86FB                xchg bl,bh
//前后位调换
1000993F     891E                mov dword ptr ds:[esi],ebx
//写入主程序
10009941     8B1D 04064300       mov ebx,dword ptr ds:[430604]; BSLicens.00430660
10009947     893B                mov dword ptr ds:[ebx],edi
//正确函数写入 ★
10009949     895E 02             mov dword ptr ds:[esi+2],ebx
//跳转地址写入 ★
1000994C     EB 0D               jmp short Sharedll.1000995B
1000994E     891E                mov dword ptr ds:[esi],ebx
10009950     8B1D 04064300       mov ebx,dword ptr ds:[430604]; BSLicens.00430660
10009956     893B                mov dword ptr ds:[ebx],edi
10009958     895E 01             mov dword ptr ds:[esi+1],ebx
1000995B     5B                  pop ebx
1000995C     E9 B990FFFF         jmp Sharedll.10002A1A
//跳回去继续流程

从Ollydbg中“二进制复制”如下:
53 3E 8B 5C 24 70 3B 1D 00 06 43 00 74 0D 89 1D 00 06 43 00 83 05 04 06 43 00 04 3B 3D 08 06 43
00 74 0D 89 3D 08 06 43 00 83 05 04 06 43 00 04 3E 8B 5C 24 24 81 FB A1 00 00 00 74 11 86 FB 89
1E 8B 1D 04 06 43 00 89 3B 89 5E 02 EB 0D 89 1E 8B 1D 04 06 43 00 89 3B 89 5E 01 5B E9 B9 90 FF
FF

―――――――――――――――――――――――――――――――――
二、OEP+完成脱壳

Ctrl+S在“整个段块”搜索命令序列:  
  add esp,4
  xor eax,eax
  pop edi
  pop esi
  pop ebp
  pop ebx
  add esp,230
  retn 4

10002963     85C0                test eax,eax
10002965     7C 0A               jl short Sharedll.10002971
10002967     43                  inc ebx
10002968     83C6 04             add esi,4
//找到这里
1000296B     3BDF                cmp ebx,edi
1000296D     7C DE               jl short Sharedll.1000294D
1000296F     33C0                xor eax,eax
10002971     5F                  pop edi
10002972     5E                  pop esi
10002973     5D                  pop ebp
10002974     5B                  pop ebx
10002975     C2 0C00             retn 0C
//这里下断,F9运行,中断后取消断点

当我们中断在10002975处后,输入表已经处理完毕了。

OEP就是壳的EP,我们可以直接G壳的EP。
还是再次使用Second段内存断点大法吧!
Alt+M 显示内存窗口,在第2个区段00401000段“设置内存访问断点”。
F9运行,直接中断在OEP!

0040F1A8     55                  push ebp
//用LordPE完全Dump这个进程
0040F1A9     8BEC                mov ebp,esp
0040F1AB     6A FF               push -1
0040F1AD     68 60BC4200         push BSLicens.0042BC60
0040F1B2     68 3C314100         push BSLicens.0041313C
0040F1B7     64:A1 00000000      mov eax,dword ptr fs:[0]
0040F1BD     50                  push eax
0040F1BE     64:8925 00000000    mov dword ptr fs:[0],esp
0040F1C5     83EC 58             sub esp,58
0040F1C8     53                  push ebx
0040F1C9     56                  push esi
0040F1CA     57                  push edi
0040F1CB     8965 E8             mov dword ptr ss:[ebp-18],esp
0040F1CE     FF15 F8074300       call dword ptr ds:[4307F8]; kernel32.GetVersion

运行ImportREC,选择这个进程。OEP不用修改,点IT AutoSearch,Get Import得到输入表,现在所有的函数都是有序有效的,FixDump,正常运行!
               
            
―――――――――――――――――――――――――――――――――                                    
         ,     _/
        /| _.-~/            \_     ,        青春都一晌
       ( /~   /              \~-._ |\
       `\\  _/                \   ~\ )          忍把浮名
   _-~~~-.)  )__/;;,.          \_  //'
  /'_,\   --~   \ ~~~-  ,;;\___(  (.-~~~-.        换了破解轻狂
`~ _( ,_..--\ (     ,;'' /    ~--   /._`\
  /~~//'   /' `~\         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`\    `\\~~\   
                         "     "   "~'  ""
   
              UnPacked By :  fly
               2005-02-03 零点


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (50)
雪    币: 5895
活跃值: (2717)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习学习!
2005-2-3 21:42
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
支持你...
2005-2-3 22:27
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
看老大描述的这个壳,我以前好象搞过,不过不知道是这个比特东东。这个壳是不是不能用OD载入,或者说用OD载入后就运行了
2005-2-3 22:29
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看这势头,EPE新版被脱在即了
2005-2-3 23:37
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
蛋蛋11点30还不睡,对皮肤可不好啊!尤其是女人
2005-2-3 23:38
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
2005-2-4 07:26
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8

支持啊!
2005-2-4 08:31
0
雪    币: 86
活跃值: (838)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
厉害!向老大学习!
2005-2-4 09:24
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
10
最初由 鸡蛋壳 发布
看这势头,EPE新版被脱在即了


没说过要脱EPE新版
2005-2-4 09:58
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
11
学习!!!
2005-2-4 10:30
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
12
支持

p.s. EPE2K4 simonzh 都....
2005-2-4 11:52
0
雪    币: 5895
活跃值: (2717)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
要脱 EPE 找simonzh
2005-2-4 13:34
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
14
支持支持!
2005-2-4 14:11
0
雪    币: 398
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
15
最初由 forgot 发布
支持

p.s. EPE2K4 simonzh 都....


EPE2K4 老王还在孕育中.
2005-2-4 14:55
0
雪    币: 206
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
比泰的防盗版加密技术 不是 加壳技术

如“人工智能代码抽取加密原理”及其功能所述,比泰的防盗版加密技术,功夫并不在“加壳”上。它的加密工具本身就是一个任供免费使用的工具。不过,既然看雪学院的高手们这么关注加壳技术,比泰可能于春节后也对之进行加壳处理。
2005-2-8 21:41
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 chi198199 发布
比泰的防盗版加密技术 不是 加壳技术

如“人工智能代码抽取加密原理”及其功能所述,比泰的防盗版加密技术,功夫并不在“加壳”上。它的加密工具本身就是一个任供免费使用的工具。不过,既然看雪学院的高手们这么关注加壳技术,比泰可能于春节后也对之进行加壳处理。

人工智能代码抽取加密原理,好高深啊!
2005-2-9 16:50
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
18
一个disasmer非要说成人工智能代码抽取加密,还原理
2005-2-9 23:05
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
最初由 forgot 发布
一个disasmer非要说成人工智能代码抽取加密,还原理


明明是机器,怎么成了人工智能?XPR都没有这么夸过。
2005-2-10 18:29
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最初由 forgot 发布
一个disasmer非要说成人工智能代码抽取加密,还原理


不说高深点怎么糊弄外行呢?
2005-2-10 19:15
0
雪    币: 206
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
尊敬的朋友、Cracker、比泰的竞争者:

     你们好!

比泰感谢所有关注我们产品的人,你们的所有工作都将对我们产生帮助,衷心感谢你们的支持与关心!

由于fly发表的文章,使比泰的许多客户向比泰提出疑问,公司委托我们做出解答。由于时间紧迫,又是春节期间,核心开发人员多数放假了,因此我们只能作出如下的解释。
首先要说明的一点是,比泰并没有软件加壳的产品,我们并没有研究fly的“脱壳”是否可行,因为那并不是一个比泰的“壳”。但是有人说是“壳”,我们也没办法。
其次,比泰的核心技术在于“入口安全”与“一维检测”―“入口安全”这一概念就是由比泰的创始人于上世纪80年代提出的。
第三,比泰从来不对技术保密,原因如下:比泰认为任何要保密的技巧都是不安全的,只有建立在可计算复杂度上的技术才是可能安全的。目前多数加壳工具都是要保密技巧的技术,比泰认为都是不安全的。就这一点,曾经有人向比泰要过详细的技术说明,但可能我们的说明他没看懂;因为“代码多态”与“生命体变换”等人工智能问题涉及众多前沿数学,就是一个算法也要一本书才能讲明白(如遗传算法);因此,希望他能谅解我们的解释不详细,并希望他多研究一些前沿数学,再来研究我们的技术。

对Cracker来说,以上讲的也许全是废话,为了感谢大家对比泰的关心与支持,我们也做了点工作,有以下几个目的:
1、用事实向比泰的客户做出解释。
2、为Cracker提供一个施展才华的机会。
我们根据以下原则,做了一个所谓的“壳”:
1、加密复杂度大约在两个月(就是8周,40个工作日,约320个小时的工作量)的破解难度。
2、不加入反内存补丁技术。
3、不加入反断点技术。
4、不加入反一般调试工具技术(如Ollydbg)。
5、不加入人工智能技术。
6、加入反SoftICE与TRW技术。
7、加入多线程技术。
8、加入主动防破解技术(难度尽量低)。
我们还是用BSLicense.exe为对象。如果fly的“破解”是正确的,可用其结果(不是破解方法)直接加入新的BSLicense.exe中,BSLicense.exe就可独立运行,这足以说明我们只是对原BSLicense.exe加了个“壳”。另外,我们这样做,也足以说明比泰是公开技术的。文件包是http://www.BitTide.com/download/BSLicense.rar。

但是,我们这样做,有人会说:“你们的人工智能是什么?”。为了大家能研究与认识比泰的“人工智能加密”,我们也做了点工作,有以下目的:
1、说明比泰有真正的“人工智能”。
2、比泰能做反任何调试工具的技术。
我们根据以下原则,也做了一个所谓的“壳”:
1、加密复杂度大约在一个月(就是4周,20个工作日,约160个小时的工作量)的破解难度。
2、不加入反内存补丁技术。
3、不加入反断点技术。
4、不加入反一般调试工具技术(如Ollydbg可以很好地调试)。
5、加入人工智能技术,难度小于5(比泰的一般难度在5000以上)。
6、加入反SoftICE与TRW技术。
7、不加入多线程技术。
8、不加入主动防破解技术。
如果把“反一般调试工具技术”做进去,破解难度太大,我们用变通的方法来说明这点。这个程序包是http://www.BitTide.com/download/Jtools.rar,其中的程序Jtools.exe能对调试工具进行分析,先起动调试工具程序(如OllyDbg),再起动Jtools.exe程序后,打开数据库,库文件是Jtools.ini,在左框中选中调试工具进程,右框就将出现这进程的所有模块,在模块框中选中进程主模块,按加入数据库,再按保存数据库,后退出Jtools.exe。分析过的调试工具就不能对Jtools.exe进行调试了,当然,如果换了Jtools.ini就又能调试了。注意!如果你的操作不正确,有可能死机。
如果你能在规定的时间内将Jtools.exe“破解”出只要一个Jtools.exe就能运行,你对比泰的“人工智能加密”就会有深刻的认识;因为“加壳”程序把原来的Jtools.exe的代码抽入了Jtools.dat文件中,你必须用你的“代码多态”知识,通过跟踪还原回主程序中,这个还原的工作量就是破解工作量,从密码学了角度讲,这是可计算的复杂度,其工作量是无法减少的,这就是比泰的“功能相关法”的精华所在,希望不理解者能认真研究。

另外申明一点,以上的工作中,我们用到了BS_Software老师许多学生的研究结果,他们并不在比泰科技工作,由于时间紧迫,不一一做说明。

还有一点要说明,比泰所有核心技术人员中,没有看雪论坛的会员,我们只能通过我们的用户转发。我们欢迎各位将结果返回到比泰科技,有问题也可到www.bittide.com的留言本中发表(不欢迎恶意中伤者,如有恶意者,将立即删除)。最后,再次衷心地感谢所有关注我们技术的人!

              比泰科技 技术支持部 2005.2.13
2005-2-13 23:46
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
22
对于比泰软件防盗版战士我了解的不多
希望这个保护软件能够继续发展、强大

如果不太合适的话
我可以删除此篇脱壳教程
2005-2-13 23:54
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
最初由 chi198199 发布
尊敬的朋友、Cracker、比泰的竞争者:

你们好!

比泰感谢所有关注我们产品的人,你们的所有工作都将对我们产生帮助,衷心感谢你们的支持与关心!
........


你这个东西原理和上次这个论坛叫贪婪的东西原理很类似,效率比XPR还要差。
2005-2-14 14:34
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
关键文件,最大特别还不是用了老外的进程技术。把关键隐藏起来。

InterruptHook.sys附件:InterruptHook.rar
2005-2-14 14:38
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
D:\C++\KMODE\Sys\InterruptHook\objfre_w2k\i386\InterruptHook.pdb

这个是用什么开发的就不用我说了吧。俄罗斯高人写的 KMODE 核态开发组件。
2005-2-14 14:39
0
游客
登录 | 注册 方可回帖
返回
//