能力值:
( LV2,RANK:10 )
|
-
-
2 楼
大佬,请给个案例so
|
能力值:
( LV3,RANK:30 )
|
-
-
3 楼
666
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
大佬,请给个案例so
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
精彩
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
大佬,请给个案例so
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
nice ,mark
|
能力值:
( LV9,RANK:220 )
|
-
-
8 楼
样本随便找几个国产游戏,米or腾的,找到里面的libtprt.so就行
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
谢谢分享!
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
大佬,我第一次patch后 
按照大佬的思路,让0x62138 w8的寄存器改为0x1让其执行到loc_62158,拿第一次patch后的so去重新跑一次代码 
修改w8寄存器值后,就报了JNI的错误,不修改是没问题的 Exception in thread "main" java.lang.IllegalStateException: Illegal JNI version: 0xffffffff at com.github.unidbg.linux.android.dvm.BaseVM.checkVersion(BaseVM.java:212) at com.github.unidbg.linux.android.dvm.DalvikModule.callJNI_OnLoad(DalvikModule.java:39) at AntiOllvmTest.callJniOnload(AntiOllvmTest.java:367) at AntiOllvmTest.main(AntiOllvmTest.java:372)
|
能力值:
( LV9,RANK:220 )
|
-
-
11 楼
New对象处
大佬,我第一次patch后按照大佬的思路,让0x62138 w8的寄存器改为0x1让其执行到loc_62158,拿第一次patch后的so去重新跑一次代码修改w8寄存器值后,就报了JNI的错误,不修改 ...
因为改了分支之后,他原本的Jni_OnLoad函数就是会返回-1。但是unidbg源码里面如果jni_onload返回-1,就抛异常。这个可以修改Base.java第212行那里,在jni_onload返回-1的时候,让他打一条log而不是抛异常
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
大佬,可以帮忙看看样本里0x68324偏移的函数吗,用同样的方法会有大概十几个间接跳转没有修复,我通过改NZCV寄存器强行走一些分支有的能成功,但有的会造成死循环。希望大佬可以指点一下。样本应该和你的是同一个。
|
能力值:
( LV9,RANK:220 )
|
-
-
13 楼
Circ1e
大佬,可以帮忙看看样本里0x68324偏移的函数吗,用同样的方法会有大概十几个间接跳转没有修复,我通过改NZCV寄存器强行走一些分支有的能成功,但有的会造成死循环。希望大佬可以指点一下。样本应该和你的 ...
死循环这个问题可以这样做:设置一个强行patch标志位,当经过你修改分支的br x9的时候,标志位设置为true。然后下一次processbr的时候,检查标志位是否为true,如果是的话就立刻执行patch。这样就可以了。死循环在patch后强制结束就行
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
好的,谢谢大佬
|
能力值:
( LV3,RANK:20 )
|
-
-
15 楼
请问可以用这个方法 在pc上模拟x86 去除混淆么
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
感谢分享
|
能力值:
( LV9,RANK:220 )
|
-
-
17 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
大佬好,请问可否提供您分析的这个样例文件,代码里面的硬编码地址不是很会计算
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6BC; 请问这两个值是怎么设置的? PatchIns pie = new PatchIns(); pie.setAddr(toend); pie.setIns("b 0x" + Integer.toHexString((int) (getIndexAddr(0x83a9af56L) - toend))); patchs.add(pie); PatchIns pie1 = new PatchIns(); pie1.setAddr(0x5E674L); pie1.setIns("b 0x"+Integer.toHexString((int) (getIndexAddr(0x83a9af56L) - 0x5E674L))); patchs.add(pie1);
|
能力值:
( LV9,RANK:220 )
|
-
-
20 楼
qdesy
请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6B ...
这个toend其实写的不太好,sorry~。我现在改做法了,就是在结尾跳转是直接回主分发器的时候,获取x8寄存器的值。然后获取x8对应的真实块。再把结尾处直接往主分发器的跳转改成跳转到下一个真实块。
|
能力值:
( LV9,RANK:220 )
|
-
-
21 楼
qdesy
请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6B ...
关于这个toend怎么获取的。toend是包含ret的块的开始地址。我肉眼找的。。
|
能力值:
( LV9,RANK:220 )
|
-
-
22 楼
qdesy
请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6B ...
然后第二个值是第一个真实块的开始地址。把主分发器那里的第一个间接跳转改为直接跳转到第一个真实块。
|
能力值:
( LV2,RANK:15 )
|
-
-
23 楼
mark
|
能力值:
( LV10,RANK:171 )
|
-
-
24 楼
赞,感谢分享!
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
写的真好
|
|
|