反汇编hex文件
- 格式:doc
- 大小:536.00 KB
- 文档页数:13
本帖最后由yjmwxwx 于2014-12-11 00:12 编辑
想仿制别人的一款产品,但是只有固件没有源码无法修改程序,于是研究了一下反汇编。
下面把过程贴出来,方法对错我也不知道,我小学文化不懂英文操作这款软件有困难。
目标某开发的一个LED小程序
把HEX文件转为BIN文件
打开IDA
打开刚刚的BIN文件
选择ARM:
然后还有个高级选项选择Cortex-M (忘记截图)
ROM地址
反汇编
开头的是数据,第一个是站顶,第二个是复位向量,我们从他解开程序按D健转换
跳转到复位向量指向的地址
按C键转换成代码
反汇编完成,观看程序结构
2014-12-10 23:31 上传下载附件(72.81 KB)。
为什么要反汇编?反汇编文件的生成和解读为什么要反(汇编)反汇编顾名思义就是汇编的逆过程,将二进制文件反汇编成汇编代码。
(arm)-(linux)-objdump是交叉编译工具链里的一个工具,专门用来反汇编的,将二进制代码反汇编成汇编代码来查看。
为什么要反汇编1.逆向破解。
将可执行程序反汇编得到汇编代码,再根据汇编代码推理出整个程序的逻辑。
这个不是一般人能做的,能看懂大量汇编语言写的程序都很困难了,更别说反推别人的代码逻辑。
2.调试程序时可以帮助我们理解并(检测)生成的可执行程序是否正常,尤其是在理解链接脚本和链接地址等概念时。
3.(C语言)的源代码编译链接生成的可执行文件再反汇编,可以帮助我们理解C语言和汇编语言的对应关系,有助于深入理解C 语言。
反汇编文件的生成和解读反汇编文件的生成:上面是一个简单的Makefile,功能是把源文件.S和.c先编译成.o 文件,再把.o文件链接成.elf的可执行文件。
arm-linux-objdump -D (led).elf > led_elf.dis是将led.elf反汇编成ed_elf.dis。
源文件:star.s是一个汇编文件star.s是一个学习S5PV210开发板时点亮LED的汇编程序,由开始、点亮、延时和死循环组成,在这里并不关注具体实现的功能,重点是和反汇编生成的文件进行对照。
得到的反汇编文件:led_elf.dis解析:1.第一行:led.elf: file f(or)mat elf32-littlearm。
表明此汇编程序是由led.elf生成,程序是32的小端模式。
2.00000000 :前面的00000000是标号的地址,是标号,对应start.s的_start标号。
其实标号就相当于C语言中的函数名,在C语言中也可以用函数名代表函数的首地址,在这里可以得到印证。
反汇编的标号就是由汇编文件得来的,这样可以方便我们找到反汇编文件和汇编文件对应的部分。
单⽚机烧录⽤的hex⽂件,⽂件格式解析(转载)含有单⽚机的电⼦产品在量产的时候会⽤到.hex⽂件或者.bin。
hex是⼗六进制的,包含地址信息和数据信息,⽽bin⽂件是⼆进制的,只有数据⽽不包含地址。
任何⽂件都有⼀定的格式规范,hex⽂件同样具有完整的格式规范。
今天和⼤家分享⼀下,hex是如何解析的。
⼀、hex⽂件解析hex⽂件可以通过UltraEdit、Notepad++、记事本等⼯具打开,⽤Notepad++打开之后会看到如下数据内容。
使⽤Notepad++打开后会不同含义的数据其颜⾊不同。
每⾏数据都会有⼀个冒号开始,后⾯的数据由:数据长度、地址、标识符、有效数据、校验数据等构成。
以上图的第⼀⾏为例,进⾏解析:第1个字节10,表⽰该⾏具有0x10个数据,即16个字节的数据;第2、3个字节C000,表⽰该⾏的起始地址为0xC000;第4个字节00,表⽰该⾏记录的是数据;第5-20个字节,表⽰的是有效数据;第21个字节73,表⽰前⾯数据的校验数据,校验⽅法:0x100-前⾯字节累加和;其中,第4个字节具有5种类型:00-05,含义如下:字段含义00表⽰后⾯记录的是数据01表⽰⽂件结束02表⽰扩展段地址03表⽰开始段地址04表⽰扩展线性地址05表⽰开始线性地址单⽚机的hex⽂件以00居多,都⽤来表⽰数据。
hex⽂件的结束部分如下图所⽰。
最后⼀⾏的01表⽰⽂件结束了,最后的FF表⽰校验数据,由0x100-0x01=0xFF得来。
⼆、扩展地址细⼼的同学可能发现了,上⾯的地址都是两个字节,范围从0x000-0xFFFF,如果地址是0x17FFFF该怎么办呢?这就要⽤到扩展字段了,举例如下:第⼀⾏中,第⼀个字节为0x02,表⽰只有两个字节的数据,⽽扩展段的标识符为0x04表⽰后⾯的数据0x0800为扩展线性地址,基地址的计算⽅法为:(0x0800<<16)=0x08000000,在0x04标识段出现之前,下⾯的数据都是这个基地址。
汇编程序:ORG 0000HLJMP MAINORG 0013HLJMP INTORG 0030HMAIN: SETB EASETB EX1SETB PX1SETB IT1MOV A, #01HHERE: SJMP HEREORG 0100HINT: MOV P1, ARL ARETIENDHex文件:800F3:0C080000787FE4F6D8FD047:030CB:100E7:0C003000D2AFD2AAD2BAD28A740180FEEC:04010000F590233221:00000001FF个人解释:(其实反汇编过程不能反映真实程序要执行的过程,因为外部中断1的触发需要配合硬件电路来实现才能产生,因此单纯执行汇编程序仅仅是顺序执行,并没有触发中断响应,进而执行中断服务程序。
)对hex文件进行反编译:;======================================================================= ===;====Power Disassembler for MCS-51 and6502================================;======================================================================= ===; Writen by: 覃远高; Copyright: 覃远高; HomePage: ; E-mail: ; Tel: 0; Update: 3.Jul,2000;======================================================================= ===;===========Disassembleinformation========================================;======================================================================= ===; File Name: C:\Users\wugaochao\Desktop\zhongduan.hex; IC Body: MCS-51; Date: 2016/9/13;======================================================================= ===;======================================================================= ===;标号==============指令================================地址===机器码=======;======================================================================= ===Q0000: LJMP Q0030 ;0000 02 00 30 ;======================================================================= ===Q0003: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q000B: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q0013: DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q001B: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q0023: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q002B: DB 00H, 00H, 00H, 00H, 00H ;.....;======================================================================= ===Q0030: SETB EA ;0030 D2 AFSETB EX1 ;0032 D2 AASETB PX1 ;0034 D2 BASETB IT1 ;0036 D2 8AMOV A,#01H ;0038 74 01SJMP $ ;003A 80 FENOP ;003C 00NOP ;003D 00NOP ;003F 00 NOP ;0040 00 NOP ;0041 00 NOP ;0042 00 NOP ;0043 00 NOP ;0044 00 NOP ;0045 00 NOP ;0046 00 NOP ;0047 00 NOP ;0048 00 NOP ;0049 00 NOP ;004A 00 NOP ;004B 00 NOP ;004C 00 NOP ;004D 00 NOP ;004E 00 NOP ;004F 00 NOP ;0050 00 NOP ;0051 00 NOP ;0052 00 NOP ;0053 00 NOP ;0054 00 NOP ;0055 00 NOP ;0056 00 NOP ;0057 00 NOP ;0058 00 NOP ;0059 00 NOP ;005A 00 NOP ;005B 00 NOP ;005C 00 NOP ;005D 00 NOP ;005E 00 NOP ;005F 00 NOP ;0060 00 NOP ;0061 00 NOP ;0062 00 NOP ;0063 00 NOP ;0064 00 NOP ;0065 00 NOP ;0066 00NOP ;0068 00 NOP ;0069 00 NOP ;006A 00 NOP ;006B 00 NOP ;006C 00 NOP ;006D 00 NOP ;006E 00 NOP ;006F 00 NOP ;0070 00 NOP ;0071 00 NOP ;0072 00 NOP ;0073 00 NOP ;0074 00 NOP ;0075 00 NOP ;0076 00 NOP ;0077 00 NOP ;0078 00 NOP ;0079 00 NOP ;007A 00 NOP ;007B 00 NOP ;007C 00 NOP ;007D 00 NOP ;007E 00 NOP ;007F 00 NOP ;0080 00 NOP ;0081 00 NOP ;0082 00 NOP ;0083 00 NOP ;0084 00 NOP ;0085 00 NOP ;0086 00 NOP ;0087 00 NOP ;0088 00 NOP ;0089 00 NOP ;008A 00 NOP ;008B 00 NOP ;008C 00 NOP ;008D 00 NOP ;008E 00 NOP ;008F 00NOP ;0091 00 NOP ;0092 00 NOP ;0093 00 NOP ;0094 00 NOP ;0095 00 NOP ;0096 00 NOP ;0097 00 NOP ;0098 00 NOP ;0099 00 NOP ;009A 00 NOP ;009B 00 NOP ;009C 00 NOP ;009D 00 NOP ;009E 00 NOP ;009F 00 NOP ;00A0 00 NOP ;00A1 00 NOP ;00A2 00 NOP ;00A3 00 NOP ;00A4 00 NOP ;00A5 00 NOP ;00A6 00 NOP ;00A7 00 NOP ;00A8 00 NOP ;00A9 00 NOP ;00AA 00 NOP ;00AB 00 NOP ;00AC 00 NOP ;00AD 00 NOP ;00AE 00 NOP ;00AF 00 NOP ;00B0 00 NOP ;00B1 00 NOP ;00B2 00 NOP ;00B3 00 NOP ;00B4 00 NOP ;00B5 00 NOP ;00B6 00 NOP ;00B7 00 NOP ;00B8 00NOP ;00BA 00 NOP ;00BB 00 NOP ;00BC 00 NOP ;00BD 00 NOP ;00BE 00 NOP ;00BF 00 NOP ;00C0 00 NOP ;00C1 00 NOP ;00C2 00 NOP ;00C3 00 NOP ;00C4 00 NOP ;00C5 00 NOP ;00C6 00 NOP ;00C7 00 NOP ;00C8 00 NOP ;00C9 00 NOP ;00CA 00 NOP ;00CB 00 NOP ;00CC 00 NOP ;00CD 00 NOP ;00CE 00 NOP ;00CF 00 NOP ;00D0 00 NOP ;00D1 00 NOP ;00D2 00 NOP ;00D3 00 NOP ;00D4 00 NOP ;00D5 00 NOP ;00D6 00 NOP ;00D7 00 NOP ;00D8 00 NOP ;00D9 00 NOP ;00DA 00 NOP ;00DB 00 NOP ;00DC 00 NOP ;00DD 00 NOP ;00DE 00 NOP ;00DF 00 NOP ;00E0 00 NOP ;00E1 00NOP ;00E3 00NOP ;00E4 00NOP ;00E5 00NOP ;00E6 00NOP ;00E7 00NOP ;00E8 00NOP ;00E9 00NOP ;00EA 00NOP ;00EB 00NOP ;00EC 00NOP ;00ED 00NOP ;00EE 00NOP ;00EF 00NOP ;00F0 00NOP ;00F1 00NOP ;00F2 00NOP ;00F3 00NOP ;00F4 00NOP ;00F5 00NOP ;00F6 00NOP ;00F7 00NOP ;00F8 00NOP ;00F9 00NOP ;00FA 00NOP ;00FB 00NOP ;00FC 00NOP ;00FD 00NOP ;00FE 00NOP ;00FF 00MOV P1,A ;0100 F5 90RL A ;0102 23RETI ;0103 32;======================================================================= ===Q0104: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q010C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q0114: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q011C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q0124: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q012C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q013C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0144: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q014C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0154: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q015C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0164: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q016C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0174: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q017C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0184: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q018C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0194: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q019C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01A4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01AC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01B4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01BC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01C4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01CC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01D4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01DC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01E4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01EC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01F4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q01FC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0204: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q020C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0214: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q021C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0224: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q022C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0234: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q023C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0244: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q024C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0254: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q025C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0264: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q026C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0274: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q0284: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q028C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0294: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q029C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02A4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02AC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02B4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02BC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02C4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02CC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02D4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02DC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02E4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02EC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02F4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q02FC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0304: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q030C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0314: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q031C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0324: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q032C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0334: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q033C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0344: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q034C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0354: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q035C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0364: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q036C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0374: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q037C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0384: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q038C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0394: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q039C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03A4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03AC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03B4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03BC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q03CC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03D4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03DC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03E4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03EC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03F4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q03FC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0404: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q040C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0414: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q041C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0424: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q042C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0434: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q043C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0444: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q044C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0454: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q045C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0464: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q046C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0474: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q047C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0484: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q048C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0494: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q049C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04A4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04AC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04B4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04BC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04C4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04CC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04D4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04DC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04E4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04EC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04F4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q04FC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0504: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q0514: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q051C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0524: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q052C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0534: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q053C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0544: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q054C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0554: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q055C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0564: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q056C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0574: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q057C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0584: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q058C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0594: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q059C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05A4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05AC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05B4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05BC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05C4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05CC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05D4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05DC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05E4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05EC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05F4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q05FC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0604: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q060C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0614: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q061C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0624: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q062C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0634: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q063C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0644: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q064C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q065C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0664: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q066C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0674: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q067C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0684: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q068C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0694: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q069C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06A4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06AC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06B4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06BC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06C4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06CC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06D4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06DC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06E4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06EC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06F4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q06FC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0704: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q070C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0714: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q071C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0724: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q072C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0734: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q073C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0744: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q074C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0754: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q075C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0764: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q076C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0774: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q077C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0784: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q078C: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........ Q0794: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07A4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07AC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07B4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07BC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07C4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07CC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07D4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07DC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07E4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07EC: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07F4: DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H ;........Q07FC: DB 00H, 00H, 00H, 00H, 78H, 7FH,0E4H,0F6H ;....x•..Q0804: DB 0D8H,0FDH, 75H, 81H, 07H, 02H, 00H, 00H ;..u.....;======================================================================= ===。
bin、hex、elf、axf⽂件的区别1、bin Bin⽂件是最纯粹的⼆进制机器代码, 或者说是"顺序格式"。
按照assembly code顺序翻译成binary machine code,内部没有地址标记。
Bin是直接的内存映象表⽰,⼆进制⽂件⼤⼩即为⽂件所包含的数据的实际⼤⼩。
BIN⽂件就是直接的⼆进制⽂件,⼀般⽤编程器烧写时从00开始,⽽如果下载运⾏,则下载到编译时的地址即可。
可以直接在裸机上运⾏。
2.hexIntel hex ⽂件常⽤来保存单⽚机或其他处理器的⽬标程序代码。
它保存物理程序存储区中的⽬标代码映象。
⼀般的编程器都⽀持这种格式。
就是机器代码的⼗六进制形式,并且是⽤⼀定⽂件格式的ASCII码来表⽰。
HEX⽂件由记录(RECORD)组成。
在HEX⽂件⾥⾯,每⼀⾏代表⼀个记录。
每条记录都由⼀个冒号“:”打头,其格式如下: :BBAAAATTHHHH...HHHHCC BB:字节个数。
AAAA:数据记录的开始地址,⾼位在前,低位在后。
TT: Type 00数据记录,⽤来记录数据。
01记录结束,放在⽂件末尾,⽤来标识⽂件结束。
02⽤来标识扩展段地址的记录 04扩展地址记录(表⽰32位地址的前缀) HHHH:⼀个字(Word)的数据记录,⾼字节在前,低字节在后。
TT之后共有 BB/2 个字的数据。
CC: 占据⼀个Byte的CheckSum 举例分析: :020*********FA :10000400FF00A0E314209FE5001092E5011092E5A3 :00000001FF 分析如下: 第1条记录长度为0x02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。
数据为0000,校验和为FA。
从这个记录的长度和数据,我们可以计算出基地址为0X0000。
后⾯的数据记录都以此地址为基地址。
第2条记录长度为0x10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。
1.汇编程序:ORG 0000HAJMP MAINORG 000BHAJMP TOINTORG 0100HMAIN:CLR P1.0MOV TMOD,#01HMOV TH0, #0FEHMOV TL0, #0CHMOV IE, #28HSETB TR0LOOP:SJMP LOOPORG 0300HTOINT:SETB P1.0CLR P1.0MOV TH0,#0FEHMOV TL0,#0CHRETIEND2.对应hex文件::0300000002030B ED:0C030B00787FE4F6D8FD75810702000041:020*********DD:02000B00610092:10010000C290758901758CFE758A0C75A828D28CF1:020*******FE6F:0B030000D290C290758CFE758A0C3202:00000001FF3.对hex文件结合汇编程序的解析::0300000002030B ED%在0000H地址上,存储指令LJMP 030BH.程序跳转到地址030BH处。
:0C030B00787FE4F6D8FD75810702000041%在030BH地址上,存储指令如下:%787F,(双字节指令),MOV Rn,#7F;(数据传送指令)%E4F6,(双字节指令),CLR F6;(F6位置清零)%D8FD,(双字节指令), DJNZ Rn,rel;%758107,(三字节指令),MOV 81,#07H;%020000,(三字节指令),LJMP 0000H;这两句程序和汇编程序本身没有关系,其实质为预先固化的程序,使得后面写入的程序从0000H开始执行。
:020*********DD% AJMP MAIN:02000B00610092% AJMP TOINT,000BH是中断地址的入口,中断响应程序存于此地址,中断响应以后开始执行中断服务程序,中断服务程序地址是0300H。
c51hex文件反编译方法
C51是一种用于嵌入式系统开发的微控制器架构,其使用的是Keil C51编译器生成的HEX文件。
要对C51的HEX文件进行反编译,需要使用专门的反汇编工具,比如IDA Pro、Ghidra等。
这些工具
可以将HEX文件转换为汇编代码,但需要注意的是,由于HEX文件
是经过编译的机器码,反编译后的汇编代码可能不会完全还原原始
的C源代码。
另外,需要注意的是反编译HEX文件可能涉及到版权和法律问题,因为对于商业软件而言,其源代码通常是受到保护的。
在进行
反编译之前,务必确保你有合法的权限进行这样的操作。
总的来说,对于C51的HEX文件进行反编译是一项复杂的任务,需要使用专业的工具和合法的权限。
希望我的回答能够帮到你。
【MCU】可怕,别人把我MCU固件给反汇编了!(逆向)1、聊一聊2、情景再现咬金,你们公司固件程序有加密处理吗 ?额~,算了吧,我们公司的单片机程序炒鸡简单的,还加啥子密。
你这想法不对,假如产品卖得很好,如果没有任何加密措施,那岂不人家随便复制售卖。
没关系吧,反正他们没源码,应该也没那么容易复制吧。
一点加密都没有,盗取还是比较简单的。
我才不信~~!那行,把你的板子给我,不用你的源码,跟你把波特率改了!1直接读取固件这里以stm32单片机进行演示,如果MCU没有做flash读取或者熔断保护,则可以通过jlink等烧写工具直接读取其Flash上的固件,操作如下:01打开J-Flash软件并选择创建一个新的工程,并点击Start J-Flash :02选择所对应的芯片类型,并点击连接芯片,并显示连接成功。
03通过下面的选项路径,即可读取所选Flash区域或者所有Flash区域(Entire Chip)。
04这样便获得了Flash上所有的固件数据,也就是我们的bin文件内容,当然这也就是逆向的最重要素材。
05最后把数据保存为bin文件、hex文件等等即可,当然当你换一块芯片然后烧录该程序也是可以运行的。
2逆向固件程序一谈到逆向,估计各位小伙伴会联想到各种黑客、破译、非法等等情景,然而并非如此,世间万事万物都是双刃的。
就像开一把锁,当你学习了各种破解锁的技巧,如果使用这些技巧来盗窃,当然属于违法行为;但是当用来帮助破解犯罪现场,收集证据等等那这就大有作为的,当然本文旨在学习。
目前嵌入式行业比较流行的逆向工程技术有PCB抄板和芯片解密•PCB抄板一般都会使用到相关的工具和电气测试等等,最终获得原电路板的原理图、BOM等等实现PCB的完整复制。
•芯片解密一般是通过相应的技术把执行程序(一般为机器码)反汇编成汇编代码,还可以更进一步反编译成高级语言伪代码(比如C代码),便于逆向人员理解和修改。
1前期准备在上一小节中我们轻松获得了芯片中的bin文件等,当然如果芯片有加密处理过,可能就需要更加先进的技术获取芯片的内部数据,这里就暂时不展开了,可以参考下面两篇文章 :【整理】一文带你了解'单片机解密'技术【MCU】用stm32的UID给固件加密(重点在加密)今天我们主要是把前面获取的bin文件逆向一下,并把原来的波特率9600修改为57600,原来9600效果如下:2逆向过程逆向技术发展其实挺长一段时间了,当然为了方便各逆向爱好者的使用也诞生了非常多的开发工具,其中IDA Pro算是非常流行的逆向工具,所以这里就选用该工具进行逆向。
hexrays 技巧【实用版2篇】篇1 目录1.Hexrays 简介2.Hexrays 技巧及应用3.Hexrays 技巧实例4.总结篇1正文1.Hexrays 简介Hexrays 是一款强大的反汇编工具,可以帮助安全研究人员分析恶意软件和二进制文件。
通过使用 Hexrays,研究人员可以深入了解文件的内部结构和执行过程,从而更好地识别潜在的安全威胁。
2.Hexrays 技巧及应用Hexrays 具有许多高级功能,可以大大提高分析效率。
以下是一些常用的 Hexrays 技巧:- 脚本编写:通过编写自定义脚本,用户可以快速地对大量文件进行批量分析。
例如,可以使用 Python 编写脚本,将 Hexrays 的输出结果自动导入到数据库中进行分析。
- 数据可视化:Hexrays 可以将分析结果以图表的形式展示,便于用户快速了解文件的结构和关键信息。
例如,可以使用 Hexrays 的 GUI 界面查看调用图、控制流图等。
- 静态分析:通过 Hexrays 的静态分析功能,用户可以在不运行文件的情况下分析其结构和行为。
这有助于在初步筛选阶段快速识别潜在的恶意文件。
- 动态分析:Hexrays 的动态分析功能可以模拟文件的执行过程,实时显示文件在运行时的行为。
这有助于深入了解文件的攻击手段和影响范围。
3.Hexrays 技巧实例假设我们收到了一个可疑的二进制文件,怀疑它可能是恶意软件。
我们可以使用 Hexrays 进行分析,具体步骤如下:- 首先,使用静态分析功能,查看文件的头部信息,确认文件类型和编译器信息。
- 然后,使用动态分析功能,模拟文件的执行过程。
在执行过程中,Hexrays 会实时显示文件的调用关系、内存使用情况等。
通过观察这些信息,我们可以初步判断文件是否存在安全风险。
- 最后,结合数据可视化功能,查看文件的调用图和控制流图。
这有助于我们更直观地了解文件的整体结构和行为模式,从而做出最终的判断。
思路:原谅虫子买个关子,当看了就知道了
1.软材料
IDA5.0。
下载地址:/showthread.php?s=&threadid=29335 jtag最新固件,见附件
hexbin,见附件,(语法:hexbin filename.hex [filename.bin] )
stk500_M8源程序。
(附件中有我移植好的减少代码的m16源程序)
2.硬材料,见附件电路图
好了,准备好了,开始做菜了:)
1)用ida打开固件,如下图:
点击此处下载ourdev_179161.rar(文件大小:100K)
到这步时用hexbin把hex转为bin文件,出现如下提示(不转也可以)
到这里,出现了死胡同。
经过简单研究,发现。
出现这种情况是因为在ida目录中的cfg文件下avr.cfg文件关于atmega16的有关器件容量配置信息没写,结果默认为8kB,添加所选部分就ok了
保存好文件,最后重新打开
以上是虫子加的一些注释,明显的为iar编译的文件
2007-10-30,22:50:11 资料邮件回复引用
回
复↑↑↓↓
编辑
广告投诉
这就完成了jtag部分,到这里应该看出isp的
起始代码应该为0x1700(word).好以下讲述isp的移植部分
空间优化主要有以下几方面。
(为了简单,原ISP里利用的定时中断虫子直接用延时代替了)
1。
状态机用字节
2。
用if替换switch
3。
其它杂项就不说了。
还有一点,当用到enum和结构时,对工程作如下配置(勾上)也能显著优化空间
最后一步就是连接选项....
在link里加上:-Wl,--section-start=.text=0x2e00
做完修改后,f7,build.然后打开。
生成的hex文件,把其内容剪切到刚生成的jtag hex固件中就可以了。
忘了说一点了,jtag hex的生成先在ida中修改好,然后用二进制编辑文件修改原jtag固件。