-
-
[求助]求教一个inline hook实现问题。
-
发表于: 2015-7-10 16:12 5226
-
uint32_t pos =0x2738;
unsigned char buf[1000]={0};
uint16_t *area(reinterpret_cast<uint16_t *>(buf));
unsigned align((reinterpret_cast<uintptr_t>(area) & 0x2) == 0 ? 0 : 1);
uint16_t *thumb(area + align);
uint32_t *arm(reinterpret_cast<uint32_t *>(thumb + 2));
thumb[0] = T$bx(A$pc) ;
thumb[1] = T$nop;
arm[0] = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8);
arm[1] = reinterpret_cast<uint32_t>(pos);
我按照substrate的源码, 写了这么这么几行代码, 就是想跳转到0x2738这个位置。
运行过后的机器码是这样的:78 47 C0 46 04 F0 1F E5 38 27。
我把这个机器码导入到ida发现,
bx pc
nop
这4个字节机器吗是对的。 但是后4位机器码完全对不上! 请问谁知道为啥?
unsigned char buf[1000]={0};
uint16_t *area(reinterpret_cast<uint16_t *>(buf));
unsigned align((reinterpret_cast<uintptr_t>(area) & 0x2) == 0 ? 0 : 1);
uint16_t *thumb(area + align);
uint32_t *arm(reinterpret_cast<uint32_t *>(thumb + 2));
thumb[0] = T$bx(A$pc) ;
thumb[1] = T$nop;
arm[0] = A$ldr_rd_$rn_im$(A$pc, A$pc, 4 - 8);
arm[1] = reinterpret_cast<uint32_t>(pos);
我按照substrate的源码, 写了这么这么几行代码, 就是想跳转到0x2738这个位置。
运行过后的机器码是这样的:78 47 C0 46 04 F0 1F E5 38 27。
我把这个机器码导入到ida发现,
bx pc
nop
这4个字节机器吗是对的。 但是后4位机器码完全对不上! 请问谁知道为啥?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
- [求助]android内存断点 5352
- [求助]求教一个inline hook实现问题。 5227
- [求助]安卓上, 有哪些开源的加壳项目? 6568
- [求助]有没有工具直接把arm相关指令转换成二进制呢? 5563
- [求助]安卓代码下载不懂, 怎么办 3546
看原图
赞赏
雪币:
留言: