allenymt / PrivacySentry

Android隐私合规整改检测工具,注解+Asm修改字节码的检测方案
MIT License
2.05k stars 262 forks source link

没看懂怎么自定义 Hook 方法 #63

Closed chinnsenn closed 2 years ago

chinnsenn commented 2 years ago

尝试仿造写了一个,运行也没生效

package com.jianbao.doctor

import android.annotation.SuppressLint
import android.telephony.CellInfo
import android.telephony.CellLocation
import android.telephony.TelephonyManager
import androidx.annotation.Keep
import com.yl.lib.privacy_annotation.MethodInvokeOpcode
import com.yl.lib.privacy_annotation.PrivacyClassProxy
import com.yl.lib.privacy_annotation.PrivacyMethodProxy
import com.yl.lib.sentry.hook.PrivacySentry
import com.yl.lib.sentry.hook.util.PrivacyProxyUtil

@Keep
open class CustomPrivacyProxy {

    @PrivacyClassProxy
    @Keep
    object Proxy {
        @JvmStatic
        @SuppressLint("MissingPermission")
        @PrivacyMethodProxy(
            originalClass = TelephonyManager::class,
            originalMethod = "getCellLocation",
            originalOpcode = MethodInvokeOpcode.INVOKEVIRTUAL
        )
        fun getAllCellInfo(manager: TelephonyManager): CellLocation? {
            PrivacyProxyUtil.Util.doFilePrinter("getCellLocation", methodDocumentDesc = "定位-基站信息")
            if (PrivacySentry.Privacy.getBuilder()?.isVisitorModel() == true) {
                return null
            }
            return manager.cellLocation
        }
    }
}
allenymt commented 2 years ago

clean之后再运行,这么写是对的,后续getAllCellInfo方法的拦截就都到你这里了