首页
社区
课程
招聘
[讨论]ndk编译的arm程序,程序空间怎么在0xb6f5b000这样的高地址,地址比libc还要后
发表于: 2017-3-20 22:07 2685

[讨论]ndk编译的arm程序,程序空间怎么在0xb6f5b000这样的高地址,地址比libc还要后

2017-3-20 22:07
2685

2017.3.21 11:19  更新

我的疑问源于内存的布局一般是下面这样的

程序的text,data,bss段等 都快要接近栈了,地址比libc还要后

blob.png


-----------------------------------------------------------------------------------------------------------

我是跟着蒸米哥那个rop学习的时候遇到的,我没直接用蒸米的程序,而是自己编译一下

学习链接:cdbK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6G2L8%4W2#2L8W2)9J5k6i4c8S2L8X3N6K6j5$3q4F1i4K6u0W2j5$3&6Q4x3V1k6K6N6r3q4@1K9h3y4Q4x3V1k6V1M7X3!0H3M7#2)9J5c8Y4m8S2M7r3g2J5M7#2)9J5k6o6p5I4x3K6V1H3i4K6u0W2K9s2c8E0L8l9`.`.

编译环境:

使用安卓6.0sdk,ndk r10b

编译过程:

1.创建项目
android create project -n level6 -p level6 -t android-23 -k com.test.level6 -a MyActivity
2.之后在项目根目录建立jni文件夹
将.c和Android.mk和Application.mk放进去
3.回到项目根目录执行ndk-build

那两个文件内容如下

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := level6
LOCAL_SRC_FILES := level6.c
include $(BUILD_EXECUTABLE)

Application.mk(关闭gs)

APP_ABI := armeabi
APP_CFLAGS += -fno-stack-protector

 

如下图,而且每次运行的地址还会变, 这算是PIE咯

当然假如用蒸米哥的程序就不会了


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 3274
活跃值: (2373)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
32位linux应用地址空间是3G,内核的1G。
2017-3-21 00:38
0
雪    币: 25
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3




金罡

32位linux应用地址空间是3G,内核的1G。

额,没表达清楚,我的意思是我们程序的text,data,bss段等 都快要接近栈了,而且比libc的地址还要大

2017-3-21 11:28
0
雪    币: 246
活跃值: (489)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
蒸米那个在编译的时候没有开启PIE选项,映射地址是固定的。 你编译的文件开启了PIE吧,所以二进制加载的地址在一定范围内随机。
2017-3-22 22:55
0
游客
登录 | 注册 方可回帖
返回