Async Executor

Pro
v7.3.0+

VM'i asenkron çalıştırın; böylece bayt kodu şifre çözme anahtarı, paketin içinde gönderilmek yerine çalışma zamanında alınabilir.

İzle

Obfuscator.io Async Executor: Async Bytecode Key Getter and Async-Only VM Virtualization

YouTube'da izle

vmAsyncExecutor seçeneği, asenkron VM yürütücüsünü etkinleştirir. Öne çıkan faydası, artık vmBytecodeArrayEncodingKeyGetter ifadesinin bir Promise döndürebilmesidir - asenkron bir anahtar getirici - böylece şifre çözme anahtarı, kod ilk çalıştığında senkron olarak hazır olmak yerine yükleme sırasında bir ağ isteğinden, IndexedDB'den veya herhangi bir asenkron kaynaktan gelebilir.

Arka uçtan anahtar getiren eksiksiz bir anlatım için Bytecode Array Encoding Anahtarını Dışarıda Tutma sayfasına bakın.

Ne zaman kullanılır

Tamamen asenkron kod tabanları için şiddetle önerilir. Bu modda yalnızca async fonksiyonlar sanallaştırılır - senkron bir fonksiyon, dönüş değeri bir Promise haline getirilip çağıranları bozulmadan asenkron yapılamaz - dolayısıyla baştan sona async olan kod en geniş kapsamı elde eder. Kök senkron olduğunda da (örneğin senkron bir IIFE veya UMD sarmalayıcı) yine çalışır: içindeki en dıştaki async fonksiyonlar korunur, senkron kısımlar sanallaştırılmaz (obfuscation işleminin geri kalanı yine uygulanır).

Neler dönüştürülür

Nerede görünürse görünsün (senkron sarmalayıcıların içinde iç içe olanlar dahil) her en dıştaki async fonksiyon. Her zincirdeki en dıştaki async, korunan birimdir - içindeki her şey, senkron ve asenkron, derlemeye dahil edilir. Senkron fonksiyonlar ve düz üreteçler sanallaştırılmaz (obfuscation'ın geri kalanı onlara yine uygulanır).

JavaScript

Atlamalar ve uyarılar

Asenkron bir anahtar getirici etkinken asenkron üreteçler de sanallaştırılmaz - bir asenkron üreteç, yineleyicisini senkron olarak döndürmek zorundadır ve anahtarı bekleyemez. Varsayılan vmTargetFunctionsMode: 'root' modunda atlamalar sessizdir (seçim otomatiktir); ancak hiçbir şey sanallaştırılmazsa VMNoFunctionsToVirtualize bildirilir. 'comment' modunda, açıkça işaretlediğiniz bir fonksiyon sanallaştırılamadığında - senkron çıktığında veya asenkron bir anahtar getirici altındaki bir asenkron üreteç olduğunda - bir uyarı bildirilir (panelde ve API yanıtının warnings dizisinde). Bu uyarılar (VMSyncFunctionSkippedInAsyncMode, VMAsyncGeneratorSkippedInAsyncMode) warnings seçeneği aracılığıyla tür bazında susturulabilir (v7.8.0+).

Root modunda vmAsyncExecutor, vmWrapTopLevelInitializers açık olsa bile üst düzey değişken başlatıcılarını düz JavaScript olarak bırakır ve (v7.8.0+) bir VMTopLevelInitializerNotVirtualized uyarısı bunları listeler.

Gereksinimler

  • Asenkron anahtar getirici vmBytecodeArrayEncoding gerektirir ve vmBytecodeArrayEncodingKeyGetter, vmBytecodeArrayEncodingKey ile birlikte kullanılmalıdır - obfuscator ikisinin de ayarlandığını (ya da ikisinin de olmadığını) ve getiricinin bir ifade olarak ayrıştırılabildiğini doğrular; aksi halde derlemeyi reddeder.
  • Obfuscator sürümü 7.3.0 veya üzeri.

Yalnızca seçeneği etkinleştirmek yürütücüyü asenkron moda geçirmekle kalır (yalnızca en dıştaki async fonksiyonlar sanallaştırılır). Anahtar getiriciden bir Promise döndürmek, çalışma zamanında anahtar almanın kilidini açan şeydir ve bu ayrıca bir anahtar getirici ile Bytecode Array Encoding gerektirir. Getiricinin bir Promise döndürüp döndürmediği derleme zamanında denetlenemez; bu nedenle vmAsyncExecutor kapalıyken Promise döndüren bir getirici çalışma zamanında başarısız olur - kod çözücü anahtar yerine Promise nesnesini alır.

Örnek

JavaScript

Tamamen senkron bir kod tabanında neredeyse hiçbir şey sanallaştırılmaz, çünkü yalnızca async fonksiyonlar uygundur. Giriş noktalarınız async değilse, senkron bir anahtar getiriciyi tercih edin ve vmAsyncExecutor seçeneğini kapalı bırakın.