Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.11.15;
Скачать: [xml.tar.bz2];

Вниз

Перехват функций игры Battlefield 2   Найти похожие ветки 

 
Пит   (2009-09-17 15:50) [40]

Забавно... История разветвляется на два направления )))

1) я попробовал EXE"шник игры более новой версии (вместо версии 1.41 попробовал 1.5). Что забавно - теперь в таблице импорта в модуле BF2.exe (главный файл игры) теперь обнаруживается импорт функций connect и sendto

Но перезапись IAT не происходит. Вот вырезанный код:

PThunk := PImageThunkData( InstanceModule + DWORD(PImportDsc^.FirstThunk) ) ;
         while DWORD(PThunk^.Thunk.thFunction) <> 0 do
           begin
             if Pointer( PThunk^.Thunk.thFunction) = CurrentProc then
               begin
                 VirtualProtect(PThunk^.Thunk.thFunction, SizeOf(PThunk^.Thunk.thFunction),
                   PAGE_EXECUTE_READWRITE, OldProtect) ;
                 WriteProcessMemory(GetCurrentProcess, @PThunk^.Thunk.thFunction, @NewProc,
                   SizeOf(NewProc), Size);
                 VirtualProtect(PThunk^.Thunk.thFunction, SizeOf(PThunk^.Thunk.thFunction),
                   OldProtect, OldProtect);
                 //TODO: правка
                 if Pos("LoadLibrary", FuncName) = 0 then
                 begin
                   s := GsExeName+": mod ""+GetModuleName(InstanceModule)+"", ""+string(CalleeModuleName)+">"+FuncName+"", intercept";
                   OutputDebugStringA(PChar(s));
                 end;
               end;
             inc(PThunk);
           end;


CurrentProc - адрес настоящих функций, NewProc - подмененных.

По коду - VirtualProtect проходит нормально, а вот WriteProcessMemory вызывает ошибку 998, текст: "Неверная попытка доступа к адресу памяти"

Что может быть причиной?

2) старый EXE занимал 7.22 MB, новый занимает 6.25 MB, возможно там сняли какую-то защиту... Вопрос, интересно, почему в старом EXE не находились экспорты функций connect / sendto? Что за защита могла быть?


 
Пит   (2009-09-17 15:59) [41]

запуск с правами администратора принес тоже самое. VirtualProtect проходит нормально, а вот: WriteProcessMemory вызывает ошибку 998, текст: "Неверная попытка доступа к адресу памяти"


 
Сергей М. ©   (2009-09-17 16:18) [42]


> почему в старом EXE не находились экспорты функций connect
> / sendto?


Не экспорты, а импорты .. EXE же импортирует , а экспортирует DLL ..

Почему не находились в IAT ?
Да потому что их там, наверно, и не было - загрузка Ws2_32 осуществлялясь в динамике ..
А в новой версии она, видимо, грузится в статике, на этапе инициализации процесса, потому и фигурирует в IAT ..


 
antonn ©   (2009-09-17 17:00) [43]


> 2) старый EXE занимал 7.22 MB, новый занимает 6.25 MB, возможно
> там сняли какую-то защиту... Вопрос, интересно, почему в
> старом EXE не находились экспорты функций connect / sendto?
>  Что за защита могла быть?

теперь игра не требует диска


 
Пит   (2009-09-17 19:25) [44]

Сергей М. ©   (17.09.09 16:18) [42]
Почему не находились в IAT ?
Да потому что их там, наверно, и не было - загрузка Ws2_32 осуществлялясь в динамике ..


так я LoadLibraryX тоже перехватываю... Я же писал.
В старой версии вообще не обнаруживался перехват, в новой версии (наверное, защиту сняли какую-то) хотя бы обнаруживается...

Собственно, вопросы остаются, озвученные в [40] ))


 
Сергей М. ©   (2009-09-18 08:37) [45]


> я LoadLibraryX тоже перехватываю


Ну ты же видишь, что ws2_32 загружен в АП процесса,
Значит перехватываешь позже чем ф-ция вызывается.
Чудес-то не бывает - с луны же этот модуль не свалился)


 
Пит   (2009-09-18 18:03) [46]

Сергей М. ©   (18.09.09 8:37) [45]

Ну в общем, может быть. Ради защиты они могли страдать таким геморроем.

Но если вернуться к версии 1.5, почему WriteProcessMemory выдает ошибку и под админом тоже, хотя на тестовых приложениях все нормально пишется в таблицу импорта даже под правами продвинутого пользователя?


 
antonn ©   (2009-09-18 21:04) [47]


> Но если вернуться к версии 1.5, почему WriteProcessMemory
> выдает ошибку и под админом тоже, хотя на тестовых приложениях
> все нормально пишется в таблицу импорта даже под правами
> продвинутого пользователя?

потому что защиту делали не дураки :)
авторы Панкбастера еще выпендривались, что много пофиксили в последнем патче :)



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2009.11.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.006 c
1-1224572864
Gurd
2008-10-21 11:07
2009.11.15
TXMLDocument


15-1252614613
Юрий
2009-09-11 00:30
2009.11.15
С днем рождения ! 11 сентября 2009 пятница


2-1254374207
Necco
2009-10-01 09:16
2009.11.15
StringList в Edit


15-1253313038
DVM
2009-09-19 02:30
2009.11.15
Как путь типа SystemRoot ... превратить в нормальный?


15-1253180682
Дмитрий С
2009-09-17 13:44
2009.11.15
Как в JS получить метод которым загружена страница?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский