首页
论坛
课程
招聘
[原创]发个Android平台上的注入代码
2011-10-13 11:10 143463

[原创]发个Android平台上的注入代码

2011-10-13 11:10
143463
rt,其实本质上就是linux下面的library注入
只不过处理器是arm的,需要额外处理一些东西
不少代码是从网上或xx直接借鉴的,谢谢这些代码的作者

整体流程分3步
1.在目标进程中分配内存,用来写shellcode和参数
2.往目标进程中写入shellcode, shellcode会调用dlopen来载入我们的library
3.运行目标进程中的shellcode

当然注入是需要root权限的,模拟器上可以直接用,但是真机的话,先exploit吧

[看雪官方培训] Unicorn Trace还原Ollvm算法!《安卓高级研修班》2021年6月班火热招生!!

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (58)
雪    币: 0
活跃值: 活跃值 (24)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
tihty 活跃值 2 2011-10-13 11:27
2
0
好贴啊,支持
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
王二黑 活跃值 2012-2-21 13:50
3
0
好技术!验证一下。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kearnel 活跃值 2012-4-28 14:59
4
0
实现了注入,楼主有没有研究过如何hook系统API啊?
雪    币: 185
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zixuan 活跃值 2012-4-30 17:31
5
0
好贴啊,支持
雪    币: 18
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ayunaa 活跃值 2012-11-13 03:42
6
0
请问楼主怎样编译?
花了2天时间找都不知道怎样编译 。。。。
雪    币: 276
活跃值: 活跃值 (19)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
kindsjay 活跃值 4 2012-11-13 10:03
7
0
收藏了,支持古河
雪    币: 122
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wawt 活跃值 2012-11-13 16:33
8
0
怎么用呢?????
雪    币: 301
活跃值: 活跃值 (23)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
HSQ 活跃值 8 2012-11-24 21:52
9
0
对比着LBE早起代码看,差不多原样抄过来的,虽说代码能编译成功并运行,同时也发现些疑问,期待各位高手解惑
疑问一: 为何要加0x3C00?否则注入进程后出行Segment fault 错误。
       mmap分配到内存映射,为什么不用返回的地址直接做代码基址,而必须加上 0x3C00,尝试过改为其他值比如0x100或者0x4偶尔成功,但出错几率99%以上

// 设置远程代码存储空间地址
remote_code_ptr = map_base+[COLOR="Red"][B]0x3C00[/B][/COLOR]; // + 0x3C00


LBE无论早期版本还是最新版本,也都是固定要加上0x3C00这个偏移,不知为何?
应该与ARM指令对其无关吧?


疑问二:为何要加 0x20?  经测试这个在严谨计算偏移后,完全没必要,删除了不会影响程序功能和运行。

dlopen_param1_ptr = local_code_ptr + code_length + [COLOR="Red"][B]0x20[/B][/COLOR];


疑问三:get_module_base 有不太准确的地方,是小问题但会影响程序运行。
void* get_module_base( pid_t pid, const char* module_name )
{
    // ... ...
   snprintf( filename, sizeof(filename), "/proc/self/maps", [B][COLOR="Red"]pid[/COLOR][/B] ); // pid是多余的吧!
   pch = [COLOR="Blue"][B]strtok( line, "-" ); [/B][/COLOR]// 此处完全没有必要调用API切分字符串,直接改为[COLOR="DarkRed"] [B]