Jak emulować inną nazwę systemu operacyjnego dla aplikacji?

0

Witajcie,

Mam problem z aplikacją, która nie uruchamia się na Windows Serwer 2012 R2 DataCenter Edition ponieważ nie rozumie tej nazwy windows oraz nazwy edycji. Czy jest jakiś sposób aby oszukać tą aplikację aby podczas pobierania nazwy OS oraz edycji (zapewne robi to poprzez windows API ) zawsze otrzymywała wynik Windows 7 Professional ?

0

Na myśl przychodzi mi tyko globalny hook na użuwane funkcje API do sprawdzania systemu i podmianę w mich ptrzymywanego rekordu z Major i Minor wersją. Ewentualnie hook również na wspomniane API, ale poprzez techniki dll spoofingu lub injekcji by dllka hookowała te funkcje w ramach procesu aplikacji, którą chcesz na fałszywą wersję nabrać.

Ewentualnie jeśli aplikacja pokazuje jakiś komunikat o niekompatybilności wersji, to może wystarczy zwykłe zamienienie skoku pod w odpowiednim miejscu. Którym to ustalisz pod disassemnlerem lub debuggerem, a potem spatchujesz exek by pominąć komunikat ostrzegawczy z zamykaniem aplikacji.

Ta druga metoda jest jednak utrudniona jeśli aplikacja jest spakowana lub dodatkowo zabezpieczona przed reversowaniem i analizą. Poza tym na ogół takie zmiany są niezgodne z licencją. Napisz o jaką konkretnie aplikację chodzi?

3

Nie pamiętam czy Windows Server też to ma, ale klienckie Windowsy we właściwościach exeka mają zakładkę „kompatybilność” i tam można wybrać wersję systemu z jaką ma system okłamywać aplikację.

0

Fakt, ale pomyślałem. Może i naiwnie. Że pytający wykluczył obejście dzięki kompatybilności, skoro tutaj zapytał.

0

Włączenie opcji "„kompatybilność"> "Uruchom jako Windows 7" na WS 2012 R2 powoduje, że aplikacja zwraca nazwę "Windows Server 2008 R2 DataCenter Edition". Niestety właśnie tu jest pies pogrzebany.

@olesio Czy potrafisz określić za ile ktoś chciałby się zająć czymś takim na weekend? Chciałbym przygotować w miarę sensowną i konkretną ofertę na takie zadanie.

0

Proponuję wypróbować wszystkie możliwe systemy do wyboru na zakładce Kompatybilność. Może jak uruchomisz w trybie Vista lub XP lub jeszcze innym, jeżeli tam jest, to może zadziała.

0

A. walić do producenta aplikacji co to za lipę odstawił
B. zdezasemblować program i wyriezat' sprawdzanie wersji systemu

0

@Azarien ma racje. Najlepiej spróbować skontaktować się z producentem. Według mnie powinien pomóc skutecznie. A jeśli chodzi o Hooka to nie spiąc po nocce w pracy, tak na szybko machnąłem to co jest dołączone do tego posta. Pisane pod Delphi 7 Personal. Ale z pewnością przy odrobinie chęci da się to przetłumaczyć by źródła akceptował Lazarus.

Albo ewnetualnie na inny język. Hook jest oczywiście lokalny dla tej testowej aplikacji. Trzeba by pokombinować i sprawdzić co zwraca bez checkboxa system, na którym ten Twój "tajemniczy" program ma koniecznie pracować. Później pozostaje po dopracowaniu dllki dla hooka, wstrzyknąć ją w proces lub zespoofować. Opisuje to Gynvael Coldwind na swoim blogu. Tylko, że na przykładzie mIRC'a i jak to zrobić pod C++. Ale pod Delphi to też nie jest wielki problem.

Można też o ile exek programu nie jest niczym spakowany, dokonać modyfikacji tablicy importów PE Editorem, coś w ten deseń jak pokazuje na swoim tutorialu. Tylko, że wystarczy dodać samą dllkę i export funkcji StartHook. Powinno zadziałać.

Filmik jest tutaj: - no to idę pospać, a Ty jakby co masz "bazę" do dalszych kombinacji po swojemu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1