Membalikkan aplikasi rekayasa setelah kebingungan

Pendahuluan


Publikasi ini bertujuan mempelajari beberapa teknik rekayasa terbalik. Semua materi disajikan hanya untuk tujuan informasi dan tidak dimaksudkan untuk digunakan untuk keuntungan pribadi apa pun.


Subjek penelitian


Sebagai contoh, kita akan mempelajari kode Dokumentasi Atomineer Pro (selanjutnya disebut APD). Ini adalah plug-in untuk Visual Studio yang dirancang untuk secara otomatis menghasilkan komentar dalam kode sumber. Pertama, instal plugin ini dan periksa operasinya. Versi gratis memiliki masa percobaan dan sejumlah batasan penggunaan selama waktu ini. Jadi ketika menambahkan komentar ke file, pengguna diberi pesan yang menyatakan bahwa pada siang hari Anda hanya dapat memproses 10 file

Pesan 1
gambar

Ketika Anda mencoba memproses seluruh proyek, utilitas menampilkan peringatan dialog bahwa perintah ini tidak tersedia.

Pesan 2
gambar

Mari kita mulai


Pertama, lihat di direktori ekstensi yang diinstal dan temukan hanya ada satu perpustakaan dinamis. Kami membutuhkannya. Hal pertama yang akan kita lakukan adalah mengunggahnya ke dekompiler dotPeek dari JetBrains.

dotPeek
gambar

Seperti yang dapat Anda lihat di layar, perpustakaan melewati obfuscator, variabel dan metode diubah namanya dan memiliki nama seperti a, b, c, d ... inilah yang kami butuhkan. Kami hanya mencari itu. Mari kita lihat apa yang bisa dilakukan.

Bagian 1


Hal pertama yang terlintas dalam pikiran adalah menemukan garis, tetapi karena fungsi pencarian tidak di dotPeek, mari kita pergi dengan cara yang berbeda. Kami mendekompilasi pustaka dengan ildasm.exe standar dari Microsoft SDKs. Output hanya akan menerima satu file teks. Di dalamnya, dan cari teks pesan " Mode Percobaan. Harap perhatikan bahwa ... "

file teks
gambar

Menemukan metode
.method family hidebysig bool statis e () cil dikelola
Yang termasuk ke dalam kelas CmdDocThisScope. Sekarang kembali ke dotPeek.

Judul spoiler
gambar

Jadi apa yang kita miliki. Kami menemukan metode yang menampilkan pesan percobaan APD dan, tergantung pada kondisinya, mengembalikan benar atau salah. Kami menemukan semua tempat dari mana metode ini dipanggil

panggilan pencarian
gambar

Hanya 2 titik panggilan ditemukan dan ini adalah metode CmdDocThisFile :: c dan CmdDocThisScope :: c.

ditemukan
gambar

Dengan nama kelas dan kode konstruktor, jelas bahwa kelas bertanggung jawab atas item menu, dan virtualitas dari metode "c" menunjukkan bahwa ini adalah pengendali event untuk memilih item menu yang sesuai oleh pengguna (Informasi ini akan berguna bagi kita lebih lanjut). Sangat mudah untuk menebak bahwa jika metode ini mengembalikan true, maka perintah akan dieksekusi meskipun akan menampilkan dialog dengan peringatan.

Pada awal metode CmdDocThisScope :: e, variabel f ​​bertambah. Buka jendela "Tampilan IL" dan temukan kode perintah:

Tampilan IL


Wikipedia memiliki artikel yang menjelaskan instruksi ini .

Selanjutnya, cari metode ini di file library APD. Kami akan melakukan ini menggunakan alat IDA. Di jendela dengan fungsi kita akan menemukan metode kita, dan kita akan melihat kode yang sudah akrab.

IDA


Setelah memilih instruksi ldsfld, kami menemukan representasi binernya di jendela Hex View

Hex view


Deskripsi tim mengonfirmasi bahwa kami telah menemukan tempat yang tepat.

Wiki


Analisis lebih lanjut dari kode untuk metode ini dan langkah-langkah selanjutnya berada di luar cakupan artikel ini.

Bagian 2


Sekarang, sebagaimana peneliti yang sudah berpengalaman, kami menemukan panggilan untuk dialog dengan pesan " Perintah 'Dokumen semua dalam Proyek' hanya tersedia dalam versi lengkap ... ". Metode ini adalah CmdDocThisProject :: c

CmdDocThisProject :: c


Kelas CmdDocThisProject bertanggung jawab atas perintah "Project Project", metode "c" adalah virtual. Dan itu hanya berisi satu hal - itu adalah panggilan untuk dialog dengan pesan. Tidak ada kondisi, tidak ada pemeriksaan. Mencari kode sumber membawa kita ke metode CmdDocThisProject :: i, yang memiliki apa yang kita harapkan di CmdDocThisProject :: c. Sekarang di IDA kita dapat dengan mudah menemukan metode yang diperlukan dan dapat mempelajari instruksi CIL


Kesimpulan


Tetap mengatakan bahwa artikel itu sengaja meninggalkan bercak putih untuk studi independen mereka.

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


All Articles