能力值:
( LV2,RANK:10 )
51 楼
太棒了,非常感谢分享!
能力值:
( LV2,RANK:10 )
52 楼
qdesy
请问reorderblock()函数中最后的这段代码里,toend和0x5E674L都是怎么得到的。toend被硬编码成private static final long toend = 0x5E6B ...
2.获取索引值顺序中的第一个值,找到对应的真实块。将主分发器处patch为跳转向第一个真实块的跳转指令。
3.根据真实块结束时的新的索引值,寻找到对应的真实块,将结尾处patch为跳转到下一个真实块
【这里应该有两个真实块:True真实块、False真实块, 所以通过控制前面的
来控制分支走向。
假设认为W8 == 1 是走的【False真实块】分支
当修改程序走向来说时(更改W8的值为1),带有ret的最后一个真实块的起始地址为0x5E77C,其前一个真实块地址是0x5E6BC
那么需要将结尾处patch为跳转到下一个真实块
即直接跳转到带有ret的真实块(不经过主分发器了)
——————————————————————
同理W8 == 0的【真实块分支】,也是如此。
】
最后于 2024-6-20 16:32
被教教我吧~编辑
,原因:
能力值:
( LV2,RANK:10 )
53 楼
New对象处
按照我说的,加入造成死循环,那么就按照楼主说的,标志当前位置,下次调用procBr时就patch,退出
我是每次搞掉一个BR X9就生成一个so,这样可以防止死循环吧
能力值:
( LV1,RANK:0 )
54 楼
mark,向大佬学习
能力值:
( LV2,RANK:10 )
55 楼
赞,感谢分享!
能力值:
( LV2,RANK:10 )
56 楼
感谢分享
能力值:
( LV5,RANK:60 )
57 楼
在执行 vm.loadLibrary(new File("libc.so"),false); 的时候, Exception in thread "main" java.lang.ArithmeticException: / by zero at net.fornwall.jelf.ElfDynamicStructure.<init>(ElfDynamicStructure.java:321) int num_entries = pltRelSize / relEntrySize; 这行代码relEntrySize为0引发了异常
能力值:
( LV9,RANK:160 )
58 楼
dkxzl
在执行 vm.loadLibrary(new File("libc.so"),false); 的时候,
Exception in thread "main" ...
这个手动把relEntrySize赋值为0x18
能力值:
( LV1,RANK:0 )
59 楼
heyonly
感谢大佬的分享,在还原平坦化的时候,代码中的tbs.add(new TrueBlock(0x6e142ec8L,0x5E6B0)); 这个 0x5E6B0,不知道怎么来的,要是上传在分析时的样本就好了 ...
大哥,这个值哪来的能教下吗