frida hook InMemoryDexClassLoader内存加载实现dump dex文件

本文介绍了如何利用frida工具,针对Android应用中InMemoryDexClassLoader的内存加载机制,进行动态hook,实现在运行时dump Dex文件到本地,详细阐述了相关步骤和关键代码。
import frida, sys

myflag = False
def on_message(message, data):
    global myflag
    if message['type'] == 'send':
        print("data--------=",data)
        #print("[*] {0}".format(message['payload']))
        print("type=",type(message['payload']))
        mydata =  message['payload']
        print("mydata len--------=",len(mydata))
        if myflag == False :
            myflag = True
            file_object=open("d:\\test.dex",'wb+')
            for i in iter(mydata):
                dat1 = i.to_bytes(1,"little",signed=True)
                print("dat1----",dat1)
                file_object.write(dat1)
    else:
        print(message)

jscode = """
    Java.perform(function () {
        const InMemoryDexClassLoader = Java.use('dalvik.system.InMemoryDexClassLoader');
            InMemoryDexClassLoader.$init.overload('java.nio.ByteBuffer', 'java.lang.ClassLoader')
            .implementation = function (buff, loader) {
            this.$init(buff, loader);
            console.log("----------++" + this)
            console.log("buff len----------++" + buff.capacity())
            var hexA = new Array()
            for (var i = 0; i < buff.capacity(); i++) {
                hexA.push(buff.get(i))
            }
            send(hexA)
            //console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
            Java.classFactory.loader = this;
        }
    });
    """
process = frida.get_usb_device().attach('IQ Option')
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九霄的爸爸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值