Важная информация

User Tag List

Страница 17 из 17 ПерваяПервая ... 1314151617
Показано с 161 по 169 из 169

Тема: Цифровал дискеты. Попались 2 типа защиты. Не могу ничем снять образ. Help.

  1. #161
    Master
    Регистрация
    17.01.2005
    Адрес
    Старый Оскол
    Сообщений
    537
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    4 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EvgenRU Посмотреть сообщение
    Пробовал разные антипротекторы, но ничего не помогло, может уже есть какая-то утилитка?
    Готовых утилит нет. Можно снять например trd образ, затем сконвертировать в udi, после чего вручную в hex редакторе восстановить ключевую информацию в межсекторном промежутке.

  2. #162
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alexandr Medvedev Посмотреть сообщение
    Можно снять например trd образ
    trd для начала сгодится, а там уже поймём что нужно дальше

  3. #163
    Master
    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    593
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот, полностью рабочий TRD образ, в Z80Stealth работает отлично, на других эмуляторах не проверял, в ZX-Evo не работает, видимо у неё в прошивке какие-то ограничения есть, ни дискета, ни образ не запускаются, хотя образ снял на ZX-Evo :-D

    protect03.zip

    Пришлось к стандартному образу добавить 4к байт в конец, чтобы добавить 160 дорожку, потом с эве примонтировал этот образ и затем REALCOPY скопировал подорожечно с 0 по 160.

    UPD: сомневаюсь, что у этой защиты есть что-то в межсекторном промежутке, скорее всего всё находится в 160 дорожке.
    Последний раз редактировалось EvgenRU; 13.03.2016 в 19:25.

  4. #164
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    прояснился автор защиты.
    (я с ним познакомился когда он увлёкся уже Амигой)



    блин, там каждый бейсик сначала раскодируется, а потом отдаётся на обработку
    Последний раз редактировалось goodboy; 13.03.2016 в 20:02.

  5. #165
    Master
    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    593
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ага, нашел еще в одном месте
    Нажмите на изображение для увеличения. 

Название:	dump1.png 
Просмотров:	279 
Размер:	8.5 Кб 
ID:	56424

    А вот собственно и сам сектор, осталось сдампить и залить в трд )
    Нажмите на изображение для увеличения. 

Название:	dump2.png 
Просмотров:	310 
Размер:	8.2 Кб 
ID:	56425

  6. #166
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от EvgenRU Посмотреть сообщение
    осталось сдампить и залить в трд
    только надо ещё каждый бейсик расксорить.

    довольно хорошие знания trdos`a для 1993года, (Инфорком тогда в zxrewiev делал только робкие шаги)

    я помнится (когда ПавелНикитин торговал дискетами для амиги в Митино) попросил у него простенький редактор типа Ced`a,
    а он мне впарил WordWorth на 4х дискетах.
    как говорится `две большие разницы`


    Последний раз редактировалось goodboy; 13.03.2016 в 20:36.

  7. #166
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #167
    Master
    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    593
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Убейте меня, но я не пойму как он ксорит, понятно, что нули заксорены по таблице из 160 дорожки, там увеличение каждого значения на 9 и отбрасывание старшего бита (конгруэнтный генератор?), а вот как не нули ксорятся не пойму...

    вот бейсик из первой игры, закодированный и незакодированный (взял с virttrd), может кто поймет как оно там....
    full_throttle.zip

    UPD: ладно, не буду мучаться, сейчас в анрыле бейсиков надергаю :-D
    Последний раз редактировалось EvgenRU; 13.03.2016 в 23:01.

  9. #168
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    1,179
    Поблагодарили
    775 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    	LD   HL,23867
    	LD   BC,256
    	LD   A,48
    	LD   R,A
    L61549:	LD   A,R
    	XOR  (HL)
    	LD   (HL),A
    	INC  HL
    	DEC  BC
    	LD   A,B
    	OR   C
    	JR   NZ,L61549

  10. #169
    Master
    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    593
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    32
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так то я бейсик выпотрошил в Unreal Speccy, там он не такой как с VirtTRD.
    А вот этот код страшный, использование регистра R... там он вроде как после каждой операции равен R = (R & 0x80) | ((R+1) & 0x7F).... сейчас попробую код набросать для расшифровки...


    Всё, готовый код на C# для расшифровки бейсика
    BinaryReader br = new BinaryReader(File.OpenRead("FULLTHR2.enc"));
    BinaryWriter bw = new BinaryWriter(File.OpenWrite("out.dat"));

    byte r = 48;

    while (true)
    {
    if (br.BaseStream.Position == br.BaseStream.Length) break;
    byte b = br.ReadByte();
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    b = (byte)(r ^ b);
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));

    bw.Write(b);
    }
    bw.Close();
    br.Close();
    Первый готов, грузится нормально, сейчас остальные сделаю и выложу trd

    PS: кодируется только первый сектор бейсика, остальные не изменяются.

    PS2: на всякий случай выложу программку, которая раскодирует весь TRD, в который добавлена таблица бейсик файлов из отладчика, вдруг в будущем кому-то тоже понадобится такое раскодировать
    static void Main(string[] args)
    {
    BinaryReader br = new BinaryReader(File.OpenRead("2.trd"));
    BinaryWriter bw = new BinaryWriter(File.OpenWrite("out.dat"));
    while (br.BaseStream.Position != br.BaseStream.Length)
    {
    byte c = br.ReadByte();
    bw.Write(c);
    }

    long file_offs = 0;
    for(int i = 0; i < 128; i++)
    {
    br.BaseStream.Position = file_offs;
    byte[] buf = new byte[16];
    buf = br.ReadBytes(16);
    file_offs = br.BaseStream.Position;
    if ((buf[8] == 'B' || buf[8] == 'b') && buf[0] != 0)
    {
    int offset = buf[15] * 4096 + buf[14] * 256;
    for (byte k = 0; k < 9; k++)
    Console.Out.Write((char)buf[k]);
    Console.Out.WriteLine(" Offset: " + offset);
    br.BaseStream.Position = offset;
    bw.BaseStream.Position = offset;
    byte r = 48;
    for (int j = 0; j < 256; j++)
    {
    byte b = br.ReadByte();
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    b = (byte)(r ^ b);
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    r = (byte)((r & 0x80) | ((r + 1) & 0x7f));
    bw.Write(b);
    }

    }
    }

    bw.Close();
    br.Close();

    }
    PS: выяснилось еще, что значение R меняется при кодировании, на другом диске R = 17 а не 48, так что так... правда тот диск у меня без 160 дорожки, придется вручную бейсики выковыривать
    Вложения Вложения
    Последний раз редактировалось EvgenRU; 15.03.2016 в 22:08.

Страница 17 из 17 ПерваяПервая ... 1314151617

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 76
    Последнее: 23.04.2022, 15:50
  2. Ответов: 15
    Последнее: 23.05.2013, 23:06
  3. Подскажите алгоритм определения типа дискеты
    от EARL в разделе Программирование
    Ответов: 35
    Последнее: 17.05.2013, 00:25
  4. Как я цифровал дискеты Вектора
    от Vector-user в разделе Вектор
    Ответов: 31
    Последнее: 08.08.2012, 23:17

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •