Dekompilasi C, C ++ dan DotNet adalah dasar dari kebalikannya. Memecahkan masalah untuk membalikkan dengan r0ot-mi. Bagian 1

gambar

Pada artikel ini, 5 tugas pertama, kita akan mempelajari dasar-dasar pembongkaran, memecahkan masalah tingkat balik awal, dan juga mendekompilasi aplikasi dotNet.

Informasi Organisasi
Terutama 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.

gambar

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.

gambar

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.

gambar

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

gambar

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

gambar

ELFx86, Basic


Kami diminta untuk menemukan kata sandi.

gambar

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

gambar

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

gambar

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

gambar

PEx86, 0 ​​perlindungan


Kali ini kita diberi exe-shnik.

gambar

Unduh di IDA Pro.

gambar

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.

gambar

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.

gambar

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

gambar

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

gambar

Kami berada dalam kode program utama. Kami sedang mendekompilasi.

gambar

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

gambar

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

gambar

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

gambar

Ini disebut hanya sekali.

gambar

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

gambar

Kami menyerah dan mendapatkan 5 poin.

gambar

ELF-C ++, 0 perlindungan


Kami ditawari untuk menyelesaikan program dalam C ++.

gambar

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

gambar

Mari kita buat grafik lebih kecil.

gambar

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).

gambar

Kami menganalisis kondisi kedua.

gambar

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

gambar

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.

gambar

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.

gambar

Temukan nilai string.

gambar

Baiklah, kami akan menulis kode untuk memproksi mereka.

gambar

Kami mendapatkan kata sandi.

gambar

PE-DotNet, 0 perlindungan


Dalam penugasan ini, kami ditawarkan untuk membalikkan aplikasi .NET.

gambar

Anda dapat menentukannya menggunakan utilitas file.

gambar

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

gambar

Mari buka proyek CrackMe dan temukan fungsi dan metode.

gambar

Metode Button1_Click memverifikasi kata sandi dengan mengklik tombol.

gambar

Dalam kode sumber kami menemukan kata sandi. Lihat itu.

gambar

Kami serahkan.

gambar

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.

Source: https://habr.com/ru/post/id467085/


All Articles