android可執行文件
㈠ android上如何運行可執行文件(.exe格式)的
需要工具:
1、網上下載Bochs模擬器主程序(就是一個apk程序文件)
2、配置文件(已經打包好在附件里)
3、系統鏡像 操作步驟
步驟1:安裝模擬器主程序(這個就不用多說了,和普通安卓應用一樣)
步驟2:將裝有配置文件的SDL文件夾拷貝到機身內存根目錄中(沒有機身內存的手機請拷貝到SD卡中,不清楚拷貝到哪裡的就用RE管理器拷貝到手機根目錄顯示sdcard的文件夾里)
步驟3:將系統鏡像文件改名為c.img,拷貝到步驟2中的SDL文件夾(要用什麼系統就拷貝相應的鏡像)
步驟4:運行安裝好的模擬器主程序,沒有問題的話就會開機運行操作系統了
㈡ apk是什麼操作系統的可執行文件
apk是安卓(android)系統的可執行文件,其用於在設備上安裝應用程序。
㈢ andriod 源碼編譯時,如何添加一個可執行文件到文件系統中
是這樣的
1.進入你的android系統源碼的build/target/board/generic目錄下
2.把你的abc拷貝到 這個目錄下
3.編輯這個目錄下的vi AndroidBoard.mk這個文件
4.添加 PRODUCT_COPY_FILES += $(LOCAL_PATH)/abc:system/bin/abc
這樣在make源碼的時候,就可以自動進行這次拷貝了
㈣ 如何在android系統上執行c文件
本人使用mini6410開發了一個sqlite資料庫的程序,在mini6410的linux系統下已經能夠成功運行了。因為Android使用的也是linux內核,所以我想當然的認為按照同樣的方法將程序移植到mini6410的android系統中也可以成功運行,但是當我運行程序的時候卻提示我不能找到可執行文件(xlisten-arm是交叉編譯出來的可執行文件): / # ./xlisten-arm /system/bin/sh: ./xlisten-arm: not found 1.探索: 在網上搜索起初認為可能是庫文件的不全導致的,於是在查看可執行文件xlisten-arm所需要的動態鏈接庫: 執行語句: # arm-linux-readelf -a ./xlisten-arm grep "Shared" 0x00000001 (NEEDED) Shared library: [libsqlite3.so.0] 0x00000001 (NEEDED) Shared library: [libm.so.6] 0x00000001 (NEEDED) Shared library: [libcrypt.so.1] 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [libdl.so.2] 0x00000001 (NEEDED) Shared library: [libc.so.6] 知道所需的動態鏈接庫後,到android文件系統中去照著寫庫文件,在目錄/system/lib 中,果然缺少相應的庫文件,於是認為找到了我問題的根源所在,在復制相應庫文件的時候為了保留原來的屬性,還特意用了 #cp -a filename dir 誰知將這些庫都添加進去以後,仍然無濟於事! 看來不僅僅事庫文件缺失的問題了,而且一般來說,如果真的是因為缺少庫文件而導致的問題,終端會提示我們鏈接某庫文件時沒有找到該庫文件。 2.正確的解決方法: 將程序編譯的時候選擇靜態編譯,即使用選項 -static 我是對Makefile文件中的CFLAG變數進行修改 CFLAGS = -Wall 改為; CFLAGS = -Wall -static 然而此時又出現問題了: undefined reference to `pthread_mutex_*' undefined reference to `dl*' 提示沒有定義這些函數,於是在包含的庫文件中添加了這兩個庫文件 在Makefile中,修改LIBS變數; LIBS = -lsqlite3 -lm -lcrypt 改為: LIBS = -lsqlite3 -lm -lcrypt -lpthread -ldl 然後進行交叉編譯,成功了! 編譯出來的可執行文件比較大,因為事靜態編譯的,我的有2M多, 拷貝到開發板的andriod系統中, 修改許可權: #chmod 777 xlisten-arm 執行: / # ./xlisten-arm OK!能夠正確的執行了!
㈤ 安卓手機怎樣才可以運行exe後綴文件
一般不能運行。
Exe是一個Exe文件(可執行文件),一個可執行文件,浮動和定位在操作系統存儲空間。在MS-DOS和MS-Windows下,這些文件的擴展名是exe。
Exe是一種計算機文件格式。一般的手機系統不支持,轉換也不可能,程序的語法不同。沒有手機是足夠好的運行一個大的exE文件格式。
(5)android可執行文件擴展閱讀:
可執行程序在操作系統存儲空間中浮動並定位的可執行程序。在MS-DOS和MS-Windows下,這些文件的擴展名是exe。
在WINDOWS操作系統中,有兩種可執行文件,一種是名為COM的dropout文件,另一種是。exe文件。
COM通常用於DOS。在WINDOWS中,可執行文件通常是EXE文件。在MS-DOS中,用來標識可執行文件的文件擴展名。用戶在提示行輸入不帶exe擴展名的文件名,然後按Enter運行可執行文件。
㈥ 安卓的可執行文件的擴展名
A.exe為Windows操作系統的可執行文件;
B.rpm為Linux操作系統的安裝文件;
C.ipa是Iphone OS中的可執行文件擴展名;
D.apk是Android系統中的可執行文件擴展名;
故選:D.
㈦ 怎麼使用Android源碼編譯c模塊生成可執行文件
1. 在./development目錄下創建一目錄 如:myhello
2. 進入hello目錄,在其下編寫自己的.c文件,如: myhello.c
#include <stdio.h>
int main()
{
printf("hello world\n");
exit(0);
//return 0;
}
3. 在hello目錄中,編寫Android.mk, 內容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myhelloworld
LOCAL_SRC_FILES := myhello.c
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)
4. 回到Android源代碼頂層目錄,進行編譯,make myhelloworld
5. 生成的可執行文件位於:out/target/proct/lotus/system/bin/ 目錄下
6. adb push 到手機 /data 目錄下,然後進入adb shell,到data目錄下,執行./myhelloworld 皆可
手動編譯連接【arm-eabi-gcc 的目錄隨andorid的版本而有變化,還有就是需要鏈接的文件如果比較多時,需要很多-l 就很麻煩了】
7、編譯成目標文件:
#$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -I bionic/libc/arch-arm/include/ -I bionic/libc/include -I bionic/libc/kernel/common -I bionic/libc/kernel/arch-arm -g -c helloworld.c -o hello.o
8、生成可執行代碼:
#$(yourAndroid)/prebuilt/linux-x86/toolchain/[arm-eabi-4.2.1]/bin/arm-eabi-gcc -nostdlib -Bdynamic -Wl,-T,build/core/armelf.x -Wl,-dynamic-linker,/system/bin/linker -Wl,--gc-sections -Wl,-z,noreloc -o helloworld -Lout/target/proct/[generic]/obj/lib -Wl,-rpath-link=out/target/proct/[generic]/obj/lib -lc hello.o -entry=main
其中[ ]中部分根據實際情況修改
**************************************************
實驗:
1. 建目錄(my Android)/development/test, 在該目錄下新建 Android.mk和fb_test.c文件
2. Android.mk文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myfbtest
LOCAL_SRC_FILES := fb_test.c
LOCAL_MODULE_TAGS := optional
include $(BUILD_EXECUTABLE)
3. 以下為fb_test.c
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <linux/kd.h>
#include <stdio.h>
#define FBBIT_PER_PIXEL 32
#define FBBIT_PIXEL_IMAGE 16
#define PIXELS_WIDTH_BYTE 4
#define BYTE_PER_PIXEL 3
#define FB_GRAPHICS_PATH "/dev/graphics/fb0"
#define DEV_TTY0_PATH "/dev/tty0"
#define DISPLAY_ERROR -1
#define DISPLAY_SUCCESS 0
#define GET_BATTERYCAPACITY_ERR -1
#define MAX_STR 255
static struct {
int fd;
void *pixels;
struct fb_fix_screeninfo fixed;
struct fb_var_screeninfo var;
int align_xres;
} fb;
int getBatteryCapacity(void)
{
FILE *in;
char tmpStr[MAX_STR + 1];
char capfile[] = "/sys/class/power_supply/battery/capacity";
if (capfile == NULL)
return GET_BATTERYCAPACITY_ERR;
in = fopen(capfile, "rt");
if (in == NULL)
return GET_BATTERYCAPACITY_ERR;
if (fgets(tmpStr, MAX_STR, in) == NULL) {
printf("Failed to read battery capacity!\n");
fclose(in);
return GET_BATTERYCAPACITY_ERR;
}
printf("Battery capacity(ascii): %s\n", tmpStr);
fclose(in);
return 0;//atoi(tmpStr);
}
static int vt_set_graphicsmode(int graphics)
{
int fd, r;
fd = open(DEV_TTY0_PATH, O_RDWR | O_SYNC);
if (fd < 0)
return DISPLAY_ERROR;
r = ioctl(fd, KDSETMODE, graphics);
close(fd);
return r;
}
int display_init(void)
{
fb.fd = open(FB_GRAPHICS_PATH, O_RDWR);
if (fb.fd < 0)
return DISPLAY_ERROR;
if (ioctl(fb.fd, FBIOGET_FSCREENINFO, &fb.fixed) < 0)
return DISPLAY_ERROR;
if (ioctl(fb.fd, FBIOGET_VSCREENINFO, &fb.var) < 0)
return DISPLAY_ERROR;
fb.align_xres = fb.fixed.line_length /
(fb.var.bits_per_pixel >> BYTE_PER_PIXEL);
fb.pixels = mmap(0, fb.fixed.line_length * fb.var.yres_virtual,
PROT_READ | PROT_WRITE, MAP_SHARED, fb.fd, 0);
if (fb.pixels == MAP_FAILED)
return DISPLAY_ERROR;
vt_set_graphicsmode(KD_GRAPHICS);
memset(fb.pixels, 0, fb.fixed.line_length * fb.var.yres_virtual);
//display_update(fb.pixels, fb.align_xres, fb.var.yres);
fb.var.activate = FB_ACTIVATE_FORCE;
ioctl(fb.fd, FBIOPUT_VSCREENINFO, &fb.var);
printf("display_init ok\n");
return DISPLAY_SUCCESS;
}
void display_on(void)
{
ioctl(fb.fd, FBIOBLANK, FB_BLANK_UNBLANK);
}
void display_off(void)
{
ioctl(fb.fd, FBIOBLANK, FB_BLANK_POWERDOWN);
}
int main()
{
display_init();
display_off();//關顯示屏
getBatteryCapacity();
sleep(5);
display_on();//開顯示屏
return 0;
}
㈧ 如何編譯android 可執行的二進制文件
Android由於其代碼是放在dalvik虛擬機上的託管代碼,所以能夠很容易的將其反編譯為我們可以識別的代碼。 之前我寫過一篇文章反編譯Android的apk包到smali文件 然後再重新編譯簽名後打包實現篡改apk的功能。 最近又有一種新的方法來實現直接從Android apk包里的classes.dex文件,把dex碼反編譯到java的.class二進制碼,然後從.class二進制碼反編譯到java源碼想必就不用我來多說了吧。 首先我們需要的工具是dex2jar和jd-gui 其中第一個工具dex2jar是用來把classex.dex文件也就是dex二進制碼轉化為java的標准.class二進制碼,然後jd-gui是把標準的.class二進制碼再反編譯為java源碼。 首先從apk包裡面提取出classes.dex 放到dex2jar目錄下 然後在命令行下執行 dex2jar.bat classes.dex 這時執行成功後會生成一個classes.dex.dex2jar.jar文件 這個文件再用jd-gui打開,如下圖 幾乎跟我自己寫的這個程序的源碼一樣 提供這個反編譯方法主要用於大家學習與研究,有問題可以與我郵件討論。 希望大家不要用這個方法從事惡意的活動,畢竟,別人辛辛苦苦寫程序也不容易,用這個方法可以大致的學習到別人寫的程序的邏輯,架構,希望對大家有所幫助。 Android 逆向apk程序的心得 本文主要介紹如何逆向一個Android的APK應用程序,本文提供的方法僅供研究學習之用。 本文需要用到的工具有 jdk 這個用於搭建java運行環境 AXMLPrinter2.jar 這個用於逆向.xml文件 baksmali.jar 這個用於逆向classex.dex文件 由於Android的.apk文件實際上就是一個zip文件 可以直接用winrar打開