Java版UCWeb暴力破解方法

2010年11月22日 | 分类: 手机翻墙 | 标签: , ,

这是笔记,是写给给我自己看的,不会很详细。目前没心情去破解最新版本,和多加解释,或许以后再补充。看懂这个笔记,你需要有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

参考信息

  • microemu测试命令行
  • java -jar microemulator.jar -cp lib/microemu-jsr-120.jar
  • JVM指令反查手册
  • 加密地址
  • m9rHxuL58sXA2obeu7anzZo      -> uc.ucweb.com:80
    m5ec0LC8pImN1oSJub7uuQ==     -> u.uc123.com:80
    m5ec0Ofi7omN1oSJub6t+g==     -> u.ucfly.com:80
    m8mN0vXrudKNzozRr+34ytSB2cqd -> update.ucweb.com:80
    nc3HxuL58sXA2obeu7an3Is=     -> st.ucweb.com:80
  1. 匿名
    2010年11月24日09:59

    技术性太高了