能力值:
( LV2,RANK:10 )
76 楼
我是小白,看着很高端,很想学习食用之,请问怎么使用,我手机下载下来是个zip压缩包,这是要PC编译才能在安卓上执行的吗,我只有手机一部,请问应该从何起手,
能力值:
( LV1,RANK:0 )
77 楼
万里星河
WanQing
万里星河
测试机型:一加五&nbsp ...
我在coloerOS v6 android9的系统测试没问题,你回头试试
能力值:
( LV1,RANK:0 )
78 楼
xput
我是小白,看着很高端,很想学习食用之,请问怎么使用,我手机下载下来是个zip压缩包,这是要PC编译才能在安卓上执行的吗,我只有手机一部,请问应该从何起手,
这个需要了解android app开发和对smali语法有所了解,需要android studio编译。
能力值:
( LV2,RANK:10 )
79 楼
WanQing
我在coloerOS v6 android9的系统测试没问题,你回头试试
v.1.0.8的库似乎没有发布 只有v1.0.7
能力值:
( LV1,RANK:0 )
80 楼
万里星河
v.1.0.8的库似乎没有发布 只有v1.0.7
拉取最新的代码,之前有bug的几个版本都删除了
能力值:
( LV2,RANK:10 )
81 楼
WanQing
拉取最新的代码,之前有bug的几个版本都删除了
一加五 安卓9 初步测试有效果了
小米还是老样子
能力值:
( LV2,RANK:10 )
82 楼
万里星河
一加五 安卓9 初步测试有效果了
小米还是老样子
不知能否说说原理是啥 我在Instrumentation看到如下代码 似乎很有搞头:
// Call-back for when the dex pc moves in a method.
virtual void DexPcMoved(Thread* thread,
Handle this_object,
ArtMethod* method, uint32_t new_dex_pc)
REQUIRES_SHARED(Locks::mutator_lock_) = 0; 然后就是回调个dex_pc其实不太直观
根据java层的method可获得ArtMethod 然后可以得到codeItem和dex的起始地址 codeItem加上dex_pc能定位到字节码 使用Instruction的导出函数可以直接反编译成smali 因此建议可以把反编译的smali一起回调回来 更直观和实用些
最后于 2025-8-16 20:11
被万里星河编辑
,原因:
能力值:
( LV2,RANK:10 )
83 楼
万里星河
万里星河
一加五 安卓9 初步测试有效果了
小米还是老样子
不知能否说说原理是啥 我在Instrumentation看到如下代 ...
我用frida实现过 但泛化能力不太好 只能在某一部特定的手机用
能力值:
( LV1,RANK:0 )
84 楼
万里星河
我用frida实现过 但泛化能力不太好 只能在某一部特定的手机用[em_055]
那种技术方案可以做,不过不应该去hook mterp解释器,而是对其进行动态重编译,发现是目标的跳转到重编译的代码,不然会拖慢执行速度的。
能力值:
( LV1,RANK:0 )
85 楼
万里星河
万里星河
一加五 安卓9 初步测试有效果了
小米还是老样子
不知能否说说原理是啥 我在Instrumentation看到如下代 ...
这个可以做的,适合有壳的情况分析代码。
能力值:
( LV1,RANK:0 )
86 楼
万里星河
一加五 安卓9 初步测试有效果了
小米还是老样子
你把小米的libart.so 32位和64位的可以都邮箱发给我,我看一下有什么改动
能力值:
( LV2,RANK:10 )
87 楼
WanQing
你把小米的libart.so 32位和64位的可以都邮箱发给我,我看一下有什么改动
好久没用邮件了 直接附件发你吧
上传的附件:
能力值:
( LV2,RANK:10 )
88 楼
6666
能力值:
( LV2,RANK:10 )
89 楼
WanQing
你把小米的libart.so 32位和64位的可以都邮箱发给我,我看一下有什么改动
修复好了
void* hook_getInstruction(void* p1,void* p2,void* p3,void* p4,void* p5,void* p6,void* p7,void* p8)
{
LOGD("%p %p",p1,p2);
unsigned long p = ((unsigned long)p2 >> 12) << 12;
if(mprotect((void*)p,PAGE_SIZE,PROT_READ | PROT_WRITE | PROT_EXEC))
{
LOGD("mprotect: %s", strerror(errno));
}
return back_getInstruction(p1,p2,p3,p4,p5,p6,p7,p8);
}
能力值:
( LV2,RANK:10 )
90 楼
万里星河
修复好了void* hook_getInstruction(void* p1,void* p2,void* p3,void*&a ...
实现了samli动态反编译
public void instruction(View view) throws NoSuchMethodException
{
initAlbatross();
if (listener == null)
{
Method getCaller = AlbatrossDemoMainActivity.class.getDeclaredMethod("getCaller", View.class);
listener = Albatross.hookInstruction(getCaller, 0, 10, (method, self, dexPc, invocationContext) ->
{
assert dexPc <= 10;
assert dexPc >= 0;
assert method == getCaller;
if (self != AlbatrossDemoMainActivity.this)
{
Albatross.log("self:" + self + " this:" + AlbatrossDemoMainActivity.this);
}
assert invocationContext.numberOfVRegs() == 7;
String smali = Albatross.decompile(method,dexPc);
Log.d("InstructionHooker",method + "[" + dexPc + "]" + "->" + smali);
Object receiver = invocationContext.getParamObject(0);
assert receiver == self;
Object v = invocationContext.getParamObject(1);
assert (v instanceof View);
if (dexPc == 4)
{
invocationContext.setVRegObject(0, AlbatrossDemoMainActivity.class);
}
});
}
else
{
listener.unHook();
listener = null;
}
} qing.albatross.demo64 D/InstructionHooker: public void qing.albatross.demo.AlbatrossDemoMainActivity.getCaller(android.view.View)[0]->invoke-static {}, java.lang.Class qing.albatross.core.Albatross.getCallerClass() // method@196
qing.albatross.demo64 D/InstructionHooker: public void qing.albatross.demo.AlbatrossDemoMainActivity.getCaller(android.view.View)[3]->move-result-object v0
qing.albatross.demo64 D/InstructionHooker: public void qing.albatross.demo.AlbatrossDemoMainActivity.getCaller(android.view.View)[4]->iget-object v1, v5, Landroid/widget/TextView; qing.albatross.demo.AlbatrossDemoMainActivity.textView // field@49
qing.albatross.demo64 D/InstructionHooker: public void qing.albatross.demo.AlbatrossDemoMainActivity.getCaller(android.view.View)[6]->new-instance v2, java.lang.StringBuilder // type@TypeIndex[49]
qing.albatross.demo64 D/InstructionHooker: public void qing.albatross.demo.AlbatrossDemoMainActivity.getCaller(android.view.View)[8]->invoke-direct {v2}, void java.lang.StringBuilder.<init>() // method@41
能力值:
( LV1,RANK:0 )
91 楼
万里星河
实现了samli动态反编译public void instruction(View view) throws ...
可以,为你点赞
能力值:
( LV2,RANK:10 )
92 楼
能力值:
( LV2,RANK:10 )
93 楼
不过小米6还是有问题 安卓15 lineageos
能力值:
( LV1,RANK:0 )
94 楼
万里星河
不过小米6还是有问题 安卓15 lineageos[em_006]
方法hook的修复了,我看lineageos 编译出的libart有些方法没有内联,有些内联进去了,指令hook的在修复中。
能力值:
( LV1,RANK:0 )
95 楼
万里星河
不过小米6还是有问题 安卓15 lineageos[em_006]
Android5 lineageOs实测v1.0.9没问题了,你拉取代码试试
能力值:
( LV2,RANK:10 )
96 楼
好好学习天天向上
能力值:
( LV2,RANK:10 )
97 楼
WanQing
Android5 lineageOs实测v1.0.9没问题了,你拉取代码试试[em_020]
大佬太强辣 我抽时间试试
能力值:
( LV3,RANK:30 )
98 楼
学习一下!!!
能力值:
( LV2,RANK:10 )
99 楼
万里星河
大佬太强辣 我抽时间试试[em_014]
已测试 小米6 lineageos 安卓15 运行正常
能力值:
( LV2,RANK:10 )
100 楼
666666