首页
社区
课程
招聘
星空网络电视1.0
2004-11-23 13:21 4021

星空网络电视1.0

2004-11-23 13:21
4021
星空网络电视1.0

【破解作者】 encoder
【作者邮箱】 [email]encoder2004@263.net[/email]
【使用工具】 od,w32asm,peid,LordPE,Import.Reconstructor.v1.6.Fanal
【破解平台】 Win9x/NT/2000/XP
【下载地址】 华军软件园
【软件简介】
《星空网络电视》是一款功能强大的网络电影电视播放软件。软件中内置了国内、港台、国外近300个精彩电视频道(包含精彩的凤
凰卫视、阳光卫视,TVB8,TVB星河、ChannelV、日本、韩国、美国等几百个精彩电视频道),还有上百个国内外精彩电台的广播,让
您24小时在线免费看电视电影,免费听音乐。软件操作极为简单,只要用鼠标点击就可以享受网络在线实时电视和广播了节目了,
并且支持在线升级。全面支持Windows9x/ME/NT/2000/XP/2003。新增加港台流行音乐专辑和体育频道,马上在线收看。
【脱壳内容】
用peid查看发现是:FSG 2.0 -> bart/xt

1.寻找OEP和dump

OD载入后停在这里:
0040015A     61                  popad
0040015B     94                  xchg eax,esp
0040015C     55                  push ebp
0040015D     A4                  movs byte ptr es:[edi],byte ptr d>
0040015E     B6 80               mov dh,80
00400160     FF13                call dword ptr ds:[ebx]
00400162   ^ 73 F9               jnb short iTVstar.0040015D
00400164     33C9                xor ecx,ecx
00400166     FF13                call dword ptr ds:[ebx]
00400168     73 16               jnb short iTVstar.00400180
0040016A     33C0                xor eax,eax
0040016C     FF13                call dword ptr ds:[ebx]
0040016E     73 1F               jnb short iTVstar.0040018F
00400170     B6 80               mov dh,80
00400172     41                  inc ecx
00400173     B0 10               mov al,10
00400175     FF13                call dword ptr ds:[ebx]
00400177     12C0                adc al,al
00400179   ^ 73 FA               jnb short iTVstar.00400175
0040017B     75 3A               jnz short iTVstar.004001B7
0040017D     AA                  stos byte ptr es:[edi]
0040017E   ^ EB E0               jmp short iTVstar.00400160
00400180     FF53 08             call dword ptr ds:[ebx+8]
00400183     02F6                add dh,dh
00400185     83D9 01             sbb ecx,1
00400188     75 0E               jnz short iTVstar.00400198
0040018A     FF53 04             call dword ptr ds:[ebx+4]
0040018D     EB 24               jmp short iTVstar.004001B3
0040018F     AC                  lods byte ptr ds:[esi]
00400190     D1E8                shr eax,1
00400192     74 2D               je short iTVstar.004001C1
00400194     13C9                adc ecx,ecx
00400196     EB 18               jmp short iTVstar.004001B0
00400198     91                  xchg eax,ecx
00400199     48                  dec eax
0040019A     C1E0 08             shl eax,8
0040019D     AC                  lods byte ptr ds:[esi]
0040019E     FF53 04             call dword ptr ds:[ebx+4]
004001A1     3B43 F8             cmp eax,dword ptr ds:[ebx-8]
004001A4     73 0A               jnb short iTVstar.004001B0
004001A6     80FC 05             cmp ah,5
004001A9     73 06               jnb short iTVstar.004001B1
004001AB     83F8 7F             cmp eax,7F
004001AE     77 02               ja short iTVstar.004001B2
004001B0     41                  inc ecx
004001B1     41                  inc ecx
004001B2     95                  xchg eax,ebp
004001B3     8BC5                mov eax,ebp
004001B5     B6 00               mov dh,0
004001B7     56                  push esi
004001B8     8BF7                mov esi,edi
004001BA     2BF0                sub esi,eax
004001BC     F3:A4               rep movs byte ptr es:[edi],byte p>
004001BE     5E                  pop esi
004001BF   ^ EB 9F               jmp short iTVstar.00400160
004001C1     5E                  pop esi
004001C2     AD                  lods dword ptr ds:[esi]
004001C3     97                  xchg eax,edi
004001C4     AD                  lods dword ptr ds:[esi]
004001C5     50                  push eax
004001C6     FF53 10             call dword ptr ds:[ebx+10]        ; kernel32.LoadLibraryA
004001C9     95                  xchg eax,ebp
004001CA     8B07                mov eax,dword ptr ds:[edi]
004001CC     40                  inc eax
004001CD   ^ 78 F3               js short iTVstar.004001C2
004001CF     75 03               jnz short iTVstar.004001D4
004001D1     FF63 0C             jmp dword ptr ds:[ebx+C]           ;// ***注意这里***FSG的特征码,从这里跳向OEP
004001D4     50                  push eax
004001D5     55                  push ebp
004001D6     FF53 14             call dword ptr ds:[ebx+14]
004001D9     AB                  stos dword ptr es:[edi]
004001DA   ^ EB EE               jmp short iTVstar.004001CA
004001DC     33C9                xor ecx,ecx
004001DE     41                  inc ecx
004001DF     FF13                call dword ptr ds:[ebx]
004001E1     13C9                adc ecx,ecx
004001E3     FF13                call dword ptr ds:[ebx]
004001E5   ^ 72 F8               jb short iTVstar.004001DF
004001E7     C3                  retn
直接将鼠标点到这一行,F4!!经过一会的运算,停下来了!!

004001D1     FF63 0C             jmp dword ptr ds:[ebx+C]           ;iTVstar.004C1418

OEP处的代码:
004C1418       55                db 55                             ;  CHAR 'U'
004C1419       8B                db 8B
004C141A       EC                db EC
004C141B       83                db 83
004C141C       C4                db C4
004C141D       F0                db F0
004C141E       B8                db B8
004C141F       40                db 40                             ;  CHAR '@'
004C1420       10                db 10
004C1421       4C                db 4C                             ;  CHAR 'L'
004C1422       00                db 00
004C1423       E8                db E8
004C1424       3C                db 3C                             ;  CHAR '<'
004C1425       4E                db 4E                             ;  CHAR 'N'
004C1426       F4                db F4
004C1427       FF                db FF
004C1428       A1                db A1
004C1429       E8                db E8
004C142A       39                db 39                             ;  CHAR '9'
004C142B       4C                db 4C                             ;  CHAR 'L'
.......

点删除分析成为:
004C1418       55                push ebp                          ;用LORDPE直接脱壳
004C1419       8BEC              mov ebp,esp
004C141B       83C4 F0           add esp,-10
004C141E       B8 40104C00       mov eax,iTVstar.004C1040
004C1423       E8 3C4EF4FF       call iTVstar.00406264
004C1428       A1 E8394C00       mov eax,dword ptr ds:[4C39E8]
004C142D       8B00              mov eax,dword ptr ds:[eax]
004C142F       E8 A490F9FF       call iTVstar.0045A4D8
004C1434       8B0D C0374C00     mov ecx,dword ptr ds:[4C37C0]     ;  iTVstar.004C72F8
004C143A       A1 E8394C00       mov eax,dword ptr ds:[4C39E8]
004C143F       8B00              mov eax,dword ptr ds:[eax]
004C1441       8B15 F87E4B00     mov edx,dword ptr ds:[4B7EF8]     ;  iTVstar.004B7F44
004C1447       E8 A490F9FF       call iTVstar.0045A4F0
004C144C       8B0D CC364C00     mov ecx,dword ptr ds:[4C36CC]     ;  iTVstar.004C72F0
004C1452       A1 E8394C00       mov eax,dword ptr ds:[4C39E8]
004C1457       8B00              mov eax,dword ptr ds:[eax]
004C1459       8B15 94654B00     mov edx,dword ptr ds:[4B6594]     ;  iTVstar.004B65E0
004C145F       E8 8C90F9FF       call iTVstar.0045A4F0
004C1464       A1 E8394C00       mov eax,dword ptr ds:[4C39E8]
004C1469       8B00              mov eax,dword ptr ds:[eax]
004C146B       E8 0091F9FF       call iTVstar.0045A570
004C1470       E8 632AF4FF       call iTVstar.00403ED8

2.IAT修复
运行Import.Reconstructor.v1.6.Fanal,填上OEP=000C1418,点IAT自动搜索,获得输入表,全部都是有效的,“修复抓取文件”。
运行出错。
看看Import.Reconstructor.v1.6.Fanal里面的输入函数,只有3个.
RVA=000D2284 mod:kernel32.dll ord:0348 名称:TlsSetValue
RVA=000D2288 mod:kernel32.dll ord:0347 名称:TlsGetValue
RVA=000D228C mod:kernel32.dll ord:0241 名称:LocalALLoc
而RVA=000D2284,大小=0000000C,不可能一个这么大的软件(431K)
必须重新查找正确IAT的大小.
OD重新载入脱壳程序:

下dd 004D2284 (000D2284是Import.Rec里面的RVA,加上基址得到004D2284)
004D2284  77E5AA4F  kernel32.TlsSetValue
004D2288  77E5ABF1  kernel32.TlsGetValue
004D228C  77E5A682  kernel32.LocalAlloc
004D2290  77E5AD86  kernel32.GetModuleHandleA
004D2294  7FFFFFFF                               //应该为00000000
004D2298  77DA2410  ADVAPI32.RegQueryValueExA
004D229C  77DA229A  ADVAPI32.RegOpenKeyExA
004D22A0  77DA17D8  ADVAPI32.RegCloseKey
004D22A4  7FFFFFFF                               //应该为00000000
004D22A8  77E54E0A  kernel32.lstrcpyA
004D22AC  77E55DEC  kernel32.lstrcmpA
004D22B0  77E48D7E  kernel32.WritePrivateProfileStringA
004D22B4  77E5F13A  kernel32.WriteFile
004D22B8  77E5AC12  kernel32.WaitForSingleObject
004D22BC  77E57F44  kernel32.VirtualQuery
这就是传说中的IAT了,向上找找,在向下找找,就可以确定IAT的大小了!IAT大小=4d2930-4d21a4=78c
Import.Rec重新载入程序,将大小改为78c,就是真正的IAT。直接点获取输入表,然后显示无效指针,看
看什么东西是无效的,原来是 ptr:7FFFFFFF。不就是因为Import.Rec在读去内存中的004D2294,004D22A4
这些地址时误认为是一个API函数吗?!剪掉该指针,修复抓取文件,脱壳后的程序正常运行。

二。注册码的寻找
脱壳的程序为Borland Delphi 6.0-7.0,用w32Dasm反编译为
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B68D8(C)
|

* Possible StringData Ref from Data Obj ->"警告"
                                  |
:004B7CC1 BA2C7E4B00              mov edx, 004B7E2C

* Possible StringData Ref from Data Obj ->"  错误的注册码!  "
                                  |
:004B7CC6 B8347E4B00              mov eax, 004B7E34
........................................................................
往上
:004B6800 6A00                    push 00000000
:004B6802 6A00                    push 00000000
:004B6804 49                      dec ecx
:004B6805 75F9                    jne 004B6800                     ///OD断点
:004B6807 51                      push ecx
:004B6808 53                      push ebx
:004B6809 56                      push esi
:004B680A 57                      push edi
:004B680B 8945FC                  mov dword ptr [ebp-04], eax
:004B680E 33C0                    xor eax, eax
:004B6810 55                      push ebp
:004B6811 68227D4B00              push 004B7D22
:004B6816 64FF30                  push dword ptr fs:[eax]
:004B6819 648920                  mov dword ptr fs:[eax], esp
:004B681C 8D55F0                  lea edx, dword ptr [ebp-10]
:004B681F 8B45FC                  mov eax, dword ptr [ebp-04]
:004B6822 8B8004030000            mov eax, dword ptr [eax+00000304]
:004B6828 E82341F8FF              call 0043A950
:004B682D 8B45F0                  mov eax, dword ptr [ebp-10]
:004B6830 8D55F4                  lea edx, dword ptr [ebp-0C]
:004B6833 E8881CF5FF              call 004084C0
:004B6838 837DF400                cmp dword ptr [ebp-0C], 00000000 ////判断注册是否为空
:004B683C 7519                    jne 004B6857
:004B683E BA307D4B00              mov edx, 004B7D30

* Possible StringData Ref from Data Obj ->"  姓名不能为空!  "
                                  |
:004B6843 B8387D4B00              mov eax, 004B7D38
:004B6848 B930000000              mov ecx, 00000030
:004B684D E89E94FFFF              call 004AFCF0
:004B6852 E97E140000              jmp 004B7CD5

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B683C(C)
|
:004B6857 8D45EC                  lea eax, dword ptr [ebp-14]
:004B685A 50                      push eax
:004B685B 8D55E4                  lea edx, dword ptr [ebp-1C]
:004B685E 8B45FC                  mov eax, dword ptr [ebp-04]
:004B6861 8B8010030000            mov eax, dword ptr [eax+00000310]
:004B6867 E8E440F8FF              call 0043A950
:004B686C 8B45E4                  mov eax, dword ptr [ebp-1C]
:004B686F 8D55E8                  lea edx, dword ptr [ebp-18]
:004B6872 E8491CF5FF              call 004084C0
:004B6877 8B45E8                  mov eax, dword ptr [ebp-18]
:004B687A B90C000000              mov ecx, 0000000C
:004B687F BA01000000              mov edx, 00000001
:004B6884 E8FBDCF4FF              call 00404584
:004B6889 8B45EC                  mov eax, dword ptr [ebp-14]
:004B688C 50                      push eax
:004B688D 8D45E0                  lea eax, dword ptr [ebp-20]
:004B6890 50                      push eax
:004B6891 8D55D4                  lea edx, dword ptr [ebp-2C]
:004B6894 8B45FC                  mov eax, dword ptr [ebp-04]
:004B6897 8B8004030000            mov eax, dword ptr [eax+00000304]
:004B689D E8AE40F8FF              call 0043A950
:004B68A2 8B45D4                  mov eax, dword ptr [ebp-2C]
:004B68A5 8D55D8                  lea edx, dword ptr [ebp-28]
:004B68A8 E8131CF5FF              call 004084C0
:004B68AD 8B45D8                  mov eax, dword ptr [ebp-28]
:004B68B0 8D4DDC                  lea ecx, dword ptr [ebp-24]

* Possible StringData Ref from Data Obj ->"星空网络电视"
                                  |
:004B68B3 BA547D4B00              mov edx, 004B7D54
:004B68B8 E88794FFFF              call 004AFD44                   ////算法核心
:004B68BD 8B45DC                  mov eax, dword ptr [ebp-24]
:004B68C0 B90C000000              mov ecx, 0000000C
:004B68C5 BA01000000              mov edx, 00000001
:004B68CA E8B5DCF4FF              call 0040458
:004B68CF 8B55E0                  mov edx, dword ptr [ebp-20]    ////真注册码
:004B68D2 58                      pop eax                        ////假注册码
:004B68D3 E898DBF4FF              call 00404470                  ////经典比较
:004B68D8 0F85E3130000            jne 004B7CC1

附一个可用的注册码
name:encoder
code:212124212126952

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 1
打赏
分享
最新回复 (3)
雪    币: 38374
活跃值: (19355)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2004-11-23 15:27
2
0
不错。不过要成为精华帖,必须将004B68B8 call 004AFD44  算法核心 分析清楚。
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
pendan2001 4 2004-11-23 19:26
3
0
谢谢管理员的指点
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyd009 2004-11-23 22:16
4
0
收藏
游客
登录 | 注册 方可回帖
返回