Wednesday, January 8, 2014

Hi, Friends!!
Welcome to the new post. Its about modding UC Browser v9.4, this tutorials are completely for the latest version v9.4. So, I can't say whether it works for the history.
Lets begin!!

Important Notes:

Number 0 to 5 is iconst_0 to iconst_5
Number 6 to 127 is bipush 6 to bipush 127
Number 128 to 32767 is sipush 128 to  sipush 32767
Number greater than 32767 is ldc ***** or ldc_w *****

Byte to kilobyte:


1024b= 1kb
4kb=1024x4=4096b
40kb=1024bx40=40960b
50kb=1024x50=51200b
100kb=1024x100=102400b

Modifying Download Limits and 4kb Download Refresh

<1> Download UC 9.4 Browser and add .zip extension. For example : uc.zip
<2> Now with Bytecode Editor Search For K/S. 1 class will extract in a folder. It is av.class in UC 9.4
<3> Open av.class with Bytecode editor/MT . Click on methods and you will see a lot of methods. Just go to <clinit> and open it. you will see the following codes:
<clinit>()V Method Codes are given below:

0  aconst_null
1  putstatic av/a Lav;
2  new java/util/Vector
3  dup
4  invokespecial java/util/Vector/<init>()V
5  putstatic av/a Ljava/util/Vector;
6  iconst_1
7  putstatic av/a B
8  iconst_0
9  putstatic av/b S
10  iconst_0
11  putstatic av/c S
12   iconst_2 you need to change this for download limit
13  putstatic av/a I
14  iconst_0
15  putstatic av/d I
16  ldc "/"
17  putstatic av/a Ljava/lang/String;
18  ldc "/"
19  putstatic av/b Ljava/lang/String;
20  return

  

Change   iconst_2 to   iconst_1 if you want 1 by 1 download
You can also change   iconst_2 to any other. For example if you want 4 downloads At a time then change it to   iconst_4. Take help from Notes:
<4> After modifying save the class.
<5> Now we will change 4kb download Refresh. Since by default UC 9.4 Download Refresh limit is 40kb [40960b]  ,so we will change  40kb to 4kb .
<6> Open Again the av.class with byte code editor or mt. Go to constant pool in the 2nd line you will see 40960. Just delete final 0 , then it will be 4096 which means 4kb.

Modifying Tabs Limit:

<1> Rename your uc browser as uc.zip
<2> Select uc.zip with bytecode editor or MT and search for ext:close_window. 1 class j.classwill be extracted in a folder for uc9.4. Open it with  bytecode editor/mt and Search For tableswitch. Several Methods will Appear. Now As we know in UC9.4 window limit is 8. So we will search for bipush 8 on each method that you have searched with tableswitch. In the second method, you will see the following Codes.
1  aload_0
2  invokevirtual j/c()Lh;
3  pop
4  aload_0
5  getfield j/b Ljava/util/Vector;
6  invokevirtual java/util/Vector/size()I
7  dup
8  istore 5
9  bipush 8 This is window limit [ Change it to bipush 50 if u want 50 tabs.]
10  if_icmplt Label75
11  iload_3
12  iconst_4
13  invokestatic ab/a(II)Z
14  ifne Label75
15  iload_1
16  iconst_2
17  if_icmpeq Label73
18  new java/lang/StringBuffer
19  dup
20  invokespecial java/lang/StringBuffer/<init>()V
21  bipush 87
22  invokestatic ak/a(I)Ljava/lang/String;
23  invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer;
24  bipush 8 This is pop-up window limit that alerts you . [ change it to bipush 50 if you have changed previous bipush 8 to bipush 50]
25  invokevirtual java/lang/StringBuffer/append(I)Ljava/lang/StringBuffer;
26  invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String;
27  astore 6
28  aload_0
29  aconst_null
30  iconst_1
31  anewarray java/lang/String
32  dup
33  iconst_0
34  aload 6
35  aastore
36  invokevirtual j/a(Ljava/lang/String;[Ljava/lang/String;)Z
37  pop
38 Label73:
39  aconst_null
40  areturn
41 Label75:
42  iload 5
43  istore 6
44  iload 5
45  bipush 8
46  if_icmplt Label124
47  iload_3
48  iconst_4
49  invokestatic ab/a(II)Z
50  ifeq Label124
51  aload_0
52  getfield j/b Ljava/util/Vector;
53  iload 5
54  iconst_1
55  isub
56  invokevirtual java/util/Vector/elementAt(I)Ljava/lang/Object;
57  checkcast h
58  astore 4
59  aload_0
60  iload 5
61  iconst_1
62  isub
63  dup
64  istore 6
65  invokevirtual j/d(I)V
66  goto Label198
67 Label124:
68  new h
69  dup
70  aload_0
71  invokespecial h/<init>(Lj;)V
72  astore 4
73  iload_1
74  tableswitch Label187 0 : Label164 , 1 : Label172 , 2 : Label181 , 3 : Label164
75 Label164 :
76  aload 4
77  getstatic j/a Laj;
78  goto Label184
79 Label172:
80  aload 4
81  aload_0
82  invokevirtual j/a()Laj;
83  goto Label184
84 Label181:
85  aload 4
86  aload_2
87 Label184:
88  invokevirtual h/d(Laj;)V
89 Label187:
90  aload_0
91  getfield j/b Ljava/util/Vector;
92  aload 4
93  iload 5
94  invokevirtual java/util/Vector/insertElementAt(Ljava/lang/Object;I)V
95 Label198:
96  iload_3
97  iconst_1
98  invokestatic ab/a(II)Z
99  ifne Label212
100  aload_0
101  iload 6
102  invokevirtual j/d(I)V
103 Label212:
104  aload 4
105  areturn
<3>After Modifying the  class , put back to original file and test your work.

Modifying Free Copy Restrictions:

<1> Rename your uc browser as uc.zip
<2> Extract the largest Class. It is j.class. You can easily find which is the largest class using MT. Just Set Sort Files By Size you will see j.class at the bottom inside of zip file which means j.class is the largest class. Just extract it. Now, Open j.class with MT And  search for 2048. Methods will appear. Open each method and search for 5000 . You will find 5000 in one method. Open it. You will see this.


You will see the following codes :


0  aload_1
1  invokestatic ab/c(Ljava/lang/String;)Z
2  ifeq Label18
3  aload_0
4  bipush 56
5  invokestatic ak/a(I)Ljava/lang/String;
6  aload_2
7  invokevirtual j/a(Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
8  return
9 Label18:
10  aload_1
11  invokevirtual java/lang/String/length()I
12  invokestatic y/a()Ly;
13  getfield y/c I
14  isub
15  istore_3
16  invokestatic a/s()Z
17  ifeq Label54
18  iload_3
19  sipush 2048
20  if_icmple Label54
21  aload_0
22  bipush 108
23  invokestatic ak/a(I)Ljava/lang/String;
24  aload_2
25  invokevirtual j/a(Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
26  return
27 Label54:
28  getstatic bi/b Ljava/util/Vector; Copy This line
29  invokestatic j/a(Ljava/util/Vector;)I
30  iload_3
31  iadd
32  sipush 5000 [ Change it to ldc_w 999999]
33  if_icmple Label80
34  aload_0
35  sipush 337
36  invokestatic ak/a(I)Ljava/lang/String;
37  aload_2
38  invokevirtual j/a(Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
39  return
40 Label80:
41  getstatic bi/b Ljava/util/Vector;
42  aload_1
43  iconst_0
44  invokevirtual java/util/Vector/insertElementAt(Ljava/lang/Object;I)V
45  aload_0
46  bipush 107
47  invokestatic ak/a(I)Ljava/lang/String;
48  aload_2
49  invokevirtual j/a(Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
50  return
Now save the class and open it again. Then search again with  getstatic bi/b Ljava/util/Vector; that i had said to copy before. Several methods will appear. Now again search for 5000 you will see in 1 method. Open it. Code are following.

0  sipush 5000 [ change it to ldc_w 999999 ]
1  getstatic bi/b Ljava/util/Vector;
2  invokestatic j/a(Ljava/util/Vector;)I
3  isub
4  ireturn


Now save the class and put back to original file and test your work
.

 Disabling Pop-up update Notifications for any versions:

1> Rename your uc browser as uc.zip
<2> Select uc.zip with bytecode editor or MT and search for t:acp. Two classes [bb.class and j.class] will be extracted in a folder for uc9.4. Open the 1st class with  bytecode editor/mt and go to constant pool . Then press 8 and Search for t:acp . Then Delete directly t:acp from constant pool. Do the same in the 2nd class.
<3> Now Put the modified classes in the original app and test ur work.

 Removing History Limit:

<1> Rename your uc browser as uc.zip
<2> Select uc.zip with bytecode editor or MT and search for ext:close_window. 1 class j.classwill be extracted in a folder for uc9.4. Open it with  bytecode editor/mt and go to Methods. Now Go to <clinit>
You will see the following codes :
The byte codes are too long . Here i am giving partial codes that need to change
162  putstatic j/s Ljava/lang/String;
163  ldc "UCBrowser"
164  putstatic j/t Ljava/lang/String;
165  ldc "3.1"
166  putstatic j/u Ljava/lang/String;
167  ldc "en-us"
168  putstatic j/v Ljava/lang/String;
169  ldc "release"
170  putstatic j/w Ljava/lang/String;
171  aconst_null
172  putstatic j/x Ljava/lang/String;
173  ldc "GJ"
174  dup
175  putstatic j/C Ljava/lang/String;
176  putstatic j/y Ljava/lang/String;
177  ldc "WWW"
178  putstatic j/z Ljava/lang/String;
179  ldc "obua"
180  putstatic j/D Ljava/lang/String;
181  ldc "9.4.0.343"
182  putstatic j/A Ljava/lang/String;
183  sipush 1033
184  putstatic j/d S
185  bipush 20 this is history limit  [ change it to bipush 50 if u want 50 history]
186  putstatic j/s B
187  iconst_1
188  putstatic j/g Z
189  ldc "startpage"
190  putstatic j/E Ljava/lang/String;
191  ldc "startpage_search"
192  putstatic j/F Ljava/lang/String;
193  ldc "null"
194  putstatic j/G Ljava/lang/String;
195  new java/lang/StringBuffer
196  dup
197  ldc "http://command/command="
198  invokespecial java/lang/StringBuffer/<init>(Ljava/lang/String;)V
199  getstatic j/E Ljava/lang/String;
200  invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer;
201  invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String;
202  putstatic j/E Ljava/lang/String;
203  new java/lang/StringBuffer
204  dup
205  ldc "http://command/command="
206  invokespecial java/lang/StringBuffer/<init>(Ljava/lang/String;)V
207  getstatic j/F Ljava/lang/String;
208  invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer;
209  invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String;
210  putstatic j/F Ljava/lang/String;
211  new java/lang/StringBuffer
212  dup
213  ldc "http://command/command="
214  invokespecial java/lang/StringBuffer/<init>(Ljava/lang/String;)V
215  getstatic j/G Ljava/lang/String;
216  invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer;
217  invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String;
218  putstatic j/G Ljava/lang/String;
219  iconst_0
220  putstatic j/h Z
221  bipush 100
222  putstatic j/t I
223  return
Now save the class and put back to original file.

 

Categories: ,

0 comments:

Post a Comment

Add me on Facebook Follow me on Twitter!