首页
社区
课程
招聘
未解决 [求助](IOS & Unity3D) 请问 Logos 如何 hook Assembly-CSharp 中某个类的属性或方法呢?
2021-1-20 20:51 2709

未解决 [求助](IOS & Unity3D) 请问 Logos 如何 hook Assembly-CSharp 中某个类的属性或方法呢?

2021-1-20 20:51
2709

【例子】

1
修改 Assembly-CSharp 中的用户数据,以 nickname 为例

【过程】

已经 dump 出 Assembly-CSharp 文件,在里面找到了 User 类,和其中的 nickname 属性、@Init() 方法。大概是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Token: 0x02000501 RID: 1281
[Token(Token = "0x20004C8")]
public class User
{
    // Token: 0x04001820 RID: 6176
    [Token(Token = "0x400172D")]
    [FieldOffset(Offset = "0x20")]
    private static string nickname;
 
    // Token: 0x06002DC8 RID: 11720 RVA: 0x00002050 File Offset: 0x00000250
    [Token(Token = "0x6002CBD")]
    [Address(RVA = "0xB96F78", Offset = "0xB96F78", VA = "0x100B96F78")]
    public static void Init(Role role)
    {
        User.nickname = User.GetValue(role.name)
    }
 
    // Token: 0x06002DC7 RID: 11719 RVA: 0x0000206A File Offset: 0x0000026A
    [Token(Token = "0x6002CBC")]
    [Address(RVA = "0xB96860", Offset = "0xB96860", VA = "0x100B96860")]
    public static object GetValue(IEnumerator ie)
    {
        return (T)((object)ie.Current);
    }
}

【尝试HOOK】

用 Logos hook ,打印“11111”,但控制台一直没有输出,应该是没 hook 到这个类,代码如下:

1
2
3
4
5
6
7
8
%hook User
- (void)Init{
    NSLog(@"11111:%@", User.nickname);
    %orig;
    // User.nickname = 'yishujiushipaidaxing';
    NSLog(@"22222:%@", User.nickname);
}
%end

【其它】

用 IDA 看到这个方法实际的 Function name 是_User_Init_m971042247 ,segment 是 .il2cpp 。
接着 F5 看伪代码的方法名是
__int64 __fastcall User_Init_m971042247(__int64 a1)

【求助问题】

请问如何 hook 到 Assembly-CSharp 里的 User@Init() 方法呢?
感谢解答!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
打赏
分享
最新回复 (1)
雪    币: 80
活跃值: (305)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
KiddoLin 2021-2-4 16:22
2
0
没人吗?顶一顶~
游客
登录 | 注册 方可回帖
返回