首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

反编译一个 app 的代码看到的,请问这是什么操作?

  •  
  •   ghd700 · 63 天前 · 3549 次点击
    这是一个创建于 63 天前的主题,其中的信息可能已经有所发展或是发生改变。
    public void reportAdrOpen(String str, String str2) {
    	new 2(this, str, str2, str, str2).C();
    }
    

    new 一个 2 ?这里有没有大神讲一下是什么意思?

    9 回复  |  直到 2019-04-14 10:39:27 +08:00
        2
    Nitroethane   63 天前 via Android   ♥ 1
    代码被混淆了,类和方法名被替换成了无意义的字符
        3
    ghd700   63 天前
    @0myun @Nitroethane
    好吧,项目里 90%的代码没混淆,我以为它没混淆过。
        4
    googlelalala   63 天前 via Android
    现在不是都被混淆了吗?
        5
    whileFalse   63 天前
    类名可以是个数字?
        6
    610xiao   63 天前
    直接看 smali 层就行了
        7
    zealot0630   63 天前 via Android
    @whileFalse 好像是可以,jvm 层面的限制比 Java 层面宽松多了
        8
    HhZzXx   63 天前
    ```java
    public class S {
    private void a() {
    Object a = new Object() {
    {
    }
    };

    }
    }
    ````
    这段代码,用 jdk8 编译后,会产生两个 class 文件,`S.class`,`S$1.class`,用 fernflower 反编译`S.class`,可以看到如下信息
    ```java
    import S.1;

    public class S {
    public S() {
    super();
    }

    private void a() {
    new 1(this);
    }
    }
    ```
    而`S$1.class`反编译后的是这个
    ```java
    class S$1 {
    // $FF: synthetic field
    final S this$0;

    S$1(S this$0) {
    super();
    this.this$0 = this$0;
    }
    }
    ```
        9
    Blanke   63 天前
    这个是内部类,直接看当前类名$2.class 这个文件
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2242 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 05:39 · PVG 13:39 · LAX 22:39 · JFK 01:39
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1