Конференция "Прочее" » По поводу дампа памяти..
 
  • @!!ex © (25.09.08 14:36) [0]
    Откройте обратно. Там нет ничего противозаконного!
    Я не пишу кряки, хаки и вирусы. Я работаю в сфере локализаций, причем НЕ пиратской... уже писал вроде, когда аналогичные темы открывал.
  • KSergey © (25.09.08 14:40) [1]
    Зачем при непирацкой локализации дампить память?! Прога на ассемблере и сразу в кодах мастрячится умельцами причем сразу в виде самораспаковывающегося архива?! Остальные неумельцы маются перепаковкой, очевидно, т.к. править прямо байты архива не умеют :)
  • @!!ex © (25.09.08 14:43) [2]
    > [1] KSergey ©   (25.09.08 14:40)

    Ниче не понял... из сказанного...

    архив в непонятном виде... часть данных не шифрована вообще, часть зашифрована, разделителей никаких нет...
    есть 4 байта в начале файла(непонятного назначения), дальше подряд, без всяких разделителей идут тела файлов. имена файлов где-то есть, но где - непонятно. Нужно вытащить ресурсы - картинки и тексты и перевести их.
    как сделать? Я придумал только дамп памяти снять, там вроде данные в обычном массиве лежат с указателями на телфа файлов. Легко вынуть.
  • KSergey © (25.09.08 14:49) [3]
    > @!!ex ©   (25.09.08 14:43) [2]
    > как сделать?

    Запросите у разработчиков исходники из которых они это собирают. Или предложите им включить ваши картинки в сборку локализованной версии.

    Или вы серьезно хотите сказать, что локализованные продукты фирмами делаются путем разборки готовых англоязычных инсталлаторов и перепаковки их с локализованными файлами? Самому-то не смешно? )
  • @!!ex © (25.09.08 14:57) [4]
    > [3] KSergey ©   (25.09.08 14:49)

    Не смешно. Вы явно никогда не работали в сфере мелких игр.
    Я работал. Год работал в фирме MyPlayCity.
    работа заключалась в том, что я делал игры по ТЗ.
    В одиночку, на любом языке, с использованием любых средств, главное чтобы игра была лицензионно чистой.
    Исходники все у меня, даже больше, я единственный владелец исходников. Они - моя собственность.
    А вот продукт и весь контент - принадлежит MyPlayCity.
    Я оттуда уволился. Теперь они захотели перевести игру на французский... Что им делать? Меня найти практически не реально. Кто из MyPlayCity знает где я сейчас? Да никто. Гарантии что я их не пошлю на запос исходников? Никакой. И что делать? ОТдавать в YupiiStudio и другие аналогичные конторы.
  • KSergey © (25.09.08 15:01) [5]
    нафик нафик такую работу....
  • @!!ex © (25.09.08 15:05) [6]
    В основном проекты не сложные. часто архивы в zip, или xor ом зашифрованные. такие ломаются нараз.
    Но изредка попадается гадость типа той, что сейчас делаю...
    а работа... не хуже других, вобщем-то. удаленная, и платят нормально.
  • Правильный$Вася (25.09.08 15:17) [7]

    > часть данных не шифрована вообще, часть зашифрована

    откуда известно, если "архив" непонятного формата и имен файлов нет
  • @!!ex © (25.09.08 15:23) [8]
    > [7] Правильный$Вася   (25.09.08 15:17)

    По сигнатуре нашел несколько стандартных типов, типа png и ogg. вытащил, вроде вполне корректные файлы.
    Также видно из под Olly, что из архива выдираются XML с текстом, но при этом ничего похожего на xml - в рахиве не обнаружено. :(
    Отсюда и вывод.. png ogg и подобные не шифрованы вообще. xml - зашифрованы. имена файлов должны быть полюбому - но их нет, значит тоже шифрованы.
  • Правильный$Вася (25.09.08 15:49) [9]

    > имена файлов должны быть полюбому - но их нет, значит тоже шифрованы.

    не факт, может они фиксированы и хранятся в коде, а не в ресурсах

    > из архива выдираются XML с текстом, но при этом ничего похожего
    > на xml - в рахиве не обнаружено

    так они не обязательно шифрованы, может,они просто пожаты
  • Городской Шаман (25.09.08 16:01) [10]
    ReadProcessMemory - читает память процесса.

    Но для того чтобы прочитать ее необходимо прежде всего включить Debug привилегию у процесса который хочет читать/писать память других процессов, которая даже под админом есть но по умолчанию выключена.

    Вот пример не мой, как включить shutdown привилегию там же по аналогии для debug

    procedure ShutDown;
    const
     SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; // Borland forgot this declaration
    var
     hToken: THandle;
     tkp: TTokenPrivileges;
     tkpo: TTokenPrivileges;
     zero: DWORD;
    begin
     if Pos('Windows NT', GetWinVersion) = 1 then // we've got to do a whole buch of things
     begin
       zero := 0;
       if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
       begin
         MessageBox(0, '
    Exit Error', 'OpenProcessToken() Failed', MB_OK);
         Exit;
       end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)

       if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
       begin
         MessageBox(0, '
    Exit Error', 'OpenProcessToken() Failed', MB_OK);
         Exit;
       end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)

       // SE_SHUTDOWN_NAME
       if not LookupPrivilegeValue( nil, '
    SeShutdownPrivilege' , tkp.Privileges[0].Luid ) then
       begin
         MessageBox(0, '
    Exit Error', 'LookupPrivilegeValue() Failed', MB_OK);
         Exit;
       end; // if not LookupPrivilegeValue( nil, '
    SeShutdownPrivilege' , tkp.Privileges[0].Luid )

       tkp.PrivilegeCount := 1;
       tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;

       AdjustTokenPrivileges(hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero);
       if Boolean(GetLastError()) then
       begin
         MessageBox(0, '
    Exit Error', 'AdjustTokenPrivileges() Failed', MB_OK);
         Exit;
       end // if Boolean( GetLastError() )
       else
         ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );

     end // if OSVersion = '
    Windows NT'
     else
     begin // just shut the machine down
       ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
     end; // else
    end;



    Через VirtualQuery получаешь действительно занятые страницы процесса и просто сбрасываешь их в файл в удобном для тебя формате.
  • Городской Шаман (25.09.08 16:01) [11]
    А вообще можно взять тупо softice и просто из него сбросить на диск нужную часть памяти.
 
Конференция "Прочее" » По поводу дампа памяти..
Есть новые Нет новых   [134442   +15][b:0][p:0.002]