Field 값 후킹 질문드립니다.

홈 > 안드로이드 > 안드로이드
안드로이드

Field 값 후킹 질문드립니다.

2 토커티브 2 6727 0

안녕하세요 선배님들 후킹 시 궁금한점이 있어 글남김니다.


// Namespace: KHS.Manager
public class GameState // TypeDefIndex: 4580
{
    // Fields
    public ulong enemyLife// 0x10
    public ulong myDamage// 0x18
    public float myDamageAmp// 0x20
    public float myCriticalProbability// 0x24
    public float autoShotTime// 0x28
    public float autoShotLifetime// 0x2C
    public bool boss// 0x30
    public float bossCatTime// 0x34
    public CharacterType[] buddyType// 0x38
    public float[] buddyShotTime// 0x40
    public ulong[] buddyDamages// 0x48
    public float[] itemEffctMaxTime// 0x50
    public float[] itemEffctTime// 0x58
    public bool[] itemEffctUpdate// 0x60

    // Methods

    // RVA: 0x70BBA0 Offset: 0x70BBA0 VA: 0x70BBA0
    public void .ctor() { }
}


다음과 같은 코드가 있을때 enemyLife 값을 후킹하고 싶어 코드를 작성했는데 여기서 il2cpp.add()에 들어갈 offset 값을 어떻게 작성해야할까요..?


다음은 작성한 코드입니다.


function awaitForCondition(callback) {
    var i = setInterval(function () {
      var addr = Module.findBaseAddress('libil2cpp.so');
        //console.log("Address found:", addr);
        if (addr) {
            clearInterval(i);
            callback(+addr);
        }
    }, 0);
}

var il2cpp = null;

Java.perform(function () {
    awaitForCondition(function (base) {
        il2cpp = ptr(base);
        //checkdamage();
        checklife();
        //modAddGold();
    })
})

function checklife() {
    Interceptor.attach(il2cpp.add(offset값???), {
        onEnter: function(args) {
            console.log("Showresult is calling");
            this.instance = args[0];

            console.log("value of a = " + this.instance.readULong());
            //console.log(a.readByteArray(100));
            //a.writeLong(100);
        }
    })
}


2 Comments
8 리피트싯 2021.05.27 18:58  
classoffset+Fieldoffset
1 samuel 2021.06.28 06:16  
cool....