12 sierpnia 2014, kategoria:
C++Ponownie dodaję artykuł zahaczający o temat assemblera. Na własnej skórze doświadczyłem dzisiaj problemów ze wstawką assemblerową w kodzie C++, dlatego postanowiłem stworzyć artykuł, w którym zbiorę w całość kilka często używanych trików. Artykuł jest skierowany dla użytkowników darmowego kompilatora GCC, ponoć w Visual Studio wiele problemów znika.
9 sierpnia 2014, kategoria:
C++Krótki artykuł opisujący trzy podstawowe konwencje wywoływania funkcji C++ (a jest ich więcej). Konwencje wywoływania funkcji nie są tematem, na który można się szeroko rozpisać, jednak należy znać i odróżniać ich podstawowe rodzaje, szczególnie bawiąc się w reverse engineering.
6 lipca 2014, kategoria:
C++Szykuje się artykuł, opisujący wykonanie techniki DLL Injection. Do napisania artykułu przymierzałem się już wiele miesięcy temu, miał być pierwszym dotyczącym reverse engineeringu. Ciągle odwlekałem go na później, ponieważ kiepsko u mnie z czasem, a chciałem napisać go solidnie. Umiejętność wykonania DLL Injection wiele razy przyda Ci się, szczególnie w programach edytujących pamięć innych aplikacji.
14 marca 2014, kategoria:
C++W niniejszym artykule omówię listę inicjalizacyjną w języku C++. Jest ona bardzo często używana podczas bardziej rozbudowanych projektów programistycznych. Zastosowanie listy inicjalizacyjnej jest niezbędne podczas używania zaawansowanych mechanizmów programowania obiektowego.
11 marca 2014, kategoria:
C++Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi. Złe operowanie mechanizmem polimorfizmu może znacznie spowolnić działanie aplikacji i doprowadzić do poważnych błędów.
6 marca 2014, kategoria:
C++W języku C++ istnieje wiele rodzajów konstruktorów. Ich implementacja w klasach jest bardzo łatwa i nie sprawia problemów nawet początkującym programistom. Drobny problem z konstruktorami może pojawić się w bardziej zaawansowanych przypadkach np. podczas dziedziczenia.
3 stycznia 2014, kategoria:
C++Kolejny artykuł dotyczący ingerencji w aplikacje trzecie, opisujący podstawową technikę zwiększania funkcjonalności innych procesów. Głównym wątkiem który poruszę, będzie zastosowanie subclassingu w połączeniu z dll injection. Jak zwykle na ruszt weźmiemy grę Saper dostępną w systemie Windows XP.
3 stycznia 2014, kategoria:
C++Czy zastanawiałeś się kiedyś do czego przydają się wskaźniki generyczne? Jednym z ciekawych zastosowań wskaźników generycznych jest odczytywanie pamięci. W połączeniu z dll injection uzyskujemy na prawdę wygodne narzędzie. Możliwe, że ten artykuł nie zmieni Twojego życia, jednak postanowiłem opisać w nim tę prostą metodę. W tym artykule przeczytasz o tym, jak odczytywać pamięć procesu po wstrzyknięciu do niego biblioteki DLL (dll injection).
14 grudnia 2013, kategoria:
C++Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze zorganizowany. Ucząc się klas i programowania obiektowego, powinieneś znać podstawy języka i umieć pisać proste programy proceduralne.
4 sierpnia 2013, kategoria:
C++Podczas pisania różnego typu trainerów do gier lub programów monitorujących system, zachodzi potrzeba wyświetlania listy procesów uruchomionych w systemie. Lista procesów dostarcza nam wielu informacji takich jak np nazwa, identyfikator czy ID. Istnieje kilka metod na wyświetlenie uruchomionych procesów. Przedstawię wszystkie metody które znam i opiszę jedną której zawsze używam.
23 lutego 2013, kategoria:
C++Pierwszy artykuł o dll injection wywołał duże zainteresowanie. Wiele osób szuka informacji na temat pisania trainerów do gier, których główną funkcjonalnością jest wywoływanie funkcji gier w określonym momencie. W poprzednim artykule trochę kiepsko opisałem sam moment wywoływania funkcji. Funkcje wywoływane w pierwszym artykule są funkcjami bez parametrów. Dziś postaram się opisać jak szukać parametrów funkcji oraz jak je wywoływać.
26 stycznia 2013, kategoria:
C++Funkcje nie byłyby tak użyteczne, gdyby nie dało się do nich przekazywać argumentów. Osoby zaczynające przygodę z programowaniem często mylą sposoby ich przekazywania. Warto poznać różnice jakie istnieją w przekazywaniu argumentów do funkcji z użyciem różnych metod.
16 stycznia 2013, kategoria:
C++Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem lub pojemnikiem czy też rekordem. Dzięki strukturom można w prosty sposób organizować zbiory danych, bez konieczności korzystania z tablic (np. bardzo niewygodnie tworzyć bazę danych na tablicach).
15 stycznia 2013, kategoria:
C++Lista jednokierunkowa jest strukturą o dynamicznie zmieniającej się wielkości. Listę można opisać jako uszeregowany zbiór elementów. Każdy element zawiera jakieś dane oraz wskazuje na swojego następcę. Cechą listy jednokierunkowej jest to, że można przeglądać ją tylko w jedną stronę, od początku do końca.
14 stycznia 2013, kategoria:
C++Gra Saper została napisana w 1981. Jest dostępna w każdej wersji systemu Windows. Polega na odkrywaniu zaminowanej planszy tak, aby nie trafić na minę. Gra działa na bardzo prostej zasadzie i nie wymaga zaawansowanego trybu graficznego, mimo tego potrafi wciągnąć na wiele godzin. Sapera można łatwo napisać w dowolnym języku np. w C++ na dodatek używając zwykłej konsoli i nie używając żadnych elementów graficznych (obrazków).
12 stycznia 2013, kategoria:
C++Tablice dynamiczne jednowymiarowe oraz dwuwymiarowe są ściśle związane ze wskaźnikami. Użycie wskaźników to jedyna metoda uzyskania tablicy dynamicznej. Istnieje duża potrzeba na używanie tablic dynamicznych, programista ma nad nimi pełną kontrolę. Możemy decydować o ich wymiarach (kształcie) oraz o wielkości.
9 stycznia 2013, kategoria:
C++Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie wskaźnikami znacznie przyśpiesza wydajność programu, zmniejsza zużycie pamięci oraz skraca kod źródłowy.
6 stycznia 2013, kategoria:
C++Timer to kontrolka odpowiedzialna za wykonywanie określonego kodu, co określoną ilość sekund. Timery znane są przede wszystkim użytkownikom środowisk takich jak Delphi, C++ Bulider, Visual Basic oraz platformy .NET. W ich przypadku utworzenie kontrolki timera ogranicza się wyłącznie do przeciągnięcia go na formę i dodania odpowiedniego kodu. Timery są na tyle wygodne, że często są wręcz nadużywane.
4 stycznia 2013, kategoria:
C++Dll Injection jest to technika pozwalająca uruchomić dowolny kod w pamięci innego procesu, przez zmuszenie procesu do załadowania obcego pliku DLL. Istnieje wiele sposobów na wykonanie Dll injection, wszystkie mają pewne wady i zalety. W artykule opiszę w jaki sposób wywołać funkcję innego procesu posługując się Dll Injection.
7 sierpnia 2012, kategoria:
C++Każda uruchomiona aplikacja posiada swoją pamięć (pamięć procesu). Technika DllInjection pozwala programiście na wstrzyknięcie kodu do uruchomionego procesu, dzięki czemu można poszerzyć go o nowe funkcje, lub wywoływać istniejące funkcje procesu w dowolnym momencie. Jedną z wielu technik wstrzykiwania kodu jest korzystanie z codecave.
2 sierpnia 2012, kategoria:
C++Maskowanie funkcji WinAPI może się nam przydać kiedy antywirusy internetowe czepiają się naszego programu. Dla testów napisałem program w C++, który podczas startu dodaje się do autostartu (rejestr) a następnie łączy się z losowym serwerem przez winsock. Po tych czynnościach program się zamykał. Przeskanowałem go na skanerze internetowym, wynik skanu to 8/43. Aż 8 antywirusów wykryło zagrożenie.
26 lipca 2012, kategoria:
C++Poruszając temat adresu bazowego można by się rozpisać na dziesiątki stron, należało by zacząć od budowy plików wykonywalnych Windows, o nagłówkach i sekcjach (np. PE Header) oraz adresach RVA i VA (relatywnych i bezwzględnych). Informacje na ten temat można znaleźć w internecie. Ja podam kilka najważniejszych faktów.
25 lipca 2012, kategoria:
C++Windows udostępnia nam funkcje pozwalające odczytywać i zapisywać pamięć innych procesów. Służą do tego ReadProcessMemory i WriteProcessMemory. Przed odczytaniem pamięci procesu musimy uzyskać jego uchwyt (HANDLE) i posiadać odpowiednie prawa dostępu. Najlepszym darmowym programem do operacji na pamięci procesu jest CheatEngine oraz TSearch. Naszą aplikacją testową będzie Saper, ponieważ tę grę każdy posiada.