Aspose 如何去掉官方水印(crack)


如果你资金不紧张的话,还是支持正版比较好。因为支持原创才是王道,做原创且用且珍惜。仅针对资金不足也不用于商业用途的情况下,可以看向这里。

基本思路

aspose 代码做了混淆,基本属于看不懂具体的实现。因其使用 SDK 单机授权校验,所以还是有迹可循。通过各个组件的 new License().setLicense("licenseText") 方式来找到入口。读通 setLicense 逻辑看清楚最后设置了哪些地方的哪些值。看完后会发现,大都会是某些类的 static 属性值对象,具体的请靠我的实现参(si)透(kao)。

aspose 各组件去官印

aspose.words

public static void registerWords_21_11() {
        try {
            Class<?> zzXDbClass = Class.forName("com.aspose.words.zzXDb");
            Constructor zzXDbConstructor = zzXDbClass.getDeclaredConstructors()[0];
            zzXDbConstructor.setAccessible(true);
            Object zzXDb = zzXDbConstructor.newInstance();
            Field zzZ31 = zzXDbClass.getDeclaredField("zzZ3l");
            zzZ31.setAccessible(true);
            zzZ31.set(zzXDb, new Date(Long.MAX_VALUE));
            Field zzWSL = zzXDbClass.getDeclaredField("zzWSL");
            zzWSL.setAccessible(true);
            Class<?> zzYeQ = Class.forName("com.aspose.words.zzYeQ");
            Field zzXgr = zzYeQ.getDeclaredField("zzXgr");
            zzXgr.setAccessible(true);
            zzWSL.set(zzXDb, zzXgr.get(null));

            Field zzWiV = zzXDbClass.getDeclaredField("zzWiV");
            zzWiV.setAccessible(true);
            zzWiV.set(null, zzXDb);

            Class<?> zzZjjClassB = Class.forName("com.aspose.words.zzYKk");
            Field zzYU8 = zzZjjClassB.getDeclaredField("zzYU8");
            zzYU8.setAccessible(true);
            zzYU8.set(null, 128);
            Field zzyS = zzZjjClassB.getDeclaredField("zzyS");
            zzyS.setAccessible(true);
            zzyS.set(null, false);
        } catch(Exception e) {
            log.error("crack Aspose.word 21.11 失败", e);
        }
    }

aspose.pdf

public static void registerPdf_21_8_1() {
        try {
            Class<?> l9nClass = Class.forName("com.aspose.pdf.l9n");
            Constructor l9nConstructor = l9nClass.getDeclaredConstructors()[0];
            l9nConstructor.setAccessible(true);
            Object l9n = l9nConstructor.newInstance();

            Date maxDate = new Date(Long.MAX_VALUE);
            Field lcField = l9nClass.getDeclaredField("lc");
            lcField.setAccessible(true);
            lcField.set(l9n, maxDate);
            Field lyField = l9nClass.getDeclaredField("ly");
            lyField.setAccessible(true);
            lyField.set(l9n, maxDate);

            Field l0ifField = l9nClass.getDeclaredField("l0if");
            l0ifField.setAccessible(true);
            Class<?> l9kClass = Class.forName("com.aspose.pdf.l9k");
            Field lfField = l9kClass.getDeclaredField("lf");
            lfField.setAccessible(true);
            Object lf = lfField.get(null);
            l0ifField.set(l9n, lf);

            Class<?> l9nLfClass = Class.forName("com.aspose.pdf.l9n$lf");
            Field l9nliField = l9nLfClass.getDeclaredField("lI");
            l9nliField.setAccessible(true);
            l9nliField.set(null, l9n);

            Class<?> l19hClass = Class.forName("com.aspose.pdf.l19h");
            Field liField = l19hClass.getDeclaredField("lI");
            liField.setAccessible(true);
            liField.set(null, 128);
            Field l19hLfField = l19hClass.getDeclaredField("lf");
            l19hLfField.setAccessible(true);
            l19hLfField.set(null, false);
        } catch(Exception e) {
            log.error("crack Aspose.pdf 21.8.1 失败", e);
        }
    }

aspose.slides

public static void registerPPT_21_11() {
        try {
            Class<?> publicClass = Class.forName("com.aspose.slides.internal.oh.public");
            Constructor<?> publicConsurctor = publicClass.getDeclaredConstructors()[0];
            publicConsurctor.setAccessible(true);
            Object publicObject = publicConsurctor.newInstance();

            Date maxDate = new Date(Long.MAX_VALUE);
            Field intField = publicClass.getDeclaredField("int");
            intField.setAccessible(true);
            intField.set(publicObject, maxDate);
            Field newField = publicClass.getDeclaredField("new");
            newField.setAccessible(true);
            newField.set(publicObject, maxDate);

            Field tryField = publicClass.getDeclaredField("try");
            tryField.setAccessible(true);
            tryField.set(null, publicObject);

            Field ifField = publicClass.getDeclaredField("if");
            ifField.setAccessible(true);
            ifField.set(publicObject, 2);

            Class<?> nativeClass = Class.forName("com.aspose.slides.internal.oh.native");
            Field nativeDo = nativeClass.getDeclaredField("do");
            nativeDo.setAccessible(true);
            nativeDo.set(null, publicObject);
        } catch(Exception e) {
            log.error("crack Aspose.slide 21.12 失败", e);
        }

    }

aspose.imaging

public static void registerImage_21_12() {
        try {
            Class<?> brClass = Class.forName("com.aspose.imaging.internal.at.bR");
            Constructor<?> brConstructor = brClass.getDeclaredConstructors()[0];
            brConstructor.setAccessible(true);
            Object brObject = brConstructor.newInstance();
            Class<?> anClass = Class.forName("com.aspose.imaging.internal.at.aN");
            Field aField = anClass.getDeclaredField("a");
            aField.setAccessible(true);
            aField.set(null, brObject);

            Field bField = brClass.getDeclaredField("b");
            bField.setAccessible(true);
            bField.set(null, brObject);


            Class<?> apClass = Class.forName("com.aspose.imaging.internal.at.aP");
            Constructor<?> apConstructor = apClass.getDeclaredConstructors()[0];
            apConstructor.setAccessible(true);

            Field eField = apClass.getDeclaredField("e");
            eField.setAccessible(true);
            Object apObject = eField.get(null);

            Class<?> aOClass = Class.forName("com.aspose.imaging.internal.at.aO");
            Field cField = aOClass.getDeclaredField("c");
            cField.setAccessible(true);
            aO[] aOs = (aO[])cField.get(null);

            Field apaField = apClass.getDeclaredField("a");
            apaField.setAccessible(true);
            apaField.set(apObject, aOs[1]);

            Date maxDate = new Date(Long.MAX_VALUE);
            Field dField = apClass.getDeclaredField("d");
            dField.setAccessible(true);
            dField.set(apObject, maxDate);

        } catch(Exception e) {
            log.error("crack Aspose.imaging 21.12 失败", e);
        }
    }

aspose.html

public static void registerHtml_21_12() {
        try {
            Class<?> z17Class = Class.forName("com.aspose.html.z17");
            Constructor<?> constructor = z17Class.getDeclaredConstructors()[0];
            Object z17 = constructor.newInstance();

            Date maxDate = new Date(Long.MAX_VALUE);
            Field m195Field = z17Class.getDeclaredField("m195");
            m195Field.setAccessible(true);
            m195Field.set(z17, maxDate);
            Field m196Field = z17Class.getDeclaredField("m196");
            m196Field.setAccessible(true);
            m196Field.set(z17, maxDate);

            Field m197Field = z17Class.getDeclaredField("m197");
            m197Field.setAccessible(true);
            m197Field.set(z17, z18.m208);

            Class<?> z2Class = Class.forName("com.aspose.html.z17$z2");
            Field z2Field = z2Class.getDeclaredField("m201");
            z2Field.setAccessible(true);
            z2Field.set(null, z17);
        } catch(Exception e) {
            log.error("crack aspose.html 失败", e);
        }
    }

aspose.cells

public static void registerExcel_21_12() {
        try {
            String licenseExpiry = "20991231";
            Class<?> licenseClass = Class.forName("com.aspose.cells.License");
            Field aField = licenseClass.getDeclaredField("a");
            aField.setAccessible(true);
            aField.set(null, licenseExpiry);

            Class<?> zaukClass = Class.forName("com.aspose.cells.zauk");
            Constructor<?> zaukConstructor = zaukClass.getDeclaredConstructors()[0];
            zaukConstructor.setAccessible(true);
            Object zauk = zaukConstructor.newInstance();
            Field zaField = zaukClass.getDeclaredField("a");
            zaField.setAccessible(true);
            zaField.set(null, zauk);

            Field zcField = zaukClass.getDeclaredField("c");
            zcField.setAccessible(true);
            zcField.set(zauk, licenseExpiry);

            Class<?> zbmgClass = Class.forName("com.aspose.cells.zbmg");
            Field zbaField = zbmgClass.getDeclaredField("a");
            zbaField.setAccessible(true);
            zbaField.set(null, false);
        } catch(Exception e) {
            log.error("crack Aspose.excel 21.12 失败", e);
        }
    }

文章作者: beluga
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 beluga !
  目录