搜索
bottom↓
回复: 24

DX帮忙看一下这段汇编代码,看了半天看不懂,怀疑是加密算法

[复制链接]

出0入0汤圆

发表于 2007-12-24 16:01:11 | 显示全部楼层 |阅读模式
如题:
Q10D6:             CLR   A                            ;10D6   E4
                   MOVC  A,@A+DPTR                    ;10D7   93
                   INC   DPTR                         ;10D8   A3
                   MOV   R0,A                         ;10D9   F8
Q10DA:             CLR   A                            ;10DA   E4
                   MOVC  A,@A+DPTR                    ;10DB   93
                   INC   DPTR                         ;10DC   A3
                   JC    Q10E2                        ;10DD   40 03
                   MOV   @R0,A                        ;10DF   F6
                   SJMP  Q10E3                        ;10E0   80 01
Q10E2:             MOVX  @R0,A                        ;10E2   F2
Q10E3:             INC   R0                           ;10E3   08
                   DJNZ  R7,Q10DA                     ;10E4   DF F4
                   SJMP  Q1109                        ;10E6   80 21
Q10E8:             CLR   A                            ;10E8   E4
                   MOVC  A,@A+DPTR                    ;10E9   93
                   INC   DPTR                         ;10EA   A3
                   MOV   R0,A                         ;10EB   F8
                   ANL   A,#07H                       ;10EC   54 07
                   ADD   A,#0CH                       ;10EE   24 0C
                   XCH   A,R0                         ;10F0   C8
                   CLR   C                            ;10F1   C3
                   RLC   A                            ;10F2   33
                   SWAP  A                            ;10F3   C4
                   ANL   A,#0FH                       ;10F4   54 0F
                   ORL   A,#20H                       ;10F6   44 20
                   XCH   A,R0                         ;10F8   C8
                   MOVC  A,@A+PC                      ;10F9   83
                   JC    Q1100                        ;10FA   40 04
                   CPL   A                            ;10FC   F4
                   ANL   A,@R0                        ;10FD   56
                   SJMP  Q1101                        ;10FE   80 01
Q1100:             ORL   A,@R0                        ;1100   46
Q1101:             MOV   @R0,A                        ;1101   F6
                   DJNZ  R7,Q10E8                     ;1102   DF E4
                   SJMP  Q1109                        ;1104   80 03
Q1106:             MOV   DPTR,#000EH                  ;1106   90 00 0E  //数据指针寄存器DPTR=000EH
Q1109:             CLR   A                            ;1109   E4
                   MOV   R6,#01H                      ;110A   7E 01
                   MOVC  A,@A+DPTR                    ;110C   93
                   JZ    Q10D3                        ;110D   60 C4
                   INC   DPTR                         ;110F   A3
                   MOV   R7,A                         ;1110   FF
                   ANL   A,#3FH                       ;1111   54 3F
                   JNB   ACC.5,Q111F                  ;1113   30 E5 09
                   ANL   A,#1FH                       ;1116   54 1F
                   MOV   R6,A                         ;1118   FE
                   CLR   A                            ;1119   E4
                   MOVC  A,@A+DPTR                    ;111A   93
                   INC   DPTR                         ;111B   A3
                   JZ    Q111F                        ;111C   60 01
                   INC   R6                           ;111E   0E
Q111F:             XCH   A,R7                         ;111F   CF
                   ANL   A,#0C0H                      ;1120   54 C0
                   ADD   A,ACC                        ;1122   25 E0
                   JZ    Q10D6                        ;1124   60 B0
                   JC    Q10E8                        ;1126   40 C0
                   CLR   A                            ;1128   E4
                   MOVC  A,@A+DPTR                    ;1129   93
                   INC   DPTR                         ;112A   A3
                   MOV   R2,A                         ;112B   FA
                   CLR   A                            ;112C   E4
                   MOVC  A,@A+DPTR                    ;112D   93
                   INC   DPTR                         ;112E   A3
                   MOV   R0,A                         ;112F   F8
Q1130:             CLR   A                            ;1130   E4
                   MOVC  A,@A+DPTR                    ;1131   93
                   INC   DPTR                         ;1132   A3
                   XCH   A,R0                         ;1133   C8
                   XCH   A,DPL                        ;1134   C5 82
                   XCH   A,R0                         ;1136   C8
                   XCH   A,R2                         ;1137   CA
                   XCH   A,DPH                        ;1138   C5 83
                   XCH   A,R2                         ;113A   CA
                   MOVX  @DPTR,A                      ;113B   F0
                   INC   DPTR                         ;113C   A3
                   XCH   A,R0                         ;113D   C8
                   XCH   A,DPL                        ;113E   C5 82
                   XCH   A,R0                         ;1140   C8
                   XCH   A,R2                         ;1141   CA
                   XCH   A,DPH                        ;1142   C5 83
                   XCH   A,R2                         ;1144   CA
                   DJNZ  R7,Q1130                     ;1145   DF E9
                   DJNZ  R6,Q1130                     ;1147   DE E7
                   SJMP  Q1109                        ;1149   80 BE
Q114B:             MOV   A,R7                         ;114B   EF
                   ADD   A,0BH                        ;114C   25 0B
                   MOV   R7,A                         ;114E   FF
                   MOV   A,R6                         ;114F   EE
                   ADDC  A,0AH                        ;1150   35 0A
                   MOV   R6,A                         ;1152   FE
                   MOV   A,R5                         ;1153   ED
                   ADDC  A,09H                        ;1154   35 09
                   MOV   R5,A                         ;1156   FD
                   MOV   A,R4                         ;1157   EC
                   ADDC  A,08H                        ;1158   35 08
                   MOV   R4,A                         ;115A   FC
                   LJMP  Q11D8                        ;115B   02 11 D8

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2007-12-24 16:19:53 | 显示全部楼层
你这个明显是反编译hex码来的.意图?

出0入0汤圆

 楼主| 发表于 2007-12-24 16:24:36 | 显示全部楼层
意图是看明白里面的算法,然后自己用c写,不知道可行否?

出0入0汤圆

发表于 2007-12-24 16:24:58 | 显示全部楼层
51的,建議軟件模擬,跟蹤一下 .我頭暈,幫不了你,抱歉.

出0入0汤圆

 楼主| 发表于 2007-12-24 16:33:13 | 显示全部楼层
哈哈,没关系,总算看懂一点, 延时(((231*8)+8+4)*14)+8=26048个机器周期?
但是不明白为什么要压栈?
Q1383:             PUSH  07H                          ;1383   C0 07
                   MOV   R7,#0E7H                     ;1385   7F E7  // E7H=231
Q1387:             NOP                                ;1387   00
                   NOP                                ;1388   00
                   NOP                                ;1389   00
                   NOP                                ;138A   00
                   NOP                                ;138B   00
                   NOP                                ;138C   00
                   DJNZ  R7,Q1387                     ;138D   DF F8
                   NOP                                ;138F   00
                   POP   07H                          ;1390   D0 07
                   RET                                ;1392   22
;==========================================================================
Q1393:             PUSH  06H                          ;1393   C0 06
                   MOV   R6,#14H                      ;1395   7E 14
Q1397:             LCALL Q1383                        ;1397   12 13 83
                   DJNZ  R6,Q1397                     ;139A   DE FB
                   POP   06H                          ;139C   D0 06
                   RET                                ;139E   22

出0入0汤圆

发表于 2007-12-24 16:55:06 | 显示全部楼层
07H = R7?

出0入0汤圆

 楼主| 发表于 2007-12-25 09:07:24 | 显示全部楼层
应该不是吧,07H应该是系统复位时堆栈指针SP的值。

下面还对06H进行了压栈和出栈。

出0入0汤圆

 楼主| 发表于 2007-12-25 09:08:36 | 显示全部楼层
建議軟件模擬,跟蹤一下。怎么进行软件模拟?请指点,谢谢。

出0入0汤圆

发表于 2007-12-25 09:15:53 | 显示全部楼层
把HEX 直接变成 C就好了

出0入0汤圆

 楼主| 发表于 2007-12-25 09:41:19 | 显示全部楼层
我也想啊,前面有个贴子在讨论阿,很多高手都否了。

出0入0汤圆

发表于 2007-12-25 16:58:41 | 显示全部楼层
51很久沒用了,都不大記得了.我以為07H=R7,先保存其值再裝入立即數#0E7H ,(很多人習慣,在子程序用到記存器時,先保存其值,這樣其它地方用到這記存器時就不會攪亂它的內容了)故要压栈 ,以下的06H,R6同理                  
怎么进行软件模拟? 用keil呀,開個project,把它單步執行看看它做了些啥,當然你先要把程序修改成可運行的.

出0入0汤圆

发表于 2008-4-18 21:48:07 | 显示全部楼层
Q114B:             MOV   A,R7                         ;114B   EF
                   ADD   A,0BH                        ;114C   25 0B
                   MOV   R7,A                         ;114E   FF
                   MOV   A,R6                         ;114F   EE
                   ADDC  A,0AH                        ;1150   35 0A
                   MOV   R6,A                         ;1152   FE
                   MOV   A,R5                         ;1153   ED
                   ADDC  A,09H                        ;1154   35 09
                   MOV   R5,A                         ;1156   FD
                   MOV   A,R4                         ;1157   EC
                   ADDC  A,08H                        ;1158   35 08
                   MOV   R4,A                         ;115A   FC
                   LJMP  Q11D8                        ;115B   02 11 D8
======================================================================================
功能:
R4R5R6R7(unsigned long类型,R4为MSB) += RAM[0x08 0x09 0x0A 0x0B](unsigned long类型,0x08为MSB)

出0入0汤圆

发表于 2008-4-18 21:54:12 | 显示全部楼层
Q1130:             CLR   A                            ;1130   E4
                   MOVC  A,@A+DPTR                    ;1131   93
                   INC   DPTR                         ;1132   A3
                   XCH   A,R0                         ;1133   C8
                   XCH   A,DPL                        ;1134   C5 82
                   XCH   A,R0                         ;1136   C8
                   XCH   A,R2                         ;1137   CA
                   XCH   A,DPH                        ;1138   C5 83
                   XCH   A,R2                         ;113A   CA
                   MOVX  @DPTR,A                      ;113B   F0
                   INC   DPTR                         ;113C   A3
                   XCH   A,R0                         ;113D   C8
                   XCH   A,DPL                        ;113E   C5 82
                   XCH   A,R0                         ;1140   C8
                   XCH   A,R2                         ;1141   CA
                   XCH   A,DPH                        ;1142   C5 83
                   XCH   A,R2                         ;1144   CA
                   DJNZ  R7,Q1130                     ;1145   DF E9
                   DJNZ  R6,Q1130                     ;1147   DE E7
                   SJMP  Q1109                        ;1149   80 BE
======================================================================================
功能:
ROM中数据块送往XRAM中;ROM中数据块的起始地址由DPTR取得;XRAM中目标区域的首址由R2R0取得(R2为高8位);数据块长度由R6、R7取得,为(R6-1)* 256 + R7,其中R6和R7的取值范围为1~256,也就是说如果为零,则最后的效果为256。

出0入0汤圆

发表于 2008-4-18 22:09:20 | 显示全部楼层
Q10D6:             CLR   A                            ;10D6   E4
                   MOVC  A,@A+DPTR                    ;10D7   93
                   INC   DPTR                         ;10D8   A3
                   MOV   R0,A                         ;10D9   F8
Q10DA:             CLR   A                            ;10DA   E4
                   MOVC  A,@A+DPTR                    ;10DB   93
                   INC   DPTR                         ;10DC   A3
                   JC    Q10E2                        ;10DD   40 03
                   MOV   @R0,A                        ;10DF   F6
                   SJMP  Q10E3                        ;10E0   80 01
Q10E2:             MOVX  @R0,A                        ;10E2   F2
Q10E3:             INC   R0                           ;10E3   08
                   DJNZ  R7,Q10DA                     ;10E4   DF F4
                   SJMP  Q1109                        ;10E6   80 21
======================================================================================
功能:
ROM中数据块送往IRAM中或XRAM中的PDATA区(由传进来的C标志位决定);目标区域的首址为入口处DPTR指向的ROM中的值;数据块紧跟在其后;数据块长度由传入的R7取得,其中R7的取值范围为1~256,也就是说如果为零,则最后的效果为256。

出0入0汤圆

发表于 2008-4-18 22:34:29 | 显示全部楼层
Q10E8:             CLR   A                            ;10E8   E4
                   MOVC  A,@A+DPTR                    ;10E9   93
                   INC   DPTR                         ;10EA   A3
                   MOV   R0,A                         ;10EB   F8
                   ANL   A,#07H                       ;10EC   54 07
                   ADD   A,#0CH                       ;10EE   24 0C
                   XCH   A,R0                         ;10F0   C8
                   CLR   C                            ;10F1   C3
                   RLC   A                            ;10F2   33
                   SWAP  A                            ;10F3   C4
                   ANL   A,#0FH                       ;10F4   54 0F
                   ORL   A,#20H                       ;10F6   44 20
                   XCH   A,R0                         ;10F8   C8
                   MOVC  A,@A+PC                      ;10F9   83
                   JC    Q1100                        ;10FA   40 04
                   CPL   A                            ;10FC   F4
                   ANL   A,@R0                        ;10FD   56
                   SJMP  Q1101                        ;10FE   80 01
Q1100:             ORL   A,@R0                        ;1100   46
Q1101:             MOV   @R0,A                        ;1101   F6
                   DJNZ  R7,Q10E8                     ;1102   DF E4
                   SJMP  Q1109                        ;1104   80 03
======================================================================================  
功能:  
ROM中数据块送往IRAM中的BDATA区;目标为IRAM中的BDATA区中的某个/某些位;操作为对这个/这些位进行置位或清零;数据块由传入的DPTR取得,数据块长度由传入的R7取得,其中R7的取值范围为1~256,也就是说如果为零,则最后的效果为256(实际这里最大取得128);数据块中的一个字节对应BDATA区中的一个位,该字节的最高位表示是要将目标位置位(为1时)还是清零(为0时),该字节的低七位指定目标位的地址,在程序中使用这七位中的高4位来定位目标位所在的目标字节的地址、使用这七位中的低3位来定位目标位在目标字节中位 位置(通过查询一个位图,该位图紧跟在这段代码最后一句SJMP的后面,共8个字节,依次为0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80)。

出0入0汤圆

发表于 2008-4-18 22:58:16 | 显示全部楼层
Q1109:             CLR   A                            ;1109   E4
                   MOV   R6,#01H                      ;110A   7E 01
                   MOVC  A,@A+DPTR                    ;110C   93
                   JZ    Q10D3                        ;110D   60 C4
                   INC   DPTR                         ;110F   A3
                   MOV   R7,A                         ;1110   FF
                   ANL   A,#3FH                       ;1111   54 3F
                   JNB   ACC.5,Q111F                  ;1113   30 E5 09
                   ANL   A,#1FH                       ;1116   54 1F
                   MOV   R6,A                         ;1118   FE
                   CLR   A                            ;1119   E4
                   MOVC  A,@A+DPTR                    ;111A   93
                   INC   DPTR                         ;111B   A3
                   JZ    Q111F                        ;111C   60 01
                   INC   R6                           ;111E   0E
Q111F:             XCH   A,R7                         ;111F   CF
                   ANL   A,#0C0H                      ;1120   54 C0
                   ADD   A,ACC                        ;1122   25 E0
                   JZ    Q10D6                        ;1124   60 B0
                   JC    Q10E8                        ;1126   40 C0
======================================================================================   
功能:   
带结束检测的数据段作用分析;如果传入的DPTR所指向的数据(ROM中)为0,则说明结束;不为0,则该字节后其后的一字节数据说明再之后一段数据的长度以及将要送入哪个RAM区域;这两个字节可以称之为数据头,数据头第一字节的高两位表明后面的数据将被送入哪个RAM区域,X0(00或10)时由Q10D6程序段处理送入PDATA区或IDATA区(00为IDATA区,10为PDATA区)、11时由Q10E8程序段处理送入BDATA区、01时执行下面紧跟着的代码(再取数据区中的两个字节送入R2R0后执行Q1130程序段,将后面的数据送入XDATA区);这些程序段完成后均返回Q1109标号处,可以处理连续存放的多个数据段,最后的0x00表示整个数据段的结束;程序的入口为Q1109标号的前一句:“Q1106:             MOV   DPTR,#000EH                  ;1106   90 00 0E  //数据指针寄存器DPTR=000EH”,表示整个数据段的起始地址为ROM中的0x000E单元。

出0入0汤圆

发表于 2008-4-18 22:59:18 | 显示全部楼层
最后,这段程序的作用就是完成51单片机的各个存储空间中的全局变量、静态变量的初始化。

出0入0汤圆

发表于 2008-4-18 22:59:45 | 显示全部楼层
望啊莫加精。

出0入0汤圆

发表于 2008-4-22 15:06:01 | 显示全部楼层
楼主没来……
lusson没来……
阿莫一样没来……

出0入54汤圆

发表于 2008-4-22 15:19:00 | 显示全部楼层
呵。楼主估计早忘了这事了,
加精的话可是给楼主加而不是给你加啊。这边是比较不热闹。

出0入0汤圆

发表于 2008-4-22 15:35:12 | 显示全部楼层
那就给我加积分?积分是做什么用的?
*^_^*

出0入0汤圆

发表于 2008-4-22 16:24:29 | 显示全部楼层
没用的哈
楼上有耐性哈

出0入0汤圆

发表于 2008-4-23 10:50:23 | 显示全部楼层
耐性?你是指分析代码的耐性吗?
其实只是觉得可以在帮助别人的同时可以提高自己还可以炫耀一下自己,呵呵~~~~

出0入0汤圆

发表于 2014-10-28 08:51:14 | 显示全部楼层
这个要MARK,以后学习

出0入0汤圆

发表于 2014-10-31 21:33:05 | 显示全部楼层
这个汇编,明显是高级语言编译形成的.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 12:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表