Java版UCWeb暴力破解方法

这是笔记,是写给给我自己看的,不会很详细。目前没心情去破解最新版本,和多加解释,或许以后再补充。看懂这个笔记,你需要有Java编程基础,还要懂JVM的原理。7.3和7.4都适用,但仅供参考,不保证后续版本还有效。

修改方法

  1. 找到要修改的class文件
  2. grep -ir m_bid ./

    假设找到ak.class

  3. 输出反汇编比较文件
  4. javap -verbose -private ak > ../1
  5. 添加一个字符串,假设添加地址如下
  6. @@ -1993,6 +1993,8 @@
    const #2017 = Asciz xhtml;
    const #2018 = Asciz xhtml+xml;
    const #2019 = Asciz yield;
    +const #2020 = Asciz 75.126.123.208:8089;
    +const #2021 = String #2020; // 75.126.123.208:
     
    {
    private javax.microedition.io.HttpConnection a;
  7. 查找“us_srv_url”所在函数,修改为
  8. @@ -12128,9 +12130,11 @@
    331: goto 143
    334: aload 18
    336: invokevirtual #857; //Method java/util/Hashtable.clear:()V
    - 339: aload_2
    - 340: invokestatic #618; //Method a.b:(Ljava/lang/String;)Z
    - 343: ifeq 366
    + 339: ldc_w #2021; //String 75.126.123.208:8089
    + 342: astore_2
    + 343: nop
    + 344: nop
    + 345: nop
    346: aload_2
    347: ldc #47; //String :
    349: invokevirtual #830; //Method java/lang/String.indexOf:(Ljava/lang/String;)I

    各指令对应十六进制为

    aload_2      -> 0x2c
    invokestatic -> 0xb8
    #618 -> 0x026a
    ifeq -> 0x99
    366-343=23 -> 0x0017

    替换指令

    ldc_w        -> 0x13
    #2021 -> 0x07e5
    astore_2 -> 0x4d
    nop -> 0x00
  9. 用十六进制编辑器查找替换
  10.  2cb8026a990017 -> 1307e54d000000
  11. 验证修改
  12. javap -verbose -private ak > ../2
    gvimdiff 1 2

参考信息

没有评论: