Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >无法从Cortex-M3固件中提取机器代码。

无法从Cortex-M3固件中提取机器代码。
EN

Stack Overflow用户
提问于 2017-03-29 02:12:09
回答 1查看 372关注 0票数 0

我想从XBee DigiMesh固件(Cortex-M3,EM357)中提取机器代码,所以我有包含3个部分的SREC文件。我猜想这些部分中有一个是代码部分,但是arm-none eabi-objdump经常报告“未知指令”。,有人知道为什么会这样吗?

我就是这样做的:

代码语言:javascript
代码运行次数:0
复制
arm-none-eabi-objcopy --input-target=srec --output-target=binary -j .sec2 xbp24-dm_8073.ehx2.dec sec2.bin
arm-none-eabi-objdump -D -bbinary -marm -Mforce-thumb sec2.bin

更新:在https://reverseengineering.stackexchange.com/questions/15049/cant-extract-machine-code-from-cortex-m3-firmware有答案

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 10:34:50

大脑皮层-m~3支持thumb2,它是可变指令长度,您不能简单地从开始开始并分解一个可变长度指令集,您可以/将很容易地脱离同步,输出变成垃圾,并且永远保持这种方式。在这种情况下可能不是,但您会有错误,这是预期的。很有可能他们添加了项目来混淆反汇编程序。

而且你可以在这里有很多数据,或者是压缩代码,或者谁知道还有什么.

作为一个皮层-m的第一个词块不是一个向量表,那么这是什么代码。如果以使用gnu的方式检查输出,这看起来并不像真正的代码,因此可能是加密的或压缩的或其他。您是否看到堆栈框架正在构建,函数以pop (ld与否)结尾,其中包含了一些静态单词的链接寄存器,那么下一个函数的开头是什么呢?当然,并不是所有的代码都是编译的,但是其中一些看起来应该像编译过的代码。

如果你想黑一些固件,你也许应该弄清楚它是如何/在哪里加载的,并创建/使用指令集模拟器。但是,如果没有一个向量表,那就好好享受吧。

您的反汇编方式丢失了地址内容。

代码语言:javascript
代码运行次数:0
复制
S123110001BE8110204D5401BE96102452...
0x1100 : 0x01BE
0x1102 : 0x8110
0x1104 : 0x204D
0x1108 : 0x5401
0x110C : 0xBE96
0x110E : 0x1024

以此类推,或者说很可能是

代码语言:javascript
代码运行次数:0
复制
0x1100 : 0xBE01
0x1102 : 0x1081

您可以使用该srec并创建一个程序:

代码语言:javascript
代码运行次数:0
复制
.hword 0xbe01
.hword 0x1081

一个对于每个相邻的地址范围的项目,当地址跳转开始一个新的文件,创建一个链接脚本来覆盖每个部分的开始地址,组装,在其中之一制作一个_start标签,链接到脚本,然后你有一个精灵,你可以拆解,我仍然认为它是有问题的,但一些相对的寻址将是有意义的和或绝对的寻址。

还请注意您的入口点

代码语言:javascript
代码运行次数:0
复制
S903189351

假设这是真的,就没有理由假设它是真的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43090565

复制
相关文章
如何存储用户的密码才能算安全?
前段时间将一个集成了 spring-security-oauth2 的旧项目改造了一番,将 springboot 升级成了 springboot 2.0,众所周知 springboot 2.0 依赖的是 spring5,并且许多相关的依赖都发生了较大的改动,与本文相关的改动罗列如下,有兴趣的同学可以参考:Spring Security 5.0 New Features 。其中一个比较有意思的改动---- Spring Security 5.0 重构了密码编码器的实现(Password Encoding,由于大多数 PasswordEncoder 相关的算法是 hash 算法,所以本文将 PasswordEncoder 翻译成‘密码编码器’和并非‘密码加密器’),引起了我兴趣官方称之为
kirito-moe
2018/07/25
1.4K0
如何存储用户的密码才能算安全?
针对每个用户的作业(针对用户的定期事件)
-----------------------------------------------------------------------------------------------------------------------------
liulun
2022/05/09
3000
C语言 | 统计选票结果的程序
例38:有三个候选人,每个选民只能投给一个人,要求用C语言编一个统计选票的程序,先后输入备选人的的名字,最后输出各人的得票结果。
小林C语言
2020/12/18
2K0
C语言 | 统计选票结果的程序
为每个用户设置合适的屏幕亮度
移动设备的屏幕对于用户体验至关重要。Android 9 Pie 中改进的 “自动调节亮度” 特性会自动将屏幕调整到您偏好的亮度级别,使您在任何光线条件下都能获得最佳体验。
Android 开发者
2018/12/19
1.6K0
如何安全传输与存储用户密码?
我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」。一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响。因此,如何安全传输存储用户密码,是每位程序员必备的基础。本文将跟大家一起学习,如何安全传输存储用户的密码。
macrozheng
2021/01/08
1.3K0
如何安全传输与存储用户密码?
如何查看每个城市的生意如何?
”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买的数量是多少,以及对应产品的零售价
猴子数据分析
2022/02/12
1.3K0
如何查看每个城市的生意如何?
闲聊用户画像的存储
现在的用户画像,动不动就是几千几万个标签,标签一多就出现了一些需要克服的难题,比如下面两个:
木东居士
2019/02/28
3.6K0
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
芋道源码
2021/01/25
1.4K0
Redis 如何存储上亿级别的用户状态?
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
肉眼品世界
2021/01/25
7010
Redis 如何存储上亿级别的用户状态?
mysql查询每个用户的第一条记录_mysql怎么创建用户
方法1:查询出结果后将时间排序后取第一条(只能取到一条,并且不能查询不同客户的记录)
全栈程序员站长
2022/10/04
6.9K0
mysql查询每个用户的第一条记录_mysql怎么创建用户
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
二哥聊运营工具
2021/12/17
6690
Redis 如何存储上亿级别的用户状态?
用户密码传输和存储的保护
软件设计的过程中,用户的密码信息最为敏感,在进行用户登录验证时,除了将密码在传输的过程中,进行md5加密,避免密码明文传输过程中被截获外,还有一个就是密码在数据库中的存储安全问题。 常用的方案是对密码
码农阿宇
2018/04/18
1.1K0
用户密码传输和存储的保护
hive sql(六)—— 每个用户连续登录最大天数
分析中第3点在hive sql系列(三)中计算连续日活中也用到了日期差值,参考链接:
大数据最后一公里
2021/08/05
3K0
每个用户都应该知道的Ubuntu键盘快捷键
无论使用什么操作系统,键盘快捷键都可以帮助你快速上手,可以在启动应用程序或导航到所需窗口时节省时间和精力。
用户6543014
2020/03/11
2.5K0
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
Blobstore是位于SPDK bdev之上的Blob管理层,用于与用户态文件系统Blobstore Filesystem (BlobFS)集成,从而代替传统的文件系统,支持更上层的服务,如数据库MySQL、K-V存储引擎Rocksdb以及分布式存储系统Ceph、Cassandra等。以Rocksdb为例,通过BlobFS作为Rocksdb的存储后端的优势在于,I/O经由BlobFS与Blobstore下发到bdev,随后由SPDK用户态driver写入磁盘。整个I/O流从发起到落盘均在用户态操作,完全bypass内核。此外,可以充分利用SPDK所提供的异步、无锁化、Zero Copy、轮询等机制,大幅度减少额外的系统开销。它们之间的关系如下所示(以NVMe bdev为例):
Linux阅码场
2019/06/05
4.9K0
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
如何给每个RM添加约束?
在DFX设计中,我们也会碰到类似的情形,即给同一个RP(Reconfigurable Partition)下的不同RM(Reconfigurable Module)添加不同的约束。这时要考虑几个因素:同一个RP下不管有几个RM,在设计中均对应同一个实例化的名字。这意味着不能仅仅通过SCOPE_TO_CELLS将这些约束对应到不同的RM上。另外,每个RM只有在自身对应的configuration上才有效,所以要保证在这个configuration上对应的RM的约束也要有效。从下图可以看到,当前这个DFX设计中有一个RP,名字为图中红色方框所示,该RP下有两个RM,分别为rp1rm1和rp1rm2。
Lauren的FPGA
2023/08/18
2110
如何给每个RM添加约束?
MySQL存储过程,视图,用户管理
一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL。
石的三次方
2021/01/05
9330
Spring Security 简单配置用户存储
@EnableWebSecurity注解将会启动Web安全功能,但它本身并没有什么功能。Spring Security必须配置在一个实现了WebSecurityConfigurer的bean中,或者扩展WebSecurityConfigurerAdapter,扩展该类是最简单的配置方法。
Tim在路上
2020/08/04
7800
保存用户信息到本地存储
简介:在页面加载时从本地存储中恢复数据,并将已保存的数据显示在对应的输入框中。一起来看看:
Dabenshi
2023/08/27
2660
点击加载更多

相似问题

查询Django中每个用户的最新选票

12

Android固定设置限制为每个用户1张选票

20

用于捕获选票和聚合选票的数据存储

13

确保数据库中每个用户、每个页面都有一张选票

31

Rails:允许用户销毁选票

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文