2026年10月31日 · 今日 0 帖 · 会员 6.1万 · 主题 17.4万
登录 · 注册 · 游客,欢迎随便逛逛
返回版块
8801
王者却具王侯心等级图标等级图标等级图标等级图标
勋章勋章勋章勋章勋章勋章勋章勋章+3
帖子
184
回复
2,223
积分
3,915
注册
2011-02-06
[怀旧国机]

QQ2012去手机令牌教程

[复制链接]
查看 5,920 回复 0
楼主 发表于 | 查看全部
50 人收藏

以2012-016版为例

1.去九宫格

首先找出九宫格所在类,2012最新版在hs,删掉包内的hs类和九宫格相关图片

打开BE搜hs;(分号带上),得到d/he/ma/of四个类,

然后逐个打开搜索hs,得到的方法个数不定,在方法中,包含调用代码的都要改。

这里我举例几个常遇到的代码(下面的序号只是为了方便表达):

其一

1 aload_0

2 getfield d/a Lof;

3 getfield of/a Lhs; 这行要删除

4 invokevirtual hs/c()V 这行也要删除

5 return

6 aload_0

7 getfield d/O I

8 ifne 719

其二

1 aload_0

2 getfield mr/a Lby;

3 aload_0

4 getfield fm/a Lem;

5 getfield em/a Lof;

6 getfield of/a Lhs; 这行要删除

7 invokevirtual by/a(Ljava/lang/Object;)V

其三

1 pop

2 aload_0

3 aconst_null

4 putfield of/a Lli;

5 aload_0 这行要删除

6 aconst_null 这行要删除

7 putfield of/a Lhs; 这行要删除

8 aload_0

9 iconst_0

10 putfield of/j I

其四

1 aload_0

2 new hs

3 dup

4 aload_0

5 invokespecial hs/<init>(Lof;)V

6 putfield of/a Lhs;

7 aload_0

8 new oa

9 dup

10 aload_0

11 invokespecial oa/<init>(Lof;)V

12 putfield of/a Loa;

13 invokestatic cm/b()V

其四代码中,需要删除1-6行整段代码;

2.去令牌(一)

令牌(一)在cs类,还是删掉包内cs类,

BE搜Lcs;(分号带上),得到em和im类,

搜索方法同上,常遇到代码为:

其一

1 return

2 aload_0

3 getfield fm/a Lem;

4 getfield em/a Lcs; 这行删除

5 invokevirtual cs/d()V 这行删除

6 return

其二

1 aload_0

2 getfield em/a Lby;

3 invokevirtual by/a()Lmr;

4 instanceof cs

5 ifeq 18

6 aload_0

7 getfield em/a Lcs;

8 invokevirtual cs/e()V

9 return

遇到其二代码时,因为手机端BE会显示偏移数值Label**:

需要从第4行的 instanceof cs 删除到第8行invokevirtual cs/e()V 往下的Label**:

其三

有些方法只有类似下面代码

1 aload_0

2 getfield em/a Lcs;

3 invokevirtual cs/f()V

4 return

删1-3行,保留 return 就行

最后说两个我遇到的情况,代码如下:

第一个

1 aaload

2 invokevirtual fo/a()Lnz;

3 getfield nz/c Ljava/lang/String;

4 invokevirtual **/a(Ljava/lang/String;Ljava/lang/String;)V

5 return

像上面的代码,搜**(某类名)时,

所包含的代码段的下一行紧接着是return,删上面的第4行后,

需要在原位置加个空行,要不审核不过,删后如下:

1 aaload

2 invokevirtual fo/a()Lnz;

3 getfield nz/c Ljava/lang/String;

4 nop

5 return

第二个

1 Label**:

2 getfield em/a Lcs;

3 invokevirtual cs/f()V

4 ifgt ***

删掉第2,3行后,Label**: 和 ifgt *** 中间需要 return 隔开,

要不审核也不过,改后的代码如下:

1 Label**:

2 return

4 ifgt ***

修改过程中,你会发现,一般单线程调用代码都有一个共同点,那就是在每一段代码中,都会包含调用类的代码段,

比如说cs类,方法中某段代码的结尾都有Lcs; 或者 cs/**(后面省略)

关于找关联类方法,你可以搜××;(带上分号)或者L××(××指某类名)。

以上只举例一小部分,其他原理差不多的,还有一些特殊代码,需要看了才可以的,不好表达,自己多实践就会了。

代码为电脑halo提取的,也许和手机BE有些不同,没有偏移数值(Label**:),可以看出来的,好了,暂时写这些吧,也许初步接触会有点难度,弄懂了原理之后,就很容易了,慢慢一步一步去实践吧。

(单线程)总体思路如下:

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

找出类→删类及相关图片→搜索所删类名→得出关联类→删关联调用代码→异常表(有则改)→保存、审核、压回→运行测试。

登录回复

登录后可以回复这个帖子。旧账号可使用原密码登录。

登录 注册新号
← 返回版块