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

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

  •  
  •   ghd700 · 2019-04-14 00:31:09 +08:00 · 11990 次点击
    这是一个创建于 2055 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    Nitroethane
        2
    Nitroethane  
       2019-04-14 00:49:23 +08:00 via Android   ❤️ 2
    代码被混淆了,类和方法名被替换成了无意义的字符
    ghd700
        3
    ghd700  
    OP
       2019-04-14 00:50:56 +08:00
    @0myun @Nitroethane
    好吧,项目里 90%的代码没混淆,我以为它没混淆过。
    googlelalala
        4
    googlelalala  
       2019-04-14 06:48:24 +08:00 via Android
    现在不是都被混淆了吗?
    whileFalse
        5
    whileFalse  
       2019-04-14 07:35:45 +08:00
    类名可以是个数字?
    610xiao
        6
    610xiao  
       2019-04-14 08:53:06 +08:00
    直接看 smali 层就行了
    zealot0630
        7
    zealot0630  
       2019-04-14 09:01:59 +08:00 via Android
    @whileFalse 好像是可以,jvm 层面的限制比 Java 层面宽松多了
    HhZzXx
        8
    HhZzXx  
       2019-04-14 09:28:45 +08:00
    ```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;
    }
    }
    ```
    Blanke
        9
    Blanke  
       2019-04-14 10:39:27 +08:00
    这个是内部类,直接看当前类名$2.class 这个文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5235 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:34 · PVG 17:34 · LAX 01:34 · JFK 04:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.