-
Откройте обратно. Там нет ничего противозаконного! Я не пишу кряки, хаки и вирусы. Я работаю в сфере локализаций, причем НЕ пиратской... уже писал вроде, когда аналогичные темы открывал.
-
Зачем при непирацкой локализации дампить память?! Прога на ассемблере и сразу в кодах мастрячится умельцами причем сразу в виде самораспаковывающегося архива?! Остальные неумельцы маются перепаковкой, очевидно, т.к. править прямо байты архива не умеют :)
-
> [1] KSergey © (25.09.08 14:40)
Ниче не понял... из сказанного...
архив в непонятном виде... часть данных не шифрована вообще, часть зашифрована, разделителей никаких нет... есть 4 байта в начале файла(непонятного назначения), дальше подряд, без всяких разделителей идут тела файлов. имена файлов где-то есть, но где - непонятно. Нужно вытащить ресурсы - картинки и тексты и перевести их. как сделать? Я придумал только дамп памяти снять, там вроде данные в обычном массиве лежат с указателями на телфа файлов. Легко вынуть.
-
> @!!ex © (25.09.08 14:43) [2] > как сделать?
Запросите у разработчиков исходники из которых они это собирают. Или предложите им включить ваши картинки в сборку локализованной версии.
Или вы серьезно хотите сказать, что локализованные продукты фирмами делаются путем разборки готовых англоязычных инсталлаторов и перепаковки их с локализованными файлами? Самому-то не смешно? )
-
> [3] KSergey © (25.09.08 14:49)
Не смешно. Вы явно никогда не работали в сфере мелких игр. Я работал. Год работал в фирме MyPlayCity. работа заключалась в том, что я делал игры по ТЗ. В одиночку, на любом языке, с использованием любых средств, главное чтобы игра была лицензионно чистой. Исходники все у меня, даже больше, я единственный владелец исходников. Они - моя собственность. А вот продукт и весь контент - принадлежит MyPlayCity. Я оттуда уволился. Теперь они захотели перевести игру на французский... Что им делать? Меня найти практически не реально. Кто из MyPlayCity знает где я сейчас? Да никто. Гарантии что я их не пошлю на запос исходников? Никакой. И что делать? ОТдавать в YupiiStudio и другие аналогичные конторы.
-
нафик нафик такую работу....
-
В основном проекты не сложные. часто архивы в zip, или xor ом зашифрованные. такие ломаются нараз. Но изредка попадается гадость типа той, что сейчас делаю... а работа... не хуже других, вобщем-то. удаленная, и платят нормально.
-
> часть данных не шифрована вообще, часть зашифрована
откуда известно, если "архив" непонятного формата и имен файлов нет
-
> [7] Правильный$Вася (25.09.08 15:17)
По сигнатуре нашел несколько стандартных типов, типа png и ogg. вытащил, вроде вполне корректные файлы. Также видно из под Olly, что из архива выдираются XML с текстом, но при этом ничего похожего на xml - в рахиве не обнаружено. :( Отсюда и вывод.. png ogg и подобные не шифрованы вообще. xml - зашифрованы. имена файлов должны быть полюбому - но их нет, значит тоже шифрованы.
-
> имена файлов должны быть полюбому - но их нет, значит тоже шифрованы.
не факт, может они фиксированы и хранятся в коде, а не в ресурсах
> из архива выдираются XML с текстом, но при этом ничего похожего > на xml - в рахиве не обнаружено
так они не обязательно шифрованы, может,они просто пожаты
-
ReadProcessMemory - читает память процесса. Но для того чтобы прочитать ее необходимо прежде всего включить Debug привилегию у процесса который хочет читать/писать память других процессов, которая даже под админом есть но по умолчанию выключена. Вот пример не мой, как включить shutdown привилегию там же по аналогии для debug
procedure ShutDown;
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; var
hToken: THandle;
tkp: TTokenPrivileges;
tkpo: TTokenPrivileges;
zero: DWORD;
begin
if Pos('Windows NT', GetWinVersion) = 1 then 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 ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
end; end;
Через VirtualQuery получаешь действительно занятые страницы процесса и просто сбрасываешь их в файл в удобном для тебя формате.
-
А вообще можно взять тупо softice и просто из него сбросить на диск нужную часть памяти.
|