吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 316|回复: 4
收起左侧

[学习记录] Windows下交叉编译arm汇编的可执行文件

[复制链接]
polang22 发表于 2024-7-23 08:34
本帖最后由 polang22 于 2024-7-23 08:41 编辑

本次介绍一下如何在Windows平台下使用arm-linux-gnueabihf-gcc交叉编译生成arm汇编的可执行文件.
这里使用的编译器是arm-linux-gnueabihf-gcc,下载地址在
https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/
可以根据需要自行选择版本
下载完成后,将/bin目录添加到环境变量,然后就可以使用了
这里随便写一个程序举例
[C++] 纯文本查看 复制代码
#include<stdio.h>
 
int main()
{
    int x = 0x12345678;
    printf("%x",x);
    printf("Hello world\n");
    return 0;
}

输入命令
[Asm] 纯文本查看 复制代码
arm-linux-gnueabihf-gcc hello.c -o hello -static

这里的链接方式是静态链接,所以生成的文件比较大,不知道为什么,如果不使用静态链接,生成的文件是无法执行的,就算只链接libc这样的库也无法执行
把生成的hello文件放到IDA里查看,发现生成的汇编是thumb模式下的
image.png
如果要生成arm模式下的汇编,需要在编译时添加-marm选项

image.png

这样生成的就是arm模式下的汇编
接下来把生成的可执行文件放到真机里运行,看一下效果
执行的命令为
[Asm] 纯文本查看 复制代码
arm-linux-gnueabihf-gcc hello.c -o hello -static -marm
adb push E:\arm\hello /data/local/tmp
adb shell "chmod 777 /data/local/tmp/hello"
adb shell "/data/local/tmp/hello"

这里我把这里四条命令写成了.bat文件,直接执行

执行成功

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
XXFS686 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

侃遍天下无二人 发表于 2024-7-23 09:26
编译的是安卓平台下的可执行文件吗,那多半是因为运行的时候没指定库的路径或者库之间不兼容
linuxcool 发表于 2024-7-23 09:39
感觉就是:交叉编译后,把编译好的执行文件放到相应平台上运行没有什么区别。
你那4行bat后面3句:借用的是 adb工具:推送、修改执行权限,运行程序。
ghui 发表于 2024-7-23 10:21
你这个是WSL的吧,也就是Linux的,说的根本不是Windows编译arm,而是Linux编译arm
怜渠客 发表于 2024-7-23 10:59
我交叉编译别的平台也遇到过必须静态链接的问题,可能是动态链接的话,主机和目标设备的链接路径啥的不一样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-9-8 09:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表