首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YGuard不能正确地将两个库混淆在一起

YGuard不能正确地将两个库混淆在一起
EN

Stack Overflow用户
提问于 2014-01-08 19:18:58
回答 1查看 1.2K关注 0票数 0

我有一个基于eclipse的应用程序,它使用YFiles库。我想在我的代码中混淆YFiles和调整YFiles库的混淆类。

我正在通过触发ant脚本的Maven构建来执行这个混淆。我的ant-script有混淆的逻辑。这看起来...

代码语言:javascript
复制
<project name="obfuscate">
<target name="obf-modeler">
    <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="./lib/yguard.jar" />
    <yguard>
        <inoutpair in="yfiles.jar" out="obfyfiles.jar" />
        <inoutpair in="<my-app-jar>" out="<my-app-jar>" />
        <rename replaceClassNameStrings="true">
            <keep>
                <class classes="private" methods="private" fields="private">
                    <patternset>
                        <include name="com.<my-company-name>." />
                    </patternset>
                </class>
                <package>
                    <patternset>
                        <include name="com.<my-company-name>." />
                    </patternset>
                 </package>
            </keep>
            <adjust replaceContent="true">
                <include name="plugin.xml" />
            </adjust>
        </rename>
    </yguard>
</target>

我将Yfiles和我的代码混淆在一起,以便YFiles混淆也包含在我的代码中。我还在类和包元素上设置了模式集,告诉YGaurd“不要混淆我的代码,只调整YFiles混淆更改”。

不幸的是,如果我运行maven构建,一些带有某些返回类型的公共YFiles方法不会被混淆。例如-- y.base.NodeMap类的方法是模糊的,没有返回类型,其他返回的方法仍然使用旧的方法名。

任何线索在我的模式中出了什么问题。而且,如果我删除这个模式集,YFiles混淆也不会有问题。然而,我的代码在这种情况下也会变得模糊,这是我不想要的。

感谢并问候阿比诺

EN

回答 1

Stack Overflow用户

发布于 2014-01-17 18:07:16

您似乎正在对yFiles库的接口或类进行子类化/实现。请注意,如果您正在子类化一个类,并告诉yGuard不要混淆这个子类,那么整个类的层次结构也会被保留(这对于类加载器来说是必要的)。只需在keep规则中排除扩展/实现yFiles类类。这里的一个陷阱是匿名类。要避免这种情况,请将匿名类转换为外部或内部类,并在keep规则中显式排除这些类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20994125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档