Mój JObfuscator zyskał nową funkcjonalność, aby ochronić się przed wbudowanym deobfuscatorem w popularnym narzędziu do dekompilacji Javy – JEB.
https://www.pelock.com/pl/jobfuscator/
Wprowadzona zmiana do silnika w wersji v1.02:
- Strategia obfuskacyjna polegajaca na przenoszeniu wartości liczbowych do tablic, zamiast zapisywanych tam wartości
integer
, zapisuje je jako typdouble
, aby zapobiec deobfuskacji przez popularne dekompilatory Javy np.double[] var_2597 = new double[]{13.898355719807563D, 65535.73657403742D, ... };
.
A wyniki poniżej:
//////////////////////////////////////////////////////////////////////////////// // // An output from JObfuscator v1.02 - Bartosz Wójcik // // Website : https://www.pelock.com/products/jobfuscator // Version : v1.02 // Params : /MixCodeFlow /RenMethods /RenVars /ShuffleMethods /CryptStr /IntsToArray // New lines : Windows (CRLF - \r\n) // Date : 30.07.2021 // //////////////////////////////////////////////////////////////////////////////// import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main(String[] args) { double[] jD4b___uBcBLnT4DPDc = { 7.604463844941735E8, 0.4824279911499976, 46681.74401412342, 6.34113063370141E8, 65535.63496958159, 5.852873783059233E8, 25.66917563526717, 1.2261583709266335E7, 1.8878934664606395E9 }; int fIpmgdCymnfvihwPzvzzuq = (int) (jD4b___uBcBLnT4DPDc[1]); double g_tagCadjjq = 0; double[] g_pUotremgjarSxlrilxsp = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; fIpmgdCymnfvihwPzvzzuq = (int) (jD4b___uBcBLnT4DPDc[8]); while (fIpmgdCymnfvihwPzvzzuq != (int) (jD4b___uBcBLnT4DPDc[0])) { switch(fIpmgdCymnfvihwPzvzzuq) { case 1382297864: g_tagCadjjq = func_3903(g_pUotremgjarSxlrilxsp); fIpmgdCymnfvihwPzvzzuq += (int) (jD4b___uBcBLnT4DPDc[7]); break; case 1887893466: double[] XGYUK_LACYDYTIW_EMMQXIKKLZ = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; fIpmgdCymnfvihwPzvzzuq ^= (int) (jD4b___uBcBLnT4DPDc[5]); break; case 1394559447: String PUWZTYOXS_HDNJMV_IERUS = ""; int[] FJUVLQWHW = { 0x49FA, 0x4A1B, 0x4A08, 0x4A15, 0x4A0B, 0x4A08, 0x4A19, 0x4A0B, 0x49C7, 0x49EB, 0x4A0C, 0x4A1D, 0x4A10, 0x4A08, 0x4A1B, 0x4A10, 0x4A16, 0x4A15, 0x49C7, 0x49E4, 0x49C7, 0x49CC, 0x49D5, 0x49DD, 0x4A0D }; for (int UVANKYPS = 0, MIKHXBMRDG_MUBVDJQGWP_EBPCHEYDCI = 0; UVANKYPS < (int) (jD4b___uBcBLnT4DPDc[6]); UVANKYPS++) { MIKHXBMRDG_MUBVDJQGWP_EBPCHEYDCI = FJUVLQWHW[UVANKYPS]; MIKHXBMRDG_MUBVDJQGWP_EBPCHEYDCI += (int) (jD4b___uBcBLnT4DPDc[2]); PUWZTYOXS_HDNJMV_IERUS += (char) (MIKHXBMRDG_MUBVDJQGWP_EBPCHEYDCI & (int) (jD4b___uBcBLnT4DPDc[4])); } System.out.format(PUWZTYOXS_HDNJMV_IERUS, g_tagCadjjq); fIpmgdCymnfvihwPzvzzuq -= (int) (jD4b___uBcBLnT4DPDc[3]); break; } } } public static double func_3903(double[] numArray) { double[] GSfEZBJsdhjRI___ = { 2.421334501204269, 4.2393759827450454E8, 0.06646005259426904, 2.9763455637251534E7, 1.1946054156556988E9, 1.4664297363385243E9, 1.7585613120558941E9, 9.148263841375413E8, 1.501540404215826E8 }; int gnLj0_X9TMHrL_7Sg_K7 = (int) (GSfEZBJsdhjRI___[2]); double pPmqsyfrtFwamsgfysyWkekjdfl = 0; double var_921 = 0, BEFYYQAD = 0; int dIblmttjWoinogu = 0; gnLj0_X9TMHrL_7Sg_K7 = (int) (GSfEZBJsdhjRI___[7]); while (gnLj0_X9TMHrL_7Sg_K7 != 1466429736) { switch(gnLj0_X9TMHrL_7Sg_K7) { case 684346482: for (double HGSQSTL_IVVSZST_YJJUENDDQE : numArray) { BEFYYQAD += Math.pow(HGSQSTL_IVVSZST_YJJUENDDQE - pPmqsyfrtFwamsgfysyWkekjdfl, (int) (GSfEZBJsdhjRI___[0])); } gnLj0_X9TMHrL_7Sg_K7 ^= (int) (GSfEZBJsdhjRI___[1]); break; case 1878951897: pPmqsyfrtFwamsgfysyWkekjdfl = var_921 / dIblmttjWoinogu; gnLj0_X9TMHrL_7Sg_K7 += -(int) (GSfEZBJsdhjRI___[4]); break; case 1728797857: for (double LDUUTP_VAPNT_LNFBFX : numArray) { var_921 += LDUUTP_VAPNT_LNFBFX; } gnLj0_X9TMHrL_7Sg_K7 += (int) (GSfEZBJsdhjRI___[8]); break; case 914826384: BEFYYQAD = 0.0; gnLj0_X9TMHrL_7Sg_K7 = (int) (GSfEZBJsdhjRI___[6]); break; case 831425100: gnLj0_X9TMHrL_7Sg_K7 = (int) (GSfEZBJsdhjRI___[5]); break; case 1758561312: dIblmttjWoinogu = numArray.length; gnLj0_X9TMHrL_7Sg_K7 -= (int) (GSfEZBJsdhjRI___[3]); break; } } return Math.sqrt(BEFYYQAD / dIblmttjWoinogu); } }