Soul Knight破解小记

最近TapTap上有一款Roguelike的射击游戏Soul Knight火了,下载玩了一会儿,果然很好玩。但是只有骑士一个角色,其他角色都需要付费解锁,角色的养成也需要大量的宝石,对我这样的手残党来说真是很尴尬。但是Soul Knight是单机游戏,存档甚至购买记录都保存在本地,于是乎,偷个懒看看能不能破解,好玩了再入手正式版支持一下开发者:)。

一.尝试破解il2cpp版本

首先我去TapTap下载的最新的版本,解包后发现已经il2cpp过了,Managed文件夹下传统的Dll被编译到Lib下的libil2cpp.so了,这下子不能再修改Assembly-CSharp.dll了。之前没试过il2cpp的游戏修改,但是还是决定进行一系列的尝试,参考了IL2Cpp Dumper的教程Dump出了所有的类接口,下面是一个角色控制器:

// Namespace: 
public class C01Controller // TypeDefIndex: 3435
{
	// Fields
	private RGHand hand2; // 0x84
	private float in_skill_time; // 0x88
	// Methods
	public void .ctor(); // 4c5200 - 18233
	private void Awake(); // 4c52b0 - 18234
	private void Start(); // 4c5398 - 18235
	private void Update(); // 4c53e8 - 18236
	private void FixedUpdate(); // 4c5534 - 18237
	public virtual void AutoLock(); // 4c5578 - 18238
	public virtual void SwitchWeapon(); // 4c5604 - 18239
	public virtual void RoleSkill(); // 4c5658 - 18240
	public virtual void RoleSkillEnd(); // 4c5a18 - 18241
	public virtual void RoleAtk(bool value); // 4c5bbc - 18242
	virtual void DeadChild(); // 4c5e80 - 18243
	public virtual void KillSomeOne(); // 4c5eb8 - 18244
	private void Hand2Atk(); // 4c5f00 - 18245
	private void Hand2AtkStop(); // 4c5f30 - 18246
	public virtual void Dizzy(float the_time); // 4c5f60 - 18247
}
每行代码后的注释是其在so里的偏移,把libil2cpp.so放到IDA中去分析,找到对应的ARM 汇编片段如下(Awake函数):

STMFD           SP!, {R4-R6,R10,R11,LR}
ADD             R11, SP, #0x10
MOV             R4, R0
LDR             R0, =(_GLOBAL_OFFSET_TABLE_ - 0x4C52CC)
LDR             R5, =0x44AE4
ADD             R0, PC, R0 ; _GLOBAL_OFFSET_TABLE_
ADD             R0, R5, R0
LDRB            R0, [R0,#(byte_D8E17D - 0xD8E0B0)]
CMP             R0, #0
BNE             loc_4C52FC
LDR             R0, =(_GLOBAL_OFFSET_TABLE_ - 0x4C52E8)
LDR             R1, =0x13FB8
ADD             R6, PC, R0 ; _GLOBAL_OFFSET_TABLE_
LDR             R0, [R1,R6]
LDR             R
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值