Zacznijmy od początku.
The Company zawsze zależało, aby robić doskonałe, amigowe exeki.
Pierwsze exeki były "ciężkie", długo się ładowały, zawierały w sobie nielegalne klucze (chociaż ukryte), o które pluli
się niektórzy amigowcy, larum szedł o kickstarta amigowego (rom)...
Nie obyło się bez idiotycznych prób szantażu - oto próbka niejakiego "hakera" skrywającego się za siecią TOR pod kryptonimem amim4n :
Jednak mój komentarz na ten humorystyczny, kuriozalny list pozwolę sobie odłożyć, a wytłumaczę Wam w wersji rozszerzonej - dlaczego w niektórych exekach v2.5 wykrywa wirusy i czy jest czego się bać.
Code: Select all
Dlaczego The Company zrobiło taką fuszerkę?
Jak już wyżej pisałem, pierwsze exeki były "ciężkie".
Z początku to wystarczało, to była tylko próbka - zrobiona na użytek własny i puszczona na emulacji.net
Jak sprawa nabrała poważności, ekipa zaczęła rosnąć (olesio, esial) przyszedł czas na dopieszczanie.
Zaczęliśmy więc szukać odpowiednich technik minimalizowania rozmiaru kodu, ponieważ mimo krojenia końcowy rozmiar "silnika*" exeków nie był profesjonalnie mały. Analizowaliśmy różne techniki kompresji, które pozwalałyby zachować ich minimalną wielkość, ale równocześnie pełną funkcjonalność dla użytkownika, jaką powinien dawać EXE'k.
*mam tutaj na myśli rozmiar exeka bez żadnej gry.
Jednocześnie nie chcieliśmy, aby nasza technika produkcji została skopiowana przez gimbusów.
Dlatego zależało nam, aby kompresja była jednym z zabezpieczeń - utrudniając, a raczej uniemożliwiając niedoszłym cwaniaczkom używania np. naszego Demonic Window.
Myślę, że nasza decyzja jest zrozumiała i jest jasne dlaczego nie chcemy się dzielić naszym doświadczeniem tworzenia exeków - no chyba, że ktoś dołącza do ekipy i zostaje przez nas zweryfikowany.
Cyt. jednego z wielu komentarzy, który nas w tym utwierdził:
Ktoś ma program, który zrobi mi exeka z grą, bo mam wyjebkę na TC i nie chce mi się czekać na moją ulubioną grę Samurai Showdown Classiek? Koniecznie z instrukcją.
Pomijam już fakt, że taki EXE-Maker nie istnieje, ale pomyślmy: nawet gdyby istniał, chyba lepiej coś wnieść do już istniejącego projektu niż konkurować z TC?
Dlaczego o tym mówię? To szyfrowanie było właśnie chorobą wieku dziecięcego exeków.
Zapomnieliśmy, że utrudniając analizowanie kodu exeka tak naprawdę zabezpieczyliśmy się też przed "legalnymi"
analizatorami jakimi są antywirusy.
To z tego powodu (jak się dowiemy dalej nie tylko z tego), interpretują one kod jak malware/wirusy. Przezornie

Code: Select all
Ho-ho-ho, myślisz, że ktoś Ci uwierzy? Jak udowodnisz, że to co mówisz jest prawdą?
W sumie nie muszę ale mam dobry humor, a szkoda nie rozwinąć wreszcie tematu, zamiast mydlić oczy, że to fałszywy alarm.
Weźmy aplikację PE jaką jest nasz poczciwy WinUAE (zakładam, że mamy już ten plik na dysku).
Przykład #1
1. Wrzucamy plik WinUAE.exe na stronę VirusTotal
2. Co to się okazało? Że ktoś tydzień temu sprawdzał ten plik i 46 silników antywirusowych wykryło w nim 0 wirusów. JEST DOBRZE!
3. Spakujmy sobie ten pliczek dosyć znanym konkurentem UPX - programem MPRESS:
- Ściągamy program MPRESS
- Plik mpress.exe wrzucamy do katalogu z WinUAE
- Uruchamiamy CMD.exe (konsolę systemu windows)
- Robimy coś takiego i czekamy...:
- Gotowe!
4. Łał, nasz exek WinUAE skurczył się do mniejszych rozmiarów! Zamiast 8MB zajmuje "tylko" 2.10MB - i można go odpalać z dwuklika, nie trzeba go "wypakowywać" - mama byłaby z Was dumna.
5. Wrzućmy taki mniejszy exek na Virus Total i zobaczmy, jak zareagowały na niego silniki antyvirusowe.
Oooo, co się okazuje? Jakbyśmy posiadali antywirusa: McAfee-GW-Edition wykryłby on wirusa: Heuristic.BehavesLike.Win32.Suspicious-BAY.O
Code: Select all
Anthrox, zauważ, że autor MPRESS'a nie udostępnia source'a programu - po latach kto wie, czy nie wyjdzie aferka, że gościu rzeczywiście nie dodał jakiegoś exploita na życzenie "służb specjalnych".
Przetestujmy zatem jak zareagują antywirusy na kompresor UPX, który posiada otwarty source - wszystkie zasady jasne, nie powinno być niespodzianek (zakładamy, że skompilowany program UPX! nie zawiera w sobie niczego dodatkowego niż jest w udostępnionym kodzie - aby mieć 100% pewność trzeba by skompilować kod z sourceforge'a -> ale myślę, że nie ma takiej potrzeby.)
GO!
Przykład #2
1. Ściągamy program UPX! ze sourceforge oraz dla ułatwienia nakładkę GUI -> FreeUPX, która jest dziełem naszego rodaka Jacka Pazery.
2. Instalujemy FreeUPX, oraz do katalogu z programem rozpakowujemy UPX! (aby mieć pewność, że mamy najnowszą wersję kompresora - Jacek nie zawsze prędko aktualizuje program)
3. Przeciągamy WinUAE.exe (oczywiście oryginalnego exeka 8MB, a nie skompresowanego 2MB) na okno FreeUPX, zaznaczamy opcje słabej kompresji i jedziemy! - wciskamy przycisk COMPRESS
4. Cóż, UPX nam nie zaimponował - exek wyjściowy ma ponad 3MB!
5. Wrzucamy na stronę VirusTotal i...
No, no! Zero wirusów!
Code: Select all
A nie mówiłem? Gdybyś używał UPX'a nie byłoby tych problemów, zawsze możesz ustawić mocniejszą kompresję.
6. Fakt, sprawdźmy zatem wybierając najmocniejszy profil kompresji:
(sugeruję uzbroić się w cierpliwość - UPX jest wolniejszy od MPRESSa przy tak mocnym kompresowaniu)
Wyniki prezentują się następująco:
Różnica: 18432 bajty na niekorzyść UPX'a
7. No cóż, jest lepiej, ale UPX i tym razem nam nie zaimponował - mało, że się naczekaliśmy, to rozmiar exeka jest nadal nieco większy niż ten sam skompresowany MPRESSem (w międzyczasie jak UPX! sobie pakował MPRESS'em skompresowałem inną metodą na test, czy plik będzie mniejszy)
=> dobra, nie róbmy afery o "marne" ~20 kB ->czego nie robi się, aby programom antywirusowym zrobić dobrze? To najprostsza droga, skoro niektóre firmy potrafią olać sprawę jak chociażby support *cenzura* - niby można zgłosić wątpliwe exeki, które zostaną sprawdzone i ew. dodane na "białą listę" - spróbowałem i się zawiodłem. Za wysokie progi na pirackie nogi

Oczywiście są chlubne wyjątki, ale nie oszukujmy się -> na 46 firm kilka(naście?) na pewno się wyłamie.
Z drugiej strony ich rozumiem - dlaczego mają aktualizować swoje niezawodny algorytmy dla osoby reprezentującą mało znaną firmę
![Diabełek ]:->](https://forum.thecompany.pl/images/smilies/diabelek.gif)
8. Wrzućmy plik i zobaczmy na VirusTotal, czy poświęcenie rozmiaru exeka korzystnie wpłynie na ilość wykrywanych fałszywych alarmów.
9. Raport:
BitDefender -------------- Gen:Variant.Barys.50
Emsisoft ------------------ Gen:Variant.Barys.50 (B)
F-Secure ------------------ Gen:Variant.Barys.50
GData --------------------- Gen:Variant.Barys.50
MicroWorld-eScan ------- Gen:Variant.Barys.50
Niemożliwe! Czyżby na jaw wyszło, że przy mocnej kompresji dodaje się jakiś wirus?
Code: Select all
Hmmmm, może rzeczywiście coś w tym musi być, skoro aż 5 programów się pluło - trzeba będzie zrobić test z własnoręcznie skompilowaną binarką!
Nie chce mi się. Zrobimy prostszy test.
Skoro nie ma ŻADNYCH wirusów przy kompresji LOW, zmieńmy parę bajtów...
1. Używając HexEditora (jest to program pozwalający edytować plik binarny, jakim jest plik .exe) otwórzmy winuae.exe, który został spakowany upxem, metodą lekką.
2. Na samym początku pliku da się zauważyć napisy "UPX":
3. Wyedytujmy ten "autograf" zmieniając "UPX" na "SEX"

4. Zapisujemy zmiany, wrzucamy na VirusTotal.
5. Raport:
Okazuje się, że strollowaliśmy dwa silniki antywirusowe:
Agnitum -------------- Suspicious!SA
eSafe -------------- Suspicious File
Dosyć mało, ale ze względu na późną porę, pokażę tylko mój osobisty rekord, jaki można osiągnąć zmieniając po prostu parę bajtów:
AntiVir--------------------TR/Crypt.XPACK.Gen
AVG-----------------------Win32/Heur
BitDefender--------------Trojan.Generic.8399328
F-Secure------------------Trojan.Generic.8399328
Fortinet-------------------Malware_fam.NB
GData---------------------Trojan.Generic.8399328
Ikarus---------------------Virus.Win32.Heur
McAfee--------------------Artemis!41A9F73D0A91
McAfee-GW-Edition------Artemis!41A9F73D0A91
MicroWorld-eScan--------Trojan.Generic.8399328
nProtect-------------------Trojan.Generic.8399328
Panda----------------------Suspicious-file
Sophos---------------------Mal/EncPk-ZE
Symantec------------------WS.Reputation.1
TrendMicro-HouseCall---TROJ_GEN.R47H1LB
VIPRE----------------------Trojan.Win32.Generic!BT
Podsumowanie:
Cóż mogę napisać... albo jestem genialnym programistą, który potrafi zmieścić wirusa w 1 bajcie, albo ktoś tu oszukuje Was, biedne owieczki...
Code: Select all
Lejesz wodę, ale tłumaczysz się w miarę przekonująco, ale nadal Ci nie wierzę!
Nie trzeba mi wierzyć. Wystarczy poczekać na exeki v2.6, w których już nie powinno wykrywać fałszywych alarmów.
Raport:
Idziemy nawet o krok dalej. Chcemy zabezpieczyć Was przed zawirusowanymi exekami (chociaż z takimi przypadkami jeszcze się nie spotkaliśmy).
W finalnej wersji exek będzie się łączył do strony http://www.thecompany.pl i sprawdzał, czy suma kontrolna exeka się zgadza:
Oprócz tego zabezpieczenia będziecie wiedzieć, czy wyszła nowa wersja exeka, bo nawet jak zmieni się malutki fragment pokroju "UPX" -> "SEX" suma kontrolna jest całkowicie inna - przez co łatwo wykryć, czy ktoś nie dłubał przy exekach TC.
Oczywiście nic nie będzie stało na przeszkodzie, aby exeki zablokować w firewallu, ale o tym pogadamy w innej opowieści

Code: Select all
Wszystko pięknie, ładnie i elegancko - ale nie wytłumaczyłeś się dlaczego w niektórych exekach v2.5 wirusy są wykrywane, a w niektórych wcale
To proste!
Każdy exek ma indywidualny silnik, więc jeżeli wyjdzie nowy engine, to dopiero po pewnym czasie "stare exeki" zostają zaktualizowane.
Nieraz ten okres wydłuża się

PS
Gdyby obrazki przestały działać - dajcie znać
