mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
115 lines
5.8 KiB
Markdown
115 lines
5.8 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
# Vodič za dekompilaciju Wasm i kompilaciju Wat
|
|
|
|
U oblasti **WebAssembly**, alati za **dekompilaciju** i **kompilaciju** su neophodni za programere. Ovaj vodič uvodi neke online resurse i softver za rukovanje **Wasm (WebAssembly binarni)** i **Wat (WebAssembly tekst)** datotekama.
|
|
|
|
## Online alati
|
|
|
|
- Za **dekompilaciju** Wasm u Wat, alat dostupan na [Wabt's wasm2wat demo](https://webassembly.github.io/wabt/demo/wasm2wat/index.html) je koristan.
|
|
- Za **kompilaciju** Wat nazad u Wasm, [Wabt's wat2wasm demo](https://webassembly.github.io/wabt/demo/wat2wasm/) služi toj svrsi.
|
|
- Druga opcija za dekompilaciju može se naći na [web-wasmdec](https://wwwg.github.io/web-wasmdec/).
|
|
|
|
## Softverska rešenja
|
|
|
|
- Za robusnije rešenje, [JEB by PNF Software](https://www.pnfsoftware.com/jeb/demo) nudi opsežne funkcije.
|
|
- Open-source projekat [wasmdec](https://github.com/wwwg/wasmdec) je takođe dostupan za zadatke dekompilacije.
|
|
|
|
# Resursi za dekompilaciju .Net
|
|
|
|
Dekompilacija .Net biblioteka može se ostvariti pomoću alata kao što su:
|
|
|
|
- [ILSpy](https://github.com/icsharpcode/ILSpy), koji takođe nudi [plugin za Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode), omogućavajući korišćenje na više platformi.
|
|
- Za zadatke koji uključuju **dekompilaciju**, **modifikaciju** i **rekompilaciju**, [dnSpy](https://github.com/0xd4d/dnSpy/releases) se toplo preporučuje. **Desni klik** na metodu i izbor **Modify Method** omogućava promene u kodu.
|
|
- [JetBrains' dotPeek](https://www.jetbrains.com/es-es/decompiler/) je još jedna alternativa za dekompilaciju .Net biblioteka.
|
|
|
|
## Unapređenje debagovanja i logovanja sa DNSpy
|
|
|
|
### DNSpy logovanje
|
|
|
|
Da biste logovali informacije u datoteku koristeći DNSpy, uključite sledeći .Net kod:
|
|
|
|
%%%cpp
|
|
using System.IO;
|
|
path = "C:\\inetpub\\temp\\MyTest2.txt";
|
|
File.AppendAllText(path, "Password: " + password + "\n");
|
|
%%%
|
|
|
|
### DNSpy debagovanje
|
|
|
|
Za efikasno debagovanje sa DNSpy, preporučuje se niz koraka za podešavanje **atributa biblioteke** za debagovanje, osiguravajući da su optimizacije koje bi mogle ometati debagovanje onemogućene. Ovaj proces uključuje promenu `DebuggableAttribute` podešavanja, rekonstrukciju biblioteke i čuvanje izmena.
|
|
|
|
Pored toga, da biste debagovali .Net aplikaciju koju pokreće **IIS**, izvršavanje `iisreset /noforce` ponovo pokreće IIS. Da biste priključili DNSpy na IIS proces za debagovanje, vodič savetuje da izaberete **w3wp.exe** proces unutar DNSpy i započnete sesiju debagovanja.
|
|
|
|
Za sveobuhvatan pregled učitanih modula tokom debagovanja, preporučuje se pristup **Modules** prozoru u DNSpy, nakon čega se otvaraju svi moduli i sortiraju biblioteke radi lakše navigacije i debagovanja.
|
|
|
|
Ovaj vodič obuhvata suštinu WebAssembly i .Net dekompilacije, nudeći put za programere da lako navigiraju ovim zadacima.
|
|
|
|
## **Java dekompilator**
|
|
|
|
Za dekompilaciju Java bajtkoda, ovi alati mogu biti veoma korisni:
|
|
|
|
- [jadx](https://github.com/skylot/jadx)
|
|
- [JD-GUI](https://github.com/java-decompiler/jd-gui/releases)
|
|
|
|
## **Debagovanje DLL-ova**
|
|
|
|
### Korišćenje IDA
|
|
|
|
- **Rundll32** se učitava iz specifičnih putanja za 64-bitne i 32-bitne verzije.
|
|
- **Windbg** se bira kao debager sa opcijom da se pauzira pri učitavanju/izlazku biblioteke omogućenom.
|
|
- Parametri izvršenja uključuju putanju DLL-a i naziv funkcije. Ova postavka zaustavlja izvršenje pri svakom učitavanju DLL-a.
|
|
|
|
### Korišćenje x64dbg/x32dbg
|
|
|
|
- Slično IDA, **rundll32** se učitava sa izmenama komandne linije kako bi se odredili DLL i funkcija.
|
|
- Podešavanja se prilagođavaju da se prekine na ulazu DLL-a, omogućavajući postavljanje tačke prekida na željenoj tački ulaza DLL-a.
|
|
|
|
### Slike
|
|
|
|
- Tačke zaustavljanja izvršenja i konfiguracije su ilustrovane kroz snimke ekrana.
|
|
|
|
## **ARM & MIPS**
|
|
|
|
- Za emulaciju, [arm_now](https://github.com/nongiach/arm_now) je koristan resurs.
|
|
|
|
## **Shellcodes**
|
|
|
|
### Tehnike debagovanja
|
|
|
|
- **Blobrunner** i **jmp2it** su alati za alokaciju shellcode-a u memoriji i debagovanje sa Idom ili x64dbg.
|
|
- Blobrunner [izdanja](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)
|
|
- jmp2it [kompilovana verzija](https://github.com/adamkramer/jmp2it/releases/)
|
|
- **Cutter** nudi emulaciju i inspekciju shellcode-a zasnovanu na GUI-u, ističući razlike u rukovanju shellcode-om kao datotekom naspram direktnog shellcode-a.
|
|
|
|
### Deobfuskacija i analiza
|
|
|
|
- **scdbg** pruža uvide u funkcije shellcode-a i mogućnosti deobfuskacije.
|
|
%%%bash
|
|
scdbg.exe -f shellcode # Osnovne informacije
|
|
scdbg.exe -f shellcode -r # Izveštaj o analizi
|
|
scdbg.exe -f shellcode -i -r # Interaktivne petlje
|
|
scdbg.exe -f shellcode -d # Dump-ovanje dekodiranog shellcode-a
|
|
scdbg.exe -f shellcode /findsc # Pronađi start offset
|
|
scdbg.exe -f shellcode /foff 0x0000004D # Izvrši od offset-a
|
|
%%%
|
|
|
|
- **CyberChef** za disasembleranje shellcode-a: [CyberChef recept](https://gchq.github.io/CyberChef/#recipe=To_Hex%28'Space',0%29Disassemble_x86%28'32','Full%20x86%20architecture',16,0,true,true%29)
|
|
|
|
## **Movfuscator**
|
|
|
|
- Obfuskator koji zamenjuje sve instrukcije sa `mov`.
|
|
- Korisni resursi uključuju [YouTube objašnjenje](https://www.youtube.com/watch?v=2VF_wPkiBJY) i [PDF prezentacije](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas_2015_the_movfuscator.pdf).
|
|
- **demovfuscator** može da obrne obfuskaciju movfuscatora, zahtevajući zavisnosti kao što su `libcapstone-dev` i `libz3-dev`, i instaliranje [keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md).
|
|
|
|
## **Delphi**
|
|
|
|
- Za Delphi binarne datoteke, [IDR](https://github.com/crypto2011/IDR) se preporučuje.
|
|
|
|
# Kursevi
|
|
|
|
- [https://github.com/0xZ0F/Z0FCourse_ReverseEngineering](https://github.com/0xZ0F/Z0FCourse_ReverseEngineering)
|
|
- [https://github.com/malrev/ABD](https://github.com/malrev/ABD) \(Binary deobfuscation\)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|