Pada artikel ini, 5 tugas pertama, kita akan mempelajari dasar-dasar pembongkaran, memecahkan masalah tingkat balik awal, dan juga mendekompilasi aplikasi dotNet.
Informasi OrganisasiTerutama bagi mereka yang ingin mempelajari sesuatu yang baru dan berkembang di bidang informasi dan keamanan komputer, saya akan menulis dan berbicara tentang kategori berikut:
- PWN;
- kriptografi (Crypto);
- teknologi jaringan (Jaringan);
- membalikkan (Reverse Engineering);
- steganografi (Stegano);
- pencarian dan eksploitasi kerentanan WEB.
Selain itu, saya akan membagikan pengalaman saya dalam forensik komputer, analisis malware dan firmware, serangan pada jaringan nirkabel dan jaringan area lokal, melakukan pentest dan menulis eksploitasi.
Agar Anda dapat mengetahui tentang artikel baru, perangkat lunak, dan informasi lainnya, saya membuat
saluran di Telegram dan
grup untuk membahas masalah apa pun di bidang ICD. Juga, saya pribadi akan mempertimbangkan permintaan pribadi Anda, pertanyaan, saran dan rekomendasi
secara pribadi dan akan menjawab semua orang .
Semua informasi disediakan hanya untuk tujuan pendidikan. Penulis dokumen ini tidak bertanggung jawab atas kerusakan yang disebabkan seseorang sebagai akibat dari menggunakan pengetahuan dan metode yang diperoleh sebagai hasil dari mempelajari dokumen ini.
C, GCC32
Pertimbangkan kasus yang paling sederhana. Ini adalah pencarian terbalik pertama.

Dalam tugas jenis ini, ketika kata sandi disimpan sebagai string, kata sandi tersebut dapat ditemukan tanpa menggunakan alat khusus apa pun. Mari kita jalankan program dan lihat apa yang ditampilkannya.

Bagus Kami memiliki undangan dan pesan tentang kata sandi yang salah. Kami melihat baris dalam file program, dan kami menemukan di antaranya undangan dan pesan tentang kata sandi yang salah. Harus ada kata sandi di dekat sini.

Jadi, dari baris di sebelah satu sama lain, ada satu yang terlihat seperti kata sandi. Ayo kita coba.

Tugas selesai. Kami memberikan kata sandi, kami mendapatkan 5 poin.

ELFx86, Basic
Kami diminta untuk menemukan kata sandi.

Kami memuat program ke debugger IDA Pro (saya menggunakan versi 7.0) dan tekan F5 untuk mendekompilasi program.

Dengan demikian, nama yang dimasukkan dibandingkan dengan string john, dan kata sandi dibandingkan dengan ripper.

Dengan demikian, kami menyelesaikan tugas dengan benar dan mendapatkan kata sandi kami. Kami menyewanya dan mendapat 5 poin lebih banyak.

PEx86, 0 ββperlindungan
Kali ini kita diberi exe-shnik.

Unduh di IDA Pro.

Program tidak menyimpan informasi debug, jadi kami tidak melihat nama-nama fungsi seperti main. Mari kita lihat garis-garis dalam program, untuk pers ini + F12.

Kami melihat pesan tentang memasukkan kata sandi yang benar dan salah. Sekarang kita dapat menemukan blok dengan baris ini dalam kode dan melihat kondisi apa yang mendahuluinya. Klik dua kali pada garis.

Kami berlokasi di bagian rdata. Mari kita temukan semua tautan dalam kode untuk alamat ini. Untuk melakukan ini, tekan X.

Jadi, dalam kode program hanya ada satu panggilan ke saluran kami. Kami klik dua kali dan pergi ke kode.

Kami berada dalam kode program utama. Kami sedang mendekompilasi.

Di sini, pemeriksaan beberapa nomor a2 dan garis a1 terjadi. Mari kita terjemahkan angka ke karakter.

Untuk melakukan ini, tekan R. pada nomor tersebut. Dan kode kami telah berubah.

Kita sekarang tahu garisnya, masih mencari tahu nomornya a2. Mari kita lihat semua tautan ke fungsi ini.

Ini disebut hanya sekali.

Seperti yang Anda lihat, panjang string dilewatkan sebagai parameter kedua. Periksa kata sandi yang ditemukan.

Kami menyerah dan mendapatkan 5 poin.

ELF-C ++, 0 perlindungan
Kami ditawari untuk menyelesaikan program dalam C ++.

Kami membuka di IDA Pro dan kami meneruskan ke tempat panggilan pesan dengan kata sandi yang benar. Mari kita beri warna hijau.

Mari kita buat grafik lebih kecil.

Jadi kita perlu melewati dua kondisi. Mari kita analisa mereka. Dalam kondisi pertama, jumlah argumen dibandingkan dengan 1. Artinya, program harus memiliki lebih dari satu argumen (yang pertama adalah nama program).

Kami menganalisis kondisi kedua.

String yang kita masukkan dibandingkan dengan string yang dilewatkan sebagai parameter ke fungsi plouf. Kami mendekompilasinya.

Parsing kodenya. Sebenarnya a2 - adalah sebuah string. Dengan demikian, siklus berjalan dari i = 0, sampai elemen ke-i dari garis a2 adalah 0 (yaitu, sampai mencapai akhir dari garis).
V3 = a2 [i]
V5 = panjang (a3)
V6 = a3 [i% v5]
Yaitu, baris pada alamat a1 akan sama dengan dua baris proksi a2 dan a3. Mari kita kembali ke fungsi utama dan menemukan garis-garis ini.

Jadi kita perlu mendefinisikan parameter var_C dan var_10. Kami akan menemukan mereka sedikit lebih tinggi. Ini adalah string unk_8048BC4 dan unk_8048DCC, masing-masing.

Temukan nilai string.

Baiklah, kami akan menulis kode untuk memproksi mereka.

Kami mendapatkan kata sandi.

PE-DotNet, 0 perlindungan
Dalam penugasan ini, kami ditawarkan untuk membalikkan aplikasi .NET.

Anda dapat menentukannya menggunakan utilitas file.

C # adalah bahasa yang didekompilasi, sehingga kita bisa mendapatkan proyek asli. Ini dapat
dilakukan dengan menggunakan
dnSpy .

Mari buka proyek CrackMe dan temukan fungsi dan metode.

Metode Button1_Click memverifikasi kata sandi dengan mengklik tombol.

Dalam kode sumber kami menemukan kata sandi. Lihat itu.

Kami serahkan.

Itu saja untuk saat ini. Untuk dilanjutkan ... Anda dapat bergabung dengan kami di
Telegram . Di sana Anda dapat mengusulkan topik Anda sendiri dan memberikan suara pada pilihan topik untuk artikel berikut.