Сейчас на форуме: _MBK_ (+6 невидимых)

 eXeL@B —› Основной форум —› Прямой доступ к диску. Помощь.
Посл.ответ Сообщение


Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 27 марта 2007 01:19
· Личное сообщение · #1

Есть 16 разрядная порога (см. аттач) написанна на паскале... И вот с ней возникла небольшая проблемка, которую я никак не могу решить... Она пытается обратиться напрямую к диску и прочитать метку, однако ХР такое приложение блокирует (в 9х работает).

И вот сколько не ищу где убить это проверку, найти не могу. Задача - запустить под ХР. Может кто моможет/подскажет?

нашол кучу фугкций обращений к винту, нашол так же сообщение "метка не найдена", однако подняться по коду выше и вычислить,гуде это все проверяется у меня не вышло...

буду рад полезному совету в решении этой проблемки...

P.S. пПрограмма для исселование в архиве - AOPS_N.EXE

bb66_26.03.2007_CRACKLAB.rU.tgz - arm.zip

-----
-=истина где-то рядом=-





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 27 марта 2007 03:37
· Личное сообщение · #2

KingSise попробуй изменить программу ,чтобы она читала метку на диске А: (flopy),винда прямое обращение к флоповоду недолжна блокировать.Вовсяком случаи когда я делал запись секторов диска через int 26h у меня получалось только с дискетой,с HDD получал облом-типа напрямую обращаться к жесткому диску нельзя

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 27 марта 2007 04:07
· Личное сообщение · #3

Да не причём тут обращение к диску.
В этой проге вот здесь:
0003E3C4: CB retf
выполняется хитрый переход (видимо к какой-то ДОСовской подпрограмме).
Под хрюшкой там совсем другой код, то есть дальше выполняется мусор.
У меня, например, хрень ругается после кода C4,C4... (нет такого опкода).

-----
Всем привет, я вернулся




Ранг: 51.8 (постоянный), 58thx
Активность: 0.03=0.03
Статус: Участник

Создано: 27 марта 2007 08:29
· Личное сообщение · #4

Попробуйте так:
Comparing files AOPS_N.BAK and AOPS_N.EXE
00004E34: 1E EB
00004E35: 57 03
00004E39: 80 C6
00004E3A: 3E 06
00004E3E: 74 EB

AOPS_N.BAK - оригинальный, AOPS_N.EXE - правленый. Возможно, этого будет достаточно.




Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 27 марта 2007 09:39
· Личное сообщение · #5

> C4,C4...

www.wasm.ru/forum/viewtopic.php?id=7025

Это типа хитрый call gate

ps Если еще нужна помосчь по проге - могу посмотреть. Проверка может идти через int 13h/25h/26h/или через порты (это ловицца Sice'ом).

-----
The one derivative you manage is the one I abhore (c) Slipknot





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 27 марта 2007 16:53
· Личное сообщение · #6

Chingachguk пишет:
Проверка может идти через int 13h/25h/26h/


Я ниодно из этих прерываний в программе не нашол.

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 27 марта 2007 18:28
· Личное сообщение · #7

Возможна, это работа напрямую (in/out)?

В аттаче небольшая демка как читаецца серийный нумер винчестера (256 словей dw).

8f28_27.03.2007_CRACKLAB.rU.tgz - Ide.asm

-----
The one derivative you manage is the one I abhore (c) Slipknot





Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 27 марта 2007 21:45
· Личное сообщение · #8

Chingachguk пишет:
ps Если еще нужна помосчь по проге - могу посмотреть.


Помощь еще нужна, т.к. я все еще не представляю где патчить программу... А 98 винды у меня к сожалению нет, сравинить переходы не могу...

-----
-=истина где-то рядом=-





Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 27 марта 2007 21:59
· Личное сообщение · #9

ok, I'll try. Как я это вижу для начала: проги из V86 легко ловяцца на доступе к портам через I/O permission map (в 98-ой даже есть специальные сервисы на уровне ядра для виртуализации таких вещей как саунд-карты - наверное и в XP есть?) или же через bpio (DRx). Т.е. я начал бы именно с этого - бряки на доступ к IDE-портам в айсе или типа того...

-----
The one derivative you manage is the one I abhore (c) Slipknot




Ранг: 68.8 (постоянный)
Активность: 0.120
Статус: Участник

Создано: 27 марта 2007 22:14 · Поправил: bash
· Личное сообщение · #10

KingSise
А может попробовать запустить её с правами системы?
Не знаю как это сделать, но может прописать её в ветке "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
в ключе userinit после запятой... Ну или вместо скринсейвера scrnsave.scr способ такой есть.
Поможет или нет?




Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 27 марта 2007 22:42
· Личное сообщение · #11

bash

I suppose it's impossible. Но вот пробить IO permission map для конкретной задачи из драйвера можно - давным давно я читал статью как чел так делал чтобы ускорить работу с девайсом из win32. Остаецца только опасение как они подружацца с виндовым драйвером диска (за винт fight) ;)

-----
The one derivative you manage is the one I abhore (c) Slipknot





Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 27 марта 2007 23:50 · Поправил: KingSise
· Личное сообщение · #12

Chingachguk пишет:
так делал чтобы ускорить работу с девайсом из win32.


И естькакие либо результаты?

bash пишет:
А может попробовать запустить её с правами системы?
Не знаю как это сделать, но может прописать её в ветке "


попробовать можно, но результата 0. Также можно запустить ее как слуюбу (встречал подобные программки), но в результате тоже сомневаюсь...

-----
-=истина где-то рядом=-





Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 28 марта 2007 00:05
· Личное сообщение · #13

> И естькакие либо результаты?

У него вроде были (собсна идея-то простая), но! он работал _со_своим_ девайсом, а дать проге писать в винтовые порты в момент когда драйв винта че-то решил тоже туда записать... кгхм... не знаю

-----
The one derivative you manage is the one I abhore (c) Slipknot





Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 28 марта 2007 01:29
· Личное сообщение · #14

Так. Итак. Открыл и посмотрел. Непонятно. В большой проге (265472) вроде как нету работы с портами ввода-вывода. Sice тоже ничего не сказал приятного.

Хотел было написать только то, что выше - но посмотрел еще и setarm. Вот тут уже интереснее, там есть работа с винтом и именно через int 13h. Например:

seg000:001F subWriteSector_1F proc near ; CODE XREF: PROGRAM+F9p
seg000:001F
seg000:001F Buffer = dword ptr 4
seg000:001F Sector = byte ptr 8
seg000:001F Track = byte ptr 0Ah
seg000:001F Head = byte ptr 0Ch
seg000:001F Drive = byte ptr 0Eh

И красивый один xRef на нее! Запись вроде идет в дефолтный первый жесткий драйф, скорее всего хотела немного загадить в "неиспользованных" секторах рядом с MBR (обычно там размещали свои тела boot-вирусы).

Прога слегонцухи обработана PKLITE'ом - это старый DOS-пакер. Я на скорую ручку запустил че-то типа:

PKLITE.EXE SETARM.EXE -x

-----
The one derivative you manage is the one I abhore (c) Slipknot





Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 28 марта 2007 01:45
· Личное сообщение · #15

Ахха. Кажецца понятна как она зовет int 13h в основном приложении! Была вот такая хрень - функция intr(прерывание, &регистры) - вызофф прерывания с заданным нумером. Вот что я вижу:

seg013:000B ; INTR(BYTE,REGISTERS far &)
seg013:000B @INTR$q4BYTEm9REGISTERS proc far ; CODE XREF: seg000:0049P

Она воопчето Сишная вроде а кот поскальный... Ну да вот и первый кроссенг:

seg000:0022 mov byte ptr [bp-21Dh], 2
seg000:0027 mov byte ptr [bp-21Eh], 1
seg000:002C mov byte ptr [bp-219h], 0
seg000:0031 mov byte ptr [bp-21Ah], 1
seg000:0036 mov byte ptr [bp-218h], 80h ; 'А'
seg000:003B mov byte ptr [bp-217h], 0
seg000:0040
seg000:0040 loc_40: ; DATA XREF: sub_3770A+16r
seg000:0040 ; unknown_libname_13+2Br ...
seg000:0040 mov al, 13h
seg000:0042 push ax
seg000:0043 lea di, [bp-21Eh]
seg000:0047 push ss
seg000:0048 push di
seg000:0049 call @INTR$q4BYTEm9REGISTERS ; DATA XREF: seg015:1065r

Знакомые мотивы, aren't they?

-----
The one derivative you manage is the one I abhore (c) Slipknot





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 28 марта 2007 02:10
· Личное сообщение · #16

bash пишет:
может попробовать запустить её с правами системы?
Не знаю как это сделать, но может прописать её в ветке "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
в ключе userinit после запятой...

Да ключ реестра хороший для прятанья троев,только я непонимаю причём здесь запуск с правами системы?

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 28 марта 2007 02:45
· Личное сообщение · #17

Chingachguk пишет:
Хотел было написать только то, что выше - но посмотрел еще и setarm. Вот тут уже интереснее, там есть работа с винтом и именно через int 13h. Например:


Очень похоже что это именно запись метки...

-----
-=истина где-то рядом=-




Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 28 марта 2007 03:46
· Личное сообщение · #18

Chingachguk пишет:
> C4,C4...
www.wasm.ru/forum/viewtopic.php?id=7025
Это типа хитрый call gate

Вот уж не знал про такое. Chingachguk, огромное спасибо за ссылку! Люблю такие топики. =)

KingSise пишет:
И вот сколько не ищу где убить это проверку, найти не могу. Задача - запустить под ХР. Может кто моможет/подскажет?

В свете того, что сейчас прочёл про BOP, тем более ясно, после кода:

0003E38B: 55 push bp
0003E38C: 1E push ds
0003E38D: 8BEC mov bp,sp
0003E38F: 9C pushf
0003E390: BB4500 mov bx,00045 ;' E'
0003E393: 0E push cs
0003E394: 53 push bx
0003E395: 33DB xor bx,bx
0003E397: 8EDB mov ds,bx
0003E399: 8A5E0C mov bl,[bp][00C]
0003E39C: D1E3 shl bx,1
0003E39E: D1E3 shl bx,1
0003E3A0: C51F lds bx,[bx]
0003E3A2: 1E push ds
0003E3A3: 53 push bx
0003E3A4: C57608 lds si,[bp][8]
0003E3A7: FC cld
0003E3A8: AD lodsw
0003E3A9: 50 push ax
0003E3AA: AD lodsw
0003E3AB: 8BD8 mov bx,ax
0003E3AD: AD lodsw
0003E3AE: 8BC8 mov cx,ax
0003E3B0: AD lodsw
0003E3B1: 8BD0 mov dx,ax
0003E3B3: AD lodsw
0003E3B4: 8BE8 mov bp,ax
0003E3B6: AD lodsw
0003E3B7: 50 push ax
0003E3B8: AD lodsw
0003E3B9: 8BF8 mov di,ax
0003E3BB: AD lodsw
0003E3BC: 50 push ax
0003E3BD: AD lodsw
0003E3BE: 8EC0 mov es,ax
0003E3C0: 1F pop ds
0003E3C1: 5E pop si
0003E3C2: 58 pop ax
0003E3C3: FA cli
0003E3C4: CB retf


мы "улетаем" на прерывание, а не на выход из этой процедуры.
И, если я правильно понял, под NT данное прерывание "мессажет" нам о том, что прога попыталась его вызвать, а этого, дескать, делать нельзя.
Я прав? Или туплю по утру

-----
Всем привет, я вернулся





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 28 марта 2007 05:24 · Поправил: MACKLIA
· Личное сообщение · #19

Chingachguk пишет:
Прога слегонцухи обработана PKLITE'ом - это старый DOS-пакер

Чем дольше тем интереснее

Следующий интересный момент файл AOPSPTH.Открываю его FlexHex 'ом и вижу =>
''pk..BGIDevice Driver (EGAVGA) 2.00 - Mar 21 1988..Copyright (c)
1987,1988 Borland International''
Хоть по Windows 3.11 запускай

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 28 марта 2007 13:58
· Личное сообщение · #20

Bitfry

Не совсем, как я понимаю - это что-то типа:

pushf
call dword ptr 0000:[Interrupt_Num*4]

Т.е. в явном виде команды int 13h там нет - вот не искалось.

Прога вроде никак не защищаецца от патча, разве что где-то crc, так что (наверное) проще будет патч, или - если не хочецца - написать резидента (дос) на int 13h который чекает запросы от этой проги или отдает дальше настоящему int 13h.

-----
The one derivative you manage is the one I abhore (c) Slipknot





Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 28 марта 2007 23:21
· Личное сообщение · #21

Спасибо Вам за помощь, у меня больше вопросов нет. Если ни у кого также вопросов нет, то тему, думаю, можно закрыть.

-----
-=истина где-то рядом=-



 eXeL@B —› Основной форум —› Прямой доступ к диску. Помощь.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати