Melindungi perangkat lunak dari rekayasa balik

Pada artikel ini kami akan memperkenalkan diri sebagai pengembang perangkat lunak berlisensi dan mempertimbangkan cara untuk melindungi program kami agar tidak diretas oleh pembajak.





pengantar

Kami akan melihat metode untuk melindungi perangkat lunak yang ditulis dalam bahasa yang dikompilasi dari rekayasa balik, pembajakan, dan pengenalan malware pihak ketiga. Informasi yang diberikan relevan karena salah satu tujuan dari setiap proyek berpemilik adalah untuk melisensikan dan mengendalikan distribusi perangkat lunak ini. Hampir semua program yang membutuhkan lisensi mengalami upaya peretasan dan banyak dari mereka memiliki program bajakan saat ini. Berikut ini, untuk kesederhanaan, kita akan menyebut program cracked - cracked, dan proses cracking - crack.





Pada artikel ini, kami akan memperkenalkan diri sebagai pengembang perangkat lunak berlisensi di C ++ dan akan menganalisis metode perlindungan apa yang harus digunakan untuk mempersulit proses cracking program kami. Perlu dipahami bahwa program apa pun dapat diretas, dan tidak ada perlindungan mutlak, tujuannya adalah menjadikan rekayasa balik paling sulit dan waktu yang diperlukan untuk meretas program lebih lama daripada waktu antara pembaruan ke perangkat lunak fiksi kami.





Informasi Umum

Pembajakan perangkat lunak adalah masalah utama bagi pengembang. Untuk melindungi perangkat lunak dari distribusi ilegal, lisensi tidak cukup, Anda harus melindungi program dari rekayasa balik. Ada ratusan cara untuk melindungi program, tetapi semuanya juga memiliki solusi sendiri. Misalkan kita ingin menulis program berpemilik dalam C ++ terkompilasi untuk sistem operasi Windows, kita melisensikannya dan akan menjual salinannya. Mari kita pertimbangkan bagaimana kita perlu bertindak sehingga satu-satunya cara untuk mendapatkan perangkat lunak kita adalah dengan membeli lisensinya dari pengembang.





++ , . : . , . . , , , .





, , , , . , , , , , . (. reverse engineering). ++ , โ€“ . , , - , . .





. , :ยท      













  • ()









, (. . , ). โ€“   , .





, , , .





, . โ€“ . , , . .





, . , , , .









. . , - .





, , . DR7 โ€“ debug control register, , . , , DR0 โ€“ DR3. , .





โ€“ windows, . , DbgUiRemoteBreakin(), , , . , - . , . .





โ€“ , , . , , - . , , , , .





โ€“ . windows API , , . , :





  • IsDebuggerPresent() โ€“





  • CheckRemoteDebuggerPresent() โ€“





  • NtQueryInformationProcess() โ€“





  • RtlQueryProcessHeapInformation() โ€“





  • RtlQueryProcessDebugInformation() โ€“





  • NtQuerySystemInformation() โ€“





.









. - -, , . . . โ€” , , , . , , .





. . โ€“ . , , , , . . , - . , . .





, .





. , , . . VMProtect Themida. : . . , . , โ€“ , .





Pada artikel ini, kami melihat bagaimana melindungi perangkat lunak dari pembajak. Penggunaan semua metode perlindungan ini telah meningkatkan waktu dan sumber daya yang dibutuhkan untuk memecahkan program kami. Tidak ada metode perlindungan mutlak; perlindungan apa pun dapat dilewati. Dalam kasus ini, tujuan utama perlindungan kami adalah memastikan bahwa dibutuhkan lebih banyak waktu untuk memecahkan program daripada merilis pembaruan. Dalam hal ini, program dapat dianggap terlindungi dengan baik.












All Articles