这是笔记,是写给给我自己看的,不会很详细。目前没心情去破解最新版本,和多加解释,或许以后再补充。看懂这个笔记,你需要有Java编程基础,还要懂JVM的原理。7.3和7.4都适用,但仅供参考,不保证后续版本还有效。
修改方法
- 找到要修改的class文件
- 输出反汇编比较文件
- 添加一个字符串,假设添加地址如下
- 查找“us_srv_url”所在函数,修改为
- 用十六进制编辑器查找替换
- 验证修改
grep -ir m_bid ./
假设找到ak.class
javap -verbose -private ak > ../1
@@ -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;
@@ -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
2cb8026a990017 -> 1307e54d000000
javap -verbose -private ak > ../2
gvimdiff 1 2
参考信息
- microemu测试命令行
- JVM指令反查手册
- 加密地址
java -jar microemulator.jar -cp lib/microemu-jsr-120.jar
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
没有评论:
发表评论