8051单片机手工逆向 demo小例子

今天有空,研究一下8051单片的的构造,写一个小案例,做逆向练习
在这里插入图片描述

这是需要烧录到单片机中的代码


```c
02 00 03 78 7F E4 F6 D8 FD 75 81 07 02 00 0F D2 
90 A2 90 92 91 80 FA 00 
通过查找单片机指令记录可以简单的得出上面指令的解析
020003 		LJMP C:0003
c:0003  //这里是地址编号
787F 		MOV R0,#0X7F
E4 		CLA A 
c:0006 //这里是地址编号
F6 		MOV @R0 A
D8FD 		DJNZ R0,C:0006
758107		MOV SP(0X81),#0X07
//上面是单片机的框架,下面才是程序的本身
//上面就是初始化程序需要用到的框架的数据
C:0F //这里是地址编号
D290		SETB 90(P1_0)
C:11 这里是地址编号
A290		MOV C,90(P1_0)
9291 		MOV 0X90.1(P1_1),C

80FA		SJMP C:11	


//上面是代码的核心部分,不过是汇编的形式,如果转换为C语言的话,就是如下简单的几行代码

```c



```c
/*-----------------------------------------------------------------------------
定义 P1 (8 bits), P1.0, and P1.1.
-----------------------------------------------------------------------------*/
sfr P1 = 0x90;        /*   P1 */

sbit P1_0 = P1^0;     /*   P1.0 */
sbit P1_1 = P1^1;     /*   P1.1 */
void main (void)
{
P1_0 = 1;                  /* 置1输出 */

/*-----------------------------------------------
循环
-----------------------------------------------*/
while (1)
  {
  P1_1 = P1_0;            /* 复制 P1.0 to P1.1 */
  }
}

这里是手动,逆一个简单的程序, 如果是大型工程中的代码,远远比这工作量大,所以如果需要做这个工作,还需要编写工具,进行自动翻译成汇编,再从汇编到C,当然,如果对汇编比较熟悉的程序员,可能就不需要这一步了。


打开memory窗口,输入D:0xXX即可查看内部数据RAM内容,输入X:0xXXXX即可查看外部数据RAM内容,输入C:0xXXXX即可查看程序存储器内容。	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值