mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 07:01:09 +00:00
Translated ['reversing/reversing-tools-basic-methods/README.md'] to pl
This commit is contained in:
parent
cbb692cb2e
commit
e603d1c5c3
1 changed files with 45 additions and 41 deletions
|
@ -1,16 +1,16 @@
|
|||
# Narzędzia do Odwracania Inżynieryjnego i Podstawowe Metody
|
||||
# Narzędzia do Reversingu i Podstawowe Metody
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Zacznij od zera i stań się ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Zacznij naukę hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -22,7 +22,7 @@ Inne sposoby wsparcia HackTricks:
|
|||
|
||||
***
|
||||
|
||||
## Narzędzia do Odwracania Inżynieryjnego oparte na ImGui
|
||||
## Narzędzia do Reversingu oparte na ImGui
|
||||
|
||||
Oprogramowanie:
|
||||
|
||||
|
@ -51,10 +51,10 @@ Zaletą jest to, że jeśli utracony kod źródłowy wymaga przywrócenia z arch
|
|||
|
||||
### [.NET Reflector](https://www.red-gate.com/products/reflector/)
|
||||
|
||||
Z kompleksowym modelem dodatków i interfejsem API rozszerzającym narzędzie, .NET Reflector oszczędza czas i upraszcza rozwój. Przejrzyjmy mnogość usług inżynierii wstecznej, które oferuje to narzędzie:
|
||||
Dzięki kompleksowemu modelowi dodatków i interfejsowi API rozszerzającemu narzędzie, .NET Reflector oszczędza czas i upraszcza rozwój. Przejrzyjmy mnogość usług inżynierii wstecznej, które oferuje to narzędzie:
|
||||
|
||||
* Zapewnia wgląd w sposób przepływu danych przez bibliotekę lub komponent
|
||||
* Zapewnia wgląd w implementację i użycie języków i frameworków .NET
|
||||
* Zapewnia wgląd w implementację i użycie języków i platform .NET
|
||||
* Znajduje funkcjonalności nieudokumentowane i nieujawnione, aby uzyskać więcej z używanych interfejsów API i technologii.
|
||||
* Znajduje zależności i różne zestawy
|
||||
* Namierza dokładne miejsce błędów w twoim kodzie, komponentach innych firm i bibliotekach.
|
||||
|
@ -63,7 +63,7 @@ Z kompleksowym modelem dodatków i interfejsem API rozszerzającym narzędzie, .
|
|||
### [ILSpy](https://github.com/icsharpcode/ILSpy) & [dnSpy](https://github.com/dnSpy/dnSpy/releases)
|
||||
|
||||
[Wtyczka ILSpy dla Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): Możesz ją mieć w dowolnym systemie operacyjnym (możesz zainstalować ją bezpośrednio z VSCode, nie trzeba pobierać z git. Kliknij **Extensions** i **szukaj ILSpy**).\
|
||||
Jeśli musisz **dekompilować**, **modyfikować** i **ponownie kompilować**, możesz użyć [**dnSpy**](https://github.com/dnSpy/dnSpy/releases) lub aktywnie rozwijanej gałęzi, [**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases). (Kliknij prawym przyciskiem myszy -> **Modify Method** aby zmienić coś wewnątrz funkcji).
|
||||
Jeśli musisz **dekompilować**, **modyfikować** i **ponownie kompilować**, możesz użyć [**dnSpy**](https://github.com/dnSpy/dnSpy/releases) lub aktywnie rozwijanej gałęzi, [**dnSpyEx**](https://github.com/dnSpyEx/dnSpy/releases). (**Kliknij prawym przyciskiem -> Modify Method** aby zmienić coś wewnątrz funkcji).
|
||||
|
||||
### Logowanie DNSpy
|
||||
|
||||
|
@ -98,7 +98,7 @@ Następnie zapisz nowy plik za pomocą _**Plik >> Zapisz moduł...**_:
|
|||
|
||||
![](<../../.gitbook/assets/image (599).png>)
|
||||
|
||||
Jest to konieczne, ponieważ jeśli tego nie zrobisz, podczas **uruchamiania** kodu zostanie zastosowanych kilka **optymalizacji** i może się zdarzyć, że podczas debugowania **punkt przerwania nie zostanie osiągnięty** lub niektóre **zmienne nie istnieją**.
|
||||
Jest to konieczne, ponieważ jeśli tego nie zrobisz, podczas **uruchamiania** kodu zostanie zastosowanych kilka **optymalizacji**, co może spowodować, że podczas debugowania **punkt przerwania nie zostanie osiągnięty** lub niektóre **zmienne nie będą istnieć**.
|
||||
|
||||
Następnie, jeśli twoja aplikacja .NET jest **uruchamiana** przez **IIS**, możesz ją **ponownie uruchomić** za pomocą:
|
||||
```
|
||||
|
@ -122,7 +122,7 @@ Kliknij dowolny moduł w **Modules** i wybierz **Open All Modules**:
|
|||
|
||||
![](<../../.gitbook/assets/image (919).png>)
|
||||
|
||||
Kliknij prawym przyciskiem myszy dowolny moduł w **Assembly Explorer** i wybierz **Sort Assemblies**:
|
||||
Kliknij prawym przyciskiem myszy na dowolny moduł w **Assembly Explorer** i wybierz **Sort Assemblies**:
|
||||
|
||||
![](<../../.gitbook/assets/image (336).png>)
|
||||
|
||||
|
@ -145,7 +145,7 @@ Kliknij prawym przyciskiem myszy dowolny moduł w **Assembly Explorer** i wybier
|
|||
|
||||
![](<../../.gitbook/assets/image (701).png>)
|
||||
|
||||
Następnie, gdy rozpoczniesz debugowanie, **wykonanie zostanie zatrzymane po załadowaniu każdego DLL**, a gdy rundll32 załaduje twoje DLL, wykonanie zostanie zatrzymane.
|
||||
Następnie, gdy rozpoczynasz debugowanie, **wykonanie zostanie zatrzymane po załadowaniu każdego DLL**, a gdy rundll32 załaduje twoje DLL, wykonanie zostanie zatrzymane.
|
||||
|
||||
Ale jak uzyskać dostęp do kodu DLL, który został załadowany? Korzystając z tej metody, nie wiem jak.
|
||||
|
||||
|
@ -154,7 +154,7 @@ Ale jak uzyskać dostęp do kodu DLL, który został załadowany? Korzystając z
|
|||
* **Załaduj rundll32** (64 bity w C:\Windows\System32\rundll32.exe i 32 bity w C:\Windows\SysWOW64\rundll32.exe)
|
||||
* **Zmień linię poleceń** ( _File --> Change Command Line_ ) i ustaw ścieżkę do pliku DLL oraz funkcję, którą chcesz wywołać, na przykład: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain
|
||||
* Zmień _Options --> Settings_ i wybierz "**DLL Entry**".
|
||||
* Następnie **rozpocznij wykonanie**, debugger zatrzyma się przy każdym głównym elemencie DLL, w pewnym momencie zatrzymasz się w **wejściu DLL twojego DLL**. Następnie wyszukaj miejsca, w których chcesz ustawić punkt przerwania.
|
||||
* Następnie **rozpocznij wykonanie**, debugger zatrzyma się przy każdym głównym elemencie DLL, w pewnym momencie zatrzymasz się w **wejściu DLL twojego DLL**. Następnie wyszukaj punkty, w których chcesz ustawić punkt przerwania.
|
||||
|
||||
Zauważ, że gdy wykonanie zostanie zatrzymane z jakiegokolwiek powodu w win64dbg, możesz zobaczyć **w jakim kodzie się znajdujesz** patrząc na **górę okna win64dbg**:
|
||||
|
||||
|
@ -164,12 +164,16 @@ Następnie, patrząc na to, możesz zobaczyć, kiedy wykonanie zostało zatrzyma
|
|||
|
||||
## Aplikacje GUI / Gry wideo
|
||||
|
||||
[**Cheat Engine**](https://www.cheatengine.org/downloads.php) to przydatny program do znajdowania ważnych wartości zapisanych w pamięci działającej gry i ich zmiany. Więcej informacji znajdziesz w:
|
||||
[**Cheat Engine**](https://www.cheatengine.org/downloads.php) to przydatny program do znajdowania, gdzie w pamięci uruchomionej gry są przechowywane ważne wartości i ich zmiany. Więcej informacji znajdziesz w:
|
||||
|
||||
{% content-ref url="cheat-engine.md" %}
|
||||
[cheat-engine.md](cheat-engine.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
[**PiNCE**](https://github.com/korcankaraokcu/PINCE) to narzędzie do inżynierii wstecznej / front-end dla GNU Project Debugger (GDB), skupione na grach. Może być jednak używane do różnych zadań związanych z inżynierią wsteczną.
|
||||
|
||||
[**Decompiler Explorer**](https://dogbolt.org/) to interfejs internetowy do wielu dekompilatorów. Ta usługa internetowa pozwala porównać wyniki różnych dekompilatorów na małych plikach wykonywalnych.
|
||||
|
||||
## ARM & MIPS
|
||||
|
||||
{% embed url="https://github.com/nongiach/arm_now" %}
|
||||
|
@ -178,10 +182,10 @@ Następnie, patrząc na to, możesz zobaczyć, kiedy wykonanie zostało zatrzyma
|
|||
|
||||
### Debugowanie shellkodu za pomocą blobrunner
|
||||
|
||||
[**Blobrunner**](https://github.com/OALabs/BlobRunner) **przydzieli** **shellkod** w przestrzeni pamięci, wskaże **adres pamięci**, w którym shellkod został przydzielony, a następnie **zatrzyma** wykonanie.\
|
||||
Następnie musisz **dołączyć debugger** (Ida lub x64dbg) do procesu i ustawić **punkt przerwania na wskazanym adresie pamięci**, a następnie **wznów** wykonanie. W ten sposób będziesz debugować shellkod.
|
||||
[**Blobrunner**](https://github.com/OALabs/BlobRunner) **zaalokuje** **shellkod** w przestrzeni pamięci, wskaże **adres pamięci**, w którym zaalokowano shellkod i **zatrzyma** wykonanie.\
|
||||
Następnie musisz **dołączyć debugger** (Ida lub x64dbg) do procesu i ustawić **punkt przerwania na wskazanym adresie pamięci** oraz **wznowić** wykonanie. W ten sposób będziesz debugować shellkod.
|
||||
|
||||
Na stronie wydań na GitHubie znajdziesz archiwa zip zawierające skompilowane wersje: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
|
||||
Strona wydań na githubie zawiera skompresowane wersje: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
|
||||
Możesz znaleźć nieco zmodyfikowaną wersję Blobrunner pod następującym linkiem. Aby ją skompilować, wystarczy **utworzyć projekt C/C++ w Visual Studio Code, skopiować i wkleić kod oraz go skompilować**.
|
||||
|
||||
{% content-ref url="blobrunner.md" %}
|
||||
|
@ -190,7 +194,7 @@ Możesz znaleźć nieco zmodyfikowaną wersję Blobrunner pod następującym lin
|
|||
|
||||
### Debugowanie shellkodu za pomocą jmp2it
|
||||
|
||||
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)jest bardzo podobny do blobrunner. **Przydzieli** **shellkod** w przestrzeni pamięci i rozpocznie **wieczną pętlę**. Następnie musisz **dołączyć debugger** do procesu, **rozpocząć działanie, poczekać 2-5 sekund i nacisnąć stop**, a znajdziesz się w **wiecznej pętli**. Przejdź do następnej instrukcji wiecznej pętli, ponieważ będzie to wywołanie shellkodu, a ostatecznie będziesz wykonywać shellkod.
|
||||
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)jest bardzo podobny do blobrunner. **Alokuję** **shellkod** w przestrzeni pamięci i rozpoczyna **wieczną pętlę**. Następnie musisz **dołączyć debugger** do procesu, **rozpocząć, poczekać 2-5 sekund i nacisnąć stop**, a znajdziesz się w **wiecznej pętli**. Przejdź do następnej instrukcji wiecznej pętli, ponieważ będzie to wywołanie shellkodu, a ostatecznie będziesz wykonywać shellkod.
|
||||
|
||||
![](<../../.gitbook/assets/image (506).png>)
|
||||
|
||||
|
@ -214,10 +218,10 @@ Możesz zobaczyć stos na przykład w postaci wydruku szesnastkowego:
|
|||
|
||||
![](<../../.gitbook/assets/image (183).png>)
|
||||
|
||||
### Rozszyfrowywanie shellkodu i uzyskiwanie funkcji wykonywanych
|
||||
### Odszyfrowywanie shellkodu i uzyskiwanie wykonywanych funkcji
|
||||
|
||||
Spróbuj [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152).\
|
||||
Pokaże ci, które funkcje używa shellkod i czy shellkod jest **dekodowany** w pamięci.
|
||||
Powinieneś spróbować [**scdbg**](http://sandsprite.com/blogs/index.php?uid=7\&pid=152).\
|
||||
Powiedzą ci, które funkcje używa shellkod i czy shellkod jest **dekodowany** w pamięci.
|
||||
```bash
|
||||
scdbg.exe -f shellcode # Get info
|
||||
scdbg.exe -f shellcode -r #show analysis report at end of run
|
||||
|
@ -226,24 +230,24 @@ scdbg.exe -f shellcode -d #Dump decoded shellcode
|
|||
scdbg.exe -f shellcode /findsc #Find offset where starts
|
||||
scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset
|
||||
```
|
||||
scDbg posiada również graficzny uruchamiacz, w którym możesz wybrać opcje, których chcesz użyć i wykonać shellcode
|
||||
scDbg posiada również graficzny uruchamiacz, w którym możesz wybrać opcje, których chcesz użyć, a następnie wykonać shellcode
|
||||
|
||||
![](<../../.gitbook/assets/image (255).png>)
|
||||
|
||||
Opcja **Create Dump** spowoduje zrzucenie ostatecznego shellcode, jeśli jakakolwiek zmiana zostanie dokonana dynamicznie w pamięci shellcode (przydatne do pobrania zdekodowanego shellcode). **Start offset** może być przydatny do uruchomienia shellcode w określonym przesunięciu. Opcja **Debug Shell** jest przydatna do debugowania shellcode za pomocą terminala scDbg (jednak uważam, że każda z opcji wyjaśnionych wcześniej jest lepsza w tej kwestii, ponieważ będziesz mógł użyć Ida lub x64dbg).
|
||||
Opcja **Create Dump** spowoduje zrzucenie ostatecznego shellcode, jeśli jakakolwiek zmiana zostanie dokonana dynamicznie w pamięci shellcode (przydatne do pobrania zdekodowanego shellcode). **Start offset** może być przydatny do uruchomienia shellcode w określonym przesunięciu. Opcja **Debug Shell** jest przydatna do debugowania shellcode za pomocą terminala scDbg (jednak uważam, że któreś z opcji wyjaśnionych wcześniej są lepsze w tej kwestii, ponieważ będziesz mógł użyć Ida lub x64dbg).
|
||||
|
||||
### Rozkładanie na części za pomocą CyberChef
|
||||
|
||||
Prześlij plik shellcode jako dane wejściowe i użyj następującego przepisu, aby go zdekompilować: [https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\))
|
||||
Prześlij plik ze swoim shellcodem jako wejście i użyj następującego przepisu, aby go zdekompilować: [https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\))
|
||||
|
||||
## [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator)
|
||||
|
||||
Ten obfuskator **modyfikuje wszystkie instrukcje dla `mov`** (tak, naprawdę fajne). Wykorzystuje również przerwania do zmiany przepływów wykonań. Aby uzyskać więcej informacji na temat jego działania:
|
||||
Ten obfuskator **modyfikuje wszystkie instrukcje dla `mov`** (tak, naprawdę fajne). Wykorzystuje również przerwania do zmiany przepływów wykonywania. Aby uzyskać więcej informacji na temat jego działania:
|
||||
|
||||
* [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF\_wPkiBJY)
|
||||
* [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf)
|
||||
|
||||
Jeśli masz szczęście, [demovfuscator](https://github.com/kirschju/demovfuscator) zdeobfuskuje plik binarny. Ma kilka zależności
|
||||
Jeśli masz szczęście, [demovfuscator](https://github.com/kirschju/demovfuscator) zdeobfuskuje binarny plik. Ma kilka zależności
|
||||
```
|
||||
apt-get install libcapstone-dev
|
||||
apt-get install libz3-dev
|
||||
|
@ -254,36 +258,36 @@ Jeśli bierzesz udział w **CTF, ta metoda znajdowania flagi** może być bardzo
|
|||
|
||||
## Rust
|
||||
|
||||
Aby znaleźć **punkt wejścia**, wyszukaj funkcje za pomocą `::main` jak w:
|
||||
Aby znaleźć **punkt wejścia**, wyszukaj funkcje za pomocą `::main` jak tutaj:
|
||||
|
||||
![](<../../.gitbook/assets/image (1077).png>)
|
||||
|
||||
W tym przypadku plik binarny nazywał się authenticator, więc jest dość oczywiste, że to jest interesująca funkcja główna.\
|
||||
Mając **nazwę** **funkcji**, które są wywoływane, wyszukaj je w **Internecie**, aby dowiedzieć się o ich **wejściach** i **wyjściach**.
|
||||
W tym przypadku plik binarny nosił nazwę authenticator, więc jest dość oczywiste, że to jest interesująca funkcja główna.\
|
||||
Mając **nazwę** wywoływanej **funkcji**, wyszukaj je w **Internecie**, aby dowiedzieć się o ich **wejściach** i **wyjściach**.
|
||||
|
||||
## **Delphi**
|
||||
|
||||
Dla skompilowanych binariów Delphi można użyć [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)
|
||||
Dla skompilowanych plików binarnych Delphi można użyć [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)
|
||||
|
||||
Jeśli musisz zreversować binarny plik Delphi, sugeruję użycie wtyczki IDA [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
|
||||
Jeśli musisz zreversować plik binarny Delphi, sugeruję użycie wtyczki IDA [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
|
||||
|
||||
Wystarczy nacisnąć **ATL+f7** (importuj wtyczkę python w IDA) i wybierz wtyczkę python.
|
||||
Wystarczy nacisnąć **ATL+f7** (importuj wtyczkę python w IDA) i wybrać wtyczkę python.
|
||||
|
||||
Ta wtyczka uruchomi binarny plik i dynamicznie rozwiąże nazwy funkcji na początku debugowania. Po rozpoczęciu debugowania ponownie naciśnij przycisk Start (zielony lub f9), a przerwa zostanie osiągnięta na początku rzeczywistego kodu.
|
||||
Ta wtyczka będzie wykonywać plik binarny i dynamicznie rozwiązywać nazwy funkcji na początku debugowania. Po rozpoczęciu debugowania ponownie naciśnij przycisk Start (zielony lub f9), a przerwa zostanie przerwana na początku prawdziwego kodu.
|
||||
|
||||
Jest to również bardzo interesujące, ponieważ jeśli naciśniesz przycisk w aplikacji graficznej, debugger zatrzyma się w funkcji wykonywanej przez ten przycisk.
|
||||
|
||||
## Golang
|
||||
|
||||
Jeśli musisz zreversować binarny plik Golang, sugeruję użycie wtyczki IDA [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
|
||||
Jeśli musisz zreversować plik binarny Golang, sugeruję użycie wtyczki IDA [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
|
||||
|
||||
Wystarczy nacisnąć **ATL+f7** (importuj wtyczkę python w IDA) i wybierz wtyczkę python.
|
||||
Wystarczy nacisnąć **ATL+f7** (importuj wtyczkę python w IDA) i wybrać wtyczkę python.
|
||||
|
||||
To rozwiąże nazwy funkcji.
|
||||
|
||||
## Skompilowany Python
|
||||
|
||||
Na tej stronie znajdziesz, jak uzyskać kod pythona z binarnego pliku skompilowanego w formacie ELF/EXE:
|
||||
Na tej stronie znajdziesz, jak uzyskać kod pythona z binarnego pliku skompilowanego ELF/EXE:
|
||||
|
||||
{% content-ref url="../../generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
|
||||
[.pyc.md](../../generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
|
||||
|
@ -302,7 +306,7 @@ W [**no$gba**](https://problemkaputt.de/gba.htm), w _**Opcje --> Konfiguracja Em
|
|||
|
||||
![](<../../.gitbook/assets/image (578).png>)
|
||||
|
||||
Naciśnięcie każdego przycisku ma wartość identyfikacyjną:
|
||||
Gdy są naciśnięte, każdy **klawisz ma wartość**, aby go zidentyfikować:
|
||||
```
|
||||
A = 1
|
||||
B = 2
|
||||
|
@ -387,10 +391,10 @@ W poprzednim kodzie można zobaczyć, że porównujemy **uVar1** (miejsce, gdzie
|
|||
* Po pierwsze, porównujemy go z **wartością 4** (przycisk **SELECT**): W wyzwaniu ten przycisk czyści ekran.
|
||||
* Następnie porównujemy go z **wartością 8** (przycisk **START**): W wyzwaniu sprawdzane jest, czy kod jest poprawny, aby uzyskać flagę.
|
||||
* W tym przypadku zmienna **`DAT_030000d8`** jest porównywana z 0xf3, a jeśli wartość jest taka sama, wykonywany jest pewien kod.
|
||||
* W pozostałych przypadkach sprawdzane jest **cont (`DAT_030000d4`)**. Jest to cont, ponieważ dodaje 1 zaraz po wpisaniu kodu.\
|
||||
Jeśli jest mniejszy niż 8, coś związanego z **dodawaniem** wartości do **`DAT_030000d8`** jest wykonywane (w zasadzie dodawane są wartości naciśniętych klawiszy do tej zmiennej, dopóki cont jest mniejszy niż 8).
|
||||
* W pozostałych przypadkach sprawdzane jest `cont` (`DAT_030000d4`). Jest to `cont`, ponieważ dodaje 1 zaraz po wpisaniu kodu.\
|
||||
Jeśli jest mniejszy niż 8, coś, co wiąże się z **dodawaniem** wartości do **`DAT_030000d8`**, jest wykonywane (w zasadzie dodawane są wartości naciśniętych klawiszy do tej zmiennej, dopóki `cont` jest mniejsze niż 8).
|
||||
|
||||
Więc w tym wyzwaniu, znając wartości przycisków, musisz **nacisnąć kombinację o długości mniejszej niż 8, aby wynikowe dodawanie było równe 0xf3.**
|
||||
Więc w tym wyzwaniu, znając wartości przycisków, musisz **nacisnąć kombinację o długości mniejszej niż 8, tak aby wynikowe dodawanie było równe 0xf3.**
|
||||
|
||||
**Odnośnik do tego samouczka:** [**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/)
|
||||
|
||||
|
@ -416,9 +420,9 @@ Więc w tym wyzwaniu, znając wartości przycisków, musisz **nacisnąć kombina
|
|||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Kup oficjalne [**gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue