当前位置: 首页 > article >正文

一个自动反汇编脚本

一、环境

        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-"

以上参数视情况修改。

http://www.lryc.cn/news/2405038.html

相关文章:

  • 函数与数列的交汇融合
  • 怎么让自己ip显示外省?一文说清操作
  • 【Docker】容器安全之非root用户运行
  • 汽车车载软件平台化项目规模颗粒度选择的一些探讨
  • 【八股消消乐】构建微服务架构体系—服务注册与发现
  • 大数据+智能零售:数字化变革下的“智慧新零售”密码
  • C++_核心编程_菱形继承
  • 掌握Git核心:版本控制、分支管理与远程操作
  • c#,Powershell,mmsys.cpl,使用Win32 API展示音频设备属性对话框
  • STM标准库-TIM旋转编码器
  • 深入解析JVM工作原理:从字节码到机器指令的全过程
  • MCP通信方式之Streamable HTTP
  • 第七十三篇 从电影院售票到停车场计数:生活场景解析Java原子类精髓
  • 【原创】基于视觉模型+FFmpeg+MoviePy实现短视频自动化二次编辑+多赛道
  • C++----剖析list
  • 纳米AI搜索与百度AI搜、豆包的核心差异解析
  • 不到 2 个月,OpenAI 火速用 Rust 重写 AI 编程工具。尤雨溪也觉得 Rust 香!
  • 人工智能:网络安全的“智能守护者”
  • Python60日基础学习打卡Day46
  • 综述论文解读:Editing Large Language Models: Problems, Methods, and Opportunities
  • WEB3全栈开发——面试专业技能点P1Node.js / Web3.js / Ethers.js
  • Vscode下Go语言环境配置
  • Java八股文——MySQL篇
  • Oracle数据库学习笔记 - 创建、备份和恢复
  • Go语言--语法基础5--基本数据类型--输入输出(1)
  • 永磁同步电机无速度算法--自适应龙贝格观测器
  • LangChain工具集成实战:构建智能问答系统完整指南
  • 【razor】x264 在 的intra-refresh和IDR插帧
  • 分库分表的取舍
  • 随机算法一文深度全解