一个自动反汇编脚本
一、环境
wsl ubuntu18.04、python3.6
二、目的
调试程序,需要分析第三方库。希望能将多个库自动转为汇编文件。
三、使用方法
将该脚本下载,进入wsl,进入到该脚本所有文件夹。
请使用 python 脚本名.py 运行。
1)、运行第一次,此时会出现o, a, dis三个文件夹。
2)、将需要分析的.a放入子目录a中。
3)、运行第二次,结束后,发现反汇编文件全部在dis目录内。
四:代码(python3.6) 与 下载
import osPATH_LIBA = "a"
PATH_OBJECT = "o"
PATH_DIS = "dis"
CC = "arm-none-eabi-"folder_path = "./"+PATH_LIBAdef ar_x(fileName):print(fileName)os.system(f"ar -x {fileName}")def mov_object_to_dir_O():"""for root, dirs, files in os.walk("./"):for f in files:if f.endswith(".o"):os.system(f"mv {f} ./o")"""os.system(f"mv *.o ./o")print("-"*40 + "move object to dir ./O finish.." + "-"*40)def objdump(fileName):print(fileName)os.system(f"{CC}objdump -d {PATH_OBJECT+'/'+fileName}.o > {fileName}.dis")def mov_dis_to_dir_dis():os.system(f"mv *.dis ./dis")if __name__ == "__main__":print(folder_path)os.system(f"mkdir -p {PATH_LIBA} {PATH_OBJECT} {PATH_DIS}")for root, dirs, files in os.walk(folder_path):print(f"current dir:{root}")#print(f"current dir sub:{dirs}")#print(f"current file:{files}")for f in files:if f.endswith(".a"):ar_x(PATH_LIBA+"/"+f)mov_object_to_dir_O()print("-"*40 + "ar -x finish" + "-"*40)for root, dirs, files in os.walk("./"+PATH_OBJECT):print(f"current dir:{root}")for f in files:if f.endswith(".o"):objdump(f.replace(".o", ""))mov_dis_to_dir_dis()print("-"*40 + f"{CC}objdump finish" + "-"*40)print("-"*40 + "total finish" + "-"*40)
PATH_LIBA = "a"
PATH_OBJECT = "o"
PATH_DIS = "dis"
CC = "arm-none-eabi-"
以上参数视情况修改。