首页
社区
课程
招聘
[原创]破坏一切还原软件的方法!
发表于: 2007-12-18 23:56 13551

[原创]破坏一切还原软件的方法!

2007-12-18 23:56
13551
所有保护系统软件都存在的一个问题:在保护模式或影子模式下,用Sector Editor.exe修改mbr,系统就会瘫痪,用fdisk /mbr修复后才可进系统 。
大家讨论一下如何防范直接写扇区的方式来破坏和穿透还原软件?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (21)
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
SECTOR EDITOR.EXE在哪有下载啊?能修改MBR不要让系统瘫痪又能破还原的方法吗
2007-12-19 11:45
0
雪    币: 158
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
SectorEditor
SectorEditor.rar
上传的附件:
2007-12-19 22:42
0
雪    币: 53
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
只要能进入0层,就有很多方法破坏和穿透还原软件。
进入0层了,就算不直接写硬盘,给还原软件打个补丁总可以啊。
2007-12-20 09:19
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
0040288E    |.  85C0              test    eax, eax
00402890    |.  74 09             je      short Sector_E.0040289B
00402892    |.  8D8E 1C010000     lea     ecx, dword ptr ds:[esi+11C]
00402898    |.  51                push    ecx
00402899    |.  FFD0              call    eax
0040289B    |>  68 3F000F00       push    0F003F
004028A0    |.  6A 00             push    0
004028A2    |.  6A 00             push    0
004028A4    |.  FF15 10F04000     call    dword ptr ds:[<&ADVAPI32.OpenSCManagerA>]      ;  ADVAPI32.OpenSCManagerA
004028AA    |.  8BF8              mov     edi, eax
004028AC    |.  85FF              test    edi, edi
004028AE    |.  75 2C             jnz     short Sector_E.004028DC
004028B0    |.  FF15 80F04000     call    dword ptr ds:[<&KERNEL32.GetLastError>]        ; [GetLastError
004028B6    |.  8BE8              mov     ebp, eax
004028B8    |.  8D5424 10         lea     edx, dword ptr ss:[esp+10]
004028BC    |.  55                push    ebp                                            ; /<%ld>
004028BD    |.  68 0C334100       push    Sector_E.0041330C                              ; |format = "[SectorEditor] ManageDriver() -> OpenSCManager() failed, ErrCode: %ld"
004028C2    |.  52                push    edx                                            ; |s
004028C3    |.  FF15 50F54000     call    dword ptr ds:[<&MSVCRT.sprintf>]               ; \sprintf
004028C9    |.  83C4 0C           add     esp, 0C
004028CC    |.  8D4424 10         lea     eax, dword ptr ss:[esp+10]
004028D0    |.  50                push    eax                                            ; /String
004028D1    |.  FF15 88F04000     call    dword ptr ds:[<&KERNEL32.OutputDebugStringA>]  ; \OutputDebugStringA
004028D7    |.  E9 B5000000       jmp     Sector_E.00402991
004028DC    |>  8B8424 20010000   mov     eax, dword ptr ss:[esp+120]
004028E3    |.  25 FFFF0000       and     eax, 0FFFF
004028E8    |.  48                dec     eax                                            ;  Switch (cases 1..2)
004028E9    |.  74 2C             je      short Sector_E.00402917
004028EB    |.  48                dec     eax
004028EC    |.  74 0A             je      short Sector_E.004028F8
004028EE    |.  BD 0C000000       mov     ebp, 0C
004028F3    |.  E9 92000000       jmp     Sector_E.0040298A
004028F8    |>  53                push    ebx                                            ;  Case 2 of switch 004028E8
004028F9    |.  57                push    edi
004028FA    |.  8BCE              mov     ecx, esi
004028FC    |.  E8 1F020000       call    Sector_E.00402B20
00402901    |.  53                push    ebx
00402902    |.  57                push    edi
00402903    |.  8BCE              mov     ecx, esi
00402905    |.  E8 46010000       call    Sector_E.00402A50
0040290A    |.  8B46 14           mov     eax, dword ptr ds:[esi+14]
0040290D    |.  85C0              test    eax, eax
0040290F    |.  74 79             je      short Sector_E.0040298A
00402911    |.  C640 04 00        mov     byte ptr ds:[eax+4], 0
00402915    |.  EB 73             jmp     short Sector_E.0040298A
00402917    |>  8B8C24 1C010000   mov     ecx, dword ptr ss:[esp+11C]                    ;  Case 1 of switch 004028E8
0040291E    |.  51                push    ecx
0040291F    |.  53                push    ebx
00402920    |.  57                push    edi
00402921    |.  8BCE              mov     ecx, esi
00402923    |.  E8 D8000000       call    Sector_E.00402A00
00402928    |.  8BE8              mov     ebp, eax
0040292A    |.  85ED              test    ebp, ebp
0040292C    |.  75 30             jnz     short Sector_E.0040295E
0040292E    |.  53                push    ebx
0040292F    |.  57                push    edi
00402930    |.  8BCE              mov     ecx, esi
00402932    |.  E8 69010000       call    Sector_E.00402AA0

004029FF        90                nop
00402A00    /$  8B4424 0C         mov     eax, dword ptr ss:[esp+C]
00402A04    |.  6A 00             push    0                                              ; /Password = NULL
00402A06    |.  6A 00             push    0                                              ; |ServiceStartName = NULL
00402A08    |.  6A 00             push    0                                              ; |pDependencies = NULL
00402A0A    |.  8B4C24 10         mov     ecx, dword ptr ss:[esp+10]                     ; |
00402A0E    |.  6A 00             push    0                                              ; |pTagId = NULL
00402A10    |.  6A 00             push    0                                              ; |LoadOrderGroup = NULL
00402A12    |.  50                push    eax                                            ; |BinaryPathName
00402A13    |.  8B4424 20         mov     eax, dword ptr ss:[esp+20]                     ; |
00402A17    |.  6A 01             push    1                                              ; |ErrorControl = SERVICE_ERROR_NORMAL
00402A19    |.  6A 03             push    3                                              ; |StartType = SERVICE_DEMAND_START
00402A1B    |.  6A 01             push    1                                              ; |ServiceType = SERVICE_KERNEL_DRIVER
00402A1D    |.  68 FF010F00       push    0F01FF                                         ; |DesiredAccess = SERVICE_ALL_ACCESS
00402A22    |.  50                push    eax                                            ; |DisplayName
00402A23    |.  50                push    eax                                            ; |ServiceName
00402A24    |.  51                push    ecx                                            ; |hManager
00402A25    |.  FF15 0CF04000     call    dword ptr ds:[<&ADVAPI32.CreateServiceA>]      ; \CreateServiceA
00402A2B    |.  85C0              test    eax, eax

00402A9F        90                nop
00402AA0    /$  8B4424 08         mov     eax, dword ptr ss:[esp+8]
00402AA4    |.  8B4C24 04         mov     ecx, dword ptr ss:[esp+4]
00402AA8    |.  56                push    esi
00402AA9    |.  57                push    edi
00402AAA    |.  6A 10             push    10
00402AAC    |.  50                push    eax
00402AAD    |.  51                push    ecx
00402AAE    |.  33FF              xor     edi, edi
00402AB0    |.  FF15 04F04000     call    dword ptr ds:[<&ADVAPI32.OpenServiceA>]        ;  ADVAPI32.OpenServiceA
00402AB6    |.  8BF0              mov     esi, eax
00402AB8    |.  85F6              test    esi, esi
00402ABA    |.  75 1A             jnz     short Sector_E.00402AD6
00402ABC    |.  FF15 80F04000     call    dword ptr ds:[<&KERNEL32.GetLastError>]        ; [GetLastError
00402AC2    |.  68 8C334100       push    Sector_E.0041338C                              ; /String = "[SectorEditor] StartDriver() -> OpenService() failed."
00402AC7    |.  8BF0              mov     esi, eax                                       ; |
00402AC9    |.  FF15 88F04000     call    dword ptr ds:[<&KERNEL32.OutputDebugStringA>]  ; \OutputDebugStringA
00402ACF    |.  8BC6              mov     eax, esi
00402AD1    |.  5F                pop     edi
00402AD2    |.  5E                pop     esi
00402AD3    |.  C2 0800           ret     8
00402AD6    |>  6A 00             push    0
00402AD8    |.  6A 00             push    0
00402ADA    |.  56                push    esi
00402ADB    |.  FF15 00F04000     call    dword ptr ds:[<&ADVAPI32.StartServiceA>]       ;  ADVAPI32.StartServiceA
00402AE1    |.  85C0              test    eax, eax
00402AE3    |.  75 2B             jnz     short Sector_E.00402B10
00402AE5    |.  FF15 80F04000     call    dword ptr ds:[<&KERNEL32.GetLastError>]        ; [GetLastError
00402AEB    |.  8BF8              mov     edi, eax
00402AED    |.  81FF 20040000     cmp     edi, 420
00402AF3    |.  75 10             jnz     short Sector_E.00402B05
00402AF5    |.  56                push    esi
00402AF6    |.  33FF              xor     edi, edi
00402AF8    |.  FF15 14F04000     call    dword ptr ds:[<&ADVAPI32.CloseServiceHandle>]  ;  ADVAPI32.CloseServiceHandle
00402AFE    |.  8BC7              mov     eax, edi
00402B00    |.  5F                pop     edi
00402B01    |.  5E                pop     esi
00402B02    |.  C2 0800           ret     8
00402B05    |>  68 54334100       push    Sector_E.00413354                              ; /String = "[SectorEditor] StartDriver() -> StartService() failed."
00402B0A    |.  FF15 88F04000     call    dword ptr ds:[<&KERNEL32.OutputDebugStringA>]  ; \OutputDebugStringA
00402B10    |>  56                push    esi
00402B11    |.  FF15 14F04000     call    dword ptr ds:[<&ADVAPI32.CloseServiceHandle>]  ;  ADVAPI32.CloseServiceHandle
00402B17    |.  8BC7              mov     eax, edi
00402B19    |.  5F                pop     edi
00402B1A    |.  5E                pop     esi
00402B1B    \.  C2 0800           ret     8
00402B1E        90                nop

这就是它用驱动进入ring0的代码,没什么奇怪的,正像楼上说的,进了核心,大家都是一个起跑线,呵呵
上传的附件:
2007-12-23 06:10
0
雪    币: 740
活跃值: (952)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
6
但是如果有防范的话,先进的R0会打后进的
2007-12-23 06:13
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这东西明明是开源的玩意。真是莫名其妙
2007-12-23 14:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看样子还原软件商们没办法对付防进RING0了
2007-12-24 14:31
0
雪    币: 243
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
在安全焦点上有一篇讲过破解所有还原软件或还原卡的文章,大概意思
由于还原厂商们只是对int 13中断进行捕捉,疏忽了直接I/0操作,所以我们可以改MBR
2007-12-24 14:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
多谢楼主!!!
2007-12-28 00:49
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
用个DM低格几个扇区不是更简单?
2007-12-28 11:17
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
直接I/O怎么截啊?
2007-12-29 22:33
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
13
还是用wowocock的DisableControl干净利落~
2007-12-30 21:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
如果你用的是影子系统,也可以用修改时间法使还原软件失去作用。至于冰点吗,安装完成后自动将时间锁定。不过没有试过在BIOS中更改时间后会怎样……
2007-12-31 00:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
知道原理了!
2007-12-31 21:20
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
关注一下!
2008-1-1 00:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17

这都能想出
无语ing........................
2008-1-2 14:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不是记得很早就出现了通杀还原卡的病毒,今天终于看到原理了
2008-1-3 17:24
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
http://www.debugman.com/read.php?tid=781

ring3直接读写IO
2008-1-4 13:16
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好像有很多的直接修改系统时间就可以让注册的还原软件失效。。。
2008-1-17 16:40
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
有必要吗?直接PATCH还原软件核心代码,产生写入死循环,甚至可以破坏掉硬盘数据。
2008-1-17 23:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
我是来学习的
2008-1-18 11:32
0
游客
登录 | 注册 方可回帖
返回
//