0332睡到0926睡到1122,睡觉好舒服。夜里发现是frida不知道我所trace函数的返回值类型所以默认返回rax而不是xmm0,ts中又没法通过cpuContext获取后者,看来还是得replace了?
longlong TSKBattleNote$$GetDamageRateValue(longlong param_1,longlong param_2,undefined4 param_3,undefined param_4,longlong param_5)是计算最终伤害的函数,传入计算减伤与加伤前的伤害,
| |
函数中要用到这两个妙妙小数值,前者是DmgUp,后者是DamageDown。看到这命名直接没了力气。
非static函数在method.implementation = function (...args: any[]) {获取到的args不包含该类本身,但在调用
| |
的时候要传入this.handle,为什么。
bridge 做的
il2cpp bridge中如果 const GetSkillEffect = defence.method("GetSkillEffect");这个函数有同样传参个数的重载那么无法获取另一个..因为method的函数签名是method<T extends Il2Cpp.Method.ReturnType>(name: string, parameterCount?: number): Il2Cpp.BoundMethod<T>;。而非静态函数又无法通过defence.class.methods.find(...)去找并invoke..
没能找到计算伤害具体的行为,上述的两个Effect并不是常用的易伤,常用的是DmgUpAllyRateBit,但代码中没找到,头大大。