Lompat ke konten
Aback Tools Logo

Penyuntik Predikat Opak

Suntikkan predikat opak selalu benar dan selalu salah ke kode sumber untuk membingungkan alat analisis statis dan pembaca manusia. Mendukung 6 jenis predikat dan 12 bahasa pemrograman dengan kepadatan penyuntikan yang dapat diatur. Semua pemrosesan bersifat lokal dan privat.

Opaque Predicate Injector

Inject always-true and always-false opaque predicates into your code to confuse static analysis tools and human readers. Supports 6 predicate types, 12 programming languages, and configurable injection density. All processing is local and private.

Try an example:

Paste source code and click Inject Opaque Predicates to add always-true and always-false conditions that confuse static analysis. Supports 6 predicate types and 12 programming languages. Configure type, language, and density in the settings above.

Mengapa Menggunakan Penyuntik Predikat Opak Kami?

  • Beragam Jenis Predikat: pilih dari enam jenis predikat opak yang berbeda: aritmetika invarian (ekspresi selalu benar/salah), trik XOR dan bitwise, predikat pemaksaan tipe, invarian sensitif alur, pemeriksaan swarujuk, dan predikat kode mati. Setiap jenis memakai properti matematika berbeda yang tahan terhadap deteksi berbasis pola.
  • Beragam Bahasa Output: hasilkan predikat opak untuk JavaScript, Python, TypeScript, Java, C, C++, C#, Go, Rust, PHP, Ruby, dan Swift. Penyuntik menyesuaikan sintaks predikat dengan operator dan sistem tipe setiap bahasa sembari mempertahankan invarian matematika yang membuat predikat tetap opak.
  • Kepadatan Penyuntikan yang Dapat Diatur: kendalikan berapa banyak predikat opak yang disuntikkan: Ringan (1-2 predikat), Sedang (3-5 predikat), atau Berat (6-10+ predikat). Tingkatkan kepadatan untuk obfuskasi lebih kuat atau tetap ringan untuk meminimalkan pembengkakan kode. Predikat disebar secara acak di seluruh kode.
  • Pemrosesan Lokal & Privat: seluruh pembuatan predikat dan transformasi kode terjadi sepenuhnya di browser Anda. Kode sumber Anda tidak pernah meninggalkan perangkat. Tanpa panggilan API, tanpa analitik, tanpa pengumpulan data — privasi penuh untuk kode proprietary Anda. Tanpa pendaftaran atau akun.

Apa itu Predikat Opak?

Predikat opak adalah ekspresi kondisional dalam kode yang hasilnya diketahui (selalu benar atau selalu salah) tetapi tampak seperti kondisi runtime yang sah. Berbeda dari kondisional biasa, predikat opak dirancang agar sulit dievaluasi pada waktu kompilasi oleh alat analisis statis. Misalnya, dalam aritmetika bilangan bulat ekspresi selalu benar (karena mengkuadratkan bilangan bulat menghasilkan nilai non-negatif), tetapi dekompiler naif mungkin tidak mengenali invarian ini. Predikat opak adalah blok dasar obfuskasi kode — mereka menambahkan jalur kode mati yang tidak pernah dieksekusi (predikat selalu salah) atau menjamin blok tertentu selalu dieksekusi (predikat selalu benar), membingungkan baik pembaca manusia maupun alat analisis otomatis.

Cara Kerja Penyuntik Predikat Opak

  1. Penguraian Input — alat menerima kode sumber sebagai input. Kode dianalisis sebagai teks biasa untuk menemukan titik penyuntikan potensial: sebelum definisi fungsi, sebelum blok if/else, di dalam badan fungsi pada batas pernyataan, dan di akhir fungsi. Batas pernyataan diidentifikasi dari baris baru dan titik koma.
  2. Pemilihan Predikat — berdasarkan jenis predikat dan bahasa target yang Anda pilih, alat menghasilkan ekspresi predikat opak memakai sintaks khusus bahasa. Untuk JavaScript, bisa berupa if ((a + a) / 2 === a) (selalu benar untuk bilangan). Untuk Python, bisa memakai trik pemaksaan tipe seperti if (True == 1) (selalu benar).
  3. Pembuatan Variabel — agar predikat tampak sah, penyuntik menghasilkan nama variabel acak yang cocok dengan gaya penulisan bahasa input. Variabel dideklarasikan dengan tipe yang sesuai dan diinisialisasi dengan nilai yang membuat predikat dievaluasi dengan benar.
  4. Penyuntikan — predikat disuntikkan pada lokasi sah yang acak di seluruh kode. Setiap predikat membungkus blok kode (untuk selalu benar) atau menyisipkan blok kode mati (untuk selalu salah). Penyuntik menerapkan kepadatan yang dapat diatur untuk mengendalikan berapa banyak predikat yang ditambahkan.

Jenis-Jenis Predikat Opak

  • Aritmetika Invarian: memakai properti matematika yang selalu berlaku. Contoh: x * 0 === 0 (selalu benar), x * x >= 0 (selalu benar untuk bilangan bulat), y - y === 0 (selalu benar). Memanfaatkan invarian aljabar.
  • Trik XOR & Bitwise: memakai properti operasi bitwise. Contoh: x ^ x === 0 (selalu benar untuk x apa pun), (x & ~x) === 0 (selalu benar), x | x === x (selalu benar). Sulit dianalisis secara statis.
  • Predikat Pemaksaan Tipe: memanfaatkan konversi tipe implisit. Contoh: 1 + 1 !== "11" (selalu benar — penjumlahan numerik vs penggabungan string), [] == false (selalu benar di JS). Khusus bahasa dan sangat membingungkan.
  • Invarian Sensitif Alur: memakai properti yang berlaku di titik tertentu dalam kode. Contoh: typeof x === typeof x (selalu benar), x === x (selalu benar kecuali NaN). Sederhana tetapi efektif.
  • Predikat Kode Mati: kondisi selalu salah yang membungkus kode yang tidak pernah dieksekusi. Menciptakan blok tak terjangkau yang membingungkan analisis alur kendali. Contoh: if (false && complexCondition) ketika kompilator tidak mudah membuktikan kondisi selalu salah.

Privasi & Keamanan

Alat ini berjalan sepenuhnya di browser Anda memakai JavaScript sisi klien. Kode sumber, predikat yang dihasilkan, dan output terobfuskasi Anda tidak pernah diunggah ke server mana pun, disimpan di basis data mana pun, atau dikirim melalui jaringan. Semua pembuatan predikat, penguraian kode, penggantian nama variabel, dan pemformatan output dijalankan secara lokal di perangkat Anda. Tidak ada panggilan API, pelacakan analitik, cookie, atau pengumpulan data apa pun. Ini membuatnya sepenuhnya aman untuk mengobfuskasi kode proprietary, perangkat lunak berlisensi, atau algoritma sensitif.

Pertanyaan yang Sering Diajukan

Predikat opak adalah ekspresi kondisional yang selalu bernilai sama (selalu benar atau selalu salah) tetapi tampak seperti kondisi runtime yang sah. Contohnya `x * 0 === 0` (selalu benar) atau `x !== x` (selalu salah untuk bilangan). Predikat ini dipakai untuk membingungkan alat analisis statis dan pembaca manusia.

Enam jenis: aritmetika invarian (mis. `x * 0 === 0`), trik XOR & bitwise (mis. `x ^ x === 0`), pemaksaan tipe (mis. `[] == false`), invarian sensitif alur (mis. `typeof x === typeof x`), predikat kode mati (selalu salah), dan Gabungan (mencampur semua jenis untuk kompleksitas maksimal).

JavaScript, TypeScript, Python, Java, C, C++, C#, Go, Rust, PHP, Ruby, dan Swift. Predikat disesuaikan dengan setiap bahasa memakai operator, sistem tipe, dan konvensi sintaksis yang sesuai.

Tidak. Predikat selalu benar memastikan kode yang dibungkus selalu dieksekusi. Predikat selalu salah membungkus kode mati yang tidak terjangkau. Logika dan perilaku program tetap sepenuhnya tidak berubah. Hanya ukuran kode bertambah dan ada overhead runtime minimal dari evaluasi kondisi predikat.

Dekompiler dasar tidak dapat mendeteksi sebagian besar predikat opak. Eksekusi simbolik lanjutan mungkin mengevaluasi predikat aritmetika sederhana. Menggunakan beberapa jenis predikat bersama memberi perlindungan lebih kuat daripada satu jenis saja.

Tentu. Penyuntik berjalan sepenuhnya di browser Anda. Kode sumber, predikat yang dihasilkan, dan output terobfuskasi Anda tidak pernah diunggah ke server mana pun atau dikirim melalui jaringan. Semua pemrosesan bersifat lokal tanpa panggilan API atau pengumpulan data.

Kepadatan ringan menambah 1-2 predikat (~10-30 baris). Sedang menambah 3-5 predikat (~30-80 baris). Berat menambah 6-10+ predikat (~80-200+ baris). Setiap predikat biasanya menambah 2-5 baris termasuk deklarasi variabel.

Ya — 100% gratis tanpa pendaftaran, tanpa akun, dan tanpa batas penggunaan. Obfuskasikan kode sebanyak yang Anda perlukan. Tanpa tingkatan premium, biaya tersembunyi, atau batas laju. Kode Anda tidak pernah meninggalkan perangkat Anda.