搜索
bottom↓
回复: 78

51逆向利器

  [复制链接]

出0入0汤圆

发表于 2013-9-26 20:09:14 | 显示全部楼层 |阅读模式
本帖最后由 xuhai777 于 2013-9-27 19:13 编辑

工作上需要对无源码的古董级51程序进行逆向分析,伟福及其他的51逆向工具都不给力啊,
至少逆向出来的文件都重新编译通不过,还需要大量的手工整理,
于是自己做了一个51逆向利器,和大家分享.^_^
主要功能:
1.完全支持51指令集
2.智能识别7个中断程序入口:定时器3个,串口2个,外部2个
3.智能识别花指令,并跳过干扰
4.优化输出文件,便于分析查找
5.逆向出来的文件直接使用伟福重新编译通过,且对照源.BIN文件完全一致
输入.BIN文件,输出.asm文件





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入12汤圆

发表于 2013-9-26 20:16:26 | 显示全部楼层
能出C语言就逆天了

出0入12汤圆

发表于 2013-9-26 20:20:19 | 显示全部楼层
不能搞HEX文件,不方便啊

出0入93汤圆

发表于 2013-9-26 20:24:45 | 显示全部楼层
楼主厉害啊

出0入0汤圆

发表于 2013-9-26 20:26:25 | 显示全部楼层
牛X      

出0入0汤圆

 楼主| 发表于 2013-9-26 20:26:31 | 显示全部楼层
网上大把的HEX转BIN工具啊,最简单是用烧录器加载HEX文件再另存为BIN文件

出0入0汤圆

 楼主| 发表于 2013-9-26 20:35:54 | 显示全部楼层
相同的C语言程序,编译器不一样,编译选项不一样,都不能输出同样的结果.
那如果逆向输出了C语言的,怎么验证逆向程序与源程序的正确性呢?
而汇编程序和编译器的关系不大,所以能保证逆向程序与源程序的正确性.

出0入0汤圆

发表于 2013-9-26 20:36:59 | 显示全部楼层
不用那么麻烦,有现成的。发两个反编译工具。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-26 20:38:59 | 显示全部楼层
skynet 发表于 2013-9-26 20:20
不能搞HEX文件,不方便啊

我有一个可以把51的hex转汇编的软件。这个软件还可以让PIC单片机的hex文件反汇编。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-9-26 20:39:02 | 显示全部楼层
这两个反编译工具我也早试过了,你可以试下我做的呢.^_^

出0入0汤圆

发表于 2013-9-26 20:40:50 来自手机 | 显示全部楼层
楼主牛叉,赞一个!

出0入85汤圆

发表于 2013-9-26 20:43:11 | 显示全部楼层
LZ这个看起来格式有些乱,能开源就好了。之前一直使用51智能反汇编很好用啊,没出现不能编译的,撑死就是加个0的问题,但没有避开加花的功能

出0入0汤圆

 楼主| 发表于 2013-9-26 20:45:50 | 显示全部楼层
我认为逆向出来的文件保证与源程序的正确性是重要之首.
我也通过从逆向文件中学习到了很多东西.

出0入0汤圆

发表于 2013-9-26 21:20:54 | 显示全部楼层
试了下,楼主这个做得不错,(之前用64K文件试过几种,都不能正确反汇编,)

出0入0汤圆

发表于 2013-9-26 21:21:21 | 显示全部楼层
做这个要掌握51的机器码?

出0入0汤圆

发表于 2013-9-26 21:25:53 | 显示全部楼层
楼主要是在反汇编软件里加上注释就更好了,比方中断入口,16位运算,    等等

出0入0汤圆

 楼主| 发表于 2013-9-26 21:26:47 | 显示全部楼层
逆向文件重新编译后使用文件比较工具,例如:BCompare来验证其正确性

出0入0汤圆

 楼主| 发表于 2013-9-26 21:32:51 | 显示全部楼层
图片里就有张就是51指令集的机器码表,黑色是单字节指令,红色是双字节指令,蓝色是三字节指令,绿色是华邦增加的指令,再具体的使用就得查书了

出0入0汤圆

发表于 2013-9-26 21:55:37 | 显示全部楼层
都是厉害的哇哇

出0入17汤圆

发表于 2013-9-26 22:01:37 | 显示全部楼层
强人!!

出100入0汤圆

发表于 2013-9-26 22:10:50 | 显示全部楼层
哈哈,好东西,先MARK留用……谢谢楼主分享!

出0入0汤圆

发表于 2013-9-26 22:20:32 | 显示全部楼层
好厉害
这个要支持下

出0入0汤圆

发表于 2013-9-27 07:02:11 来自手机 | 显示全部楼层
楼主厉害,谢谢提供资料的各位

出0入0汤圆

发表于 2013-9-27 07:26:41 | 显示全部楼层
赞一个,不错

出0入96汤圆

发表于 2013-9-27 08:30:04 | 显示全部楼层
顶,好久没有弄汇编了

出0入54汤圆

发表于 2013-9-27 08:33:57 | 显示全部楼层
这个有意思,哈

出70入145汤圆

发表于 2013-9-27 08:36:58 | 显示全部楼层
很牛X的工具,以前用过汇编只编过简单程序,太累了,后来还是使用C便写下简单的测试程序。

出0入0汤圆

发表于 2013-9-27 08:37:50 来自手机 | 显示全部楼层
mark pic的

出0入0汤圆

发表于 2013-9-27 08:41:03 | 显示全部楼层
现在单纯的51程序少了.

出0入0汤圆

发表于 2013-9-27 08:45:56 | 显示全部楼层
好,以前用过智能的那个,有时间试用这个

出0入0汤圆

发表于 2013-9-27 09:29:57 | 显示全部楼层
反出来差不多全是DB

出0入0汤圆

发表于 2013-9-27 09:45:41 | 显示全部楼层
mark 一下  用的时候再来

出0入0汤圆

发表于 2013-9-27 09:55:02 | 显示全部楼层
不错很好的反汇编工具,但是现在搞汇编的人少了,除非用来破解,要不然觉得意义不大

出0入0汤圆

发表于 2013-9-27 09:56:04 | 显示全部楼层
太牛了

出0入0汤圆

发表于 2013-9-27 10:04:34 | 显示全部楼层
现在看汇编犹如天书了,特别是程序量大的话更是费劲

出0入34汤圆

发表于 2013-9-27 10:15:06 | 显示全部楼层
不得不佩服楼主的功力 ...

出0入0汤圆

发表于 2013-9-27 10:23:29 | 显示全部楼层
本帖最后由 xjavr 于 2013-9-27 10:25 编辑

楼主你的只能识别一条指令。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-27 10:23:31 | 显示全部楼层
世界上再也没有秘密了吗

出0入0汤圆

发表于 2013-9-27 10:26:50 | 显示全部楼层
楼主大牛啊!!~~

不知道在这个软件的基础上,能够扩展到其他芯片?比如AVR、PIC、STM8等

出0入0汤圆

发表于 2013-9-27 10:35:28 来自手机 | 显示全部楼层
很牛很牛

出0入0汤圆

发表于 2013-9-27 10:51:19 | 显示全部楼层
测试了一下 断句不行 有待提高呵

以前无聊的时候也搞了个半吊子 区分代码和数据难做  一处错了往后的都错了

出0入0汤圆

发表于 2013-9-27 11:05:49 | 显示全部楼层
向楼主致敬

出0入0汤圆

 楼主| 发表于 2013-9-27 12:16:50 | 显示全部楼层
xjavr 发表于 2013-9-27 10:23
楼主你的只能识别一条指令。

谢谢你的关注和支持。如果方便的话,把你的HEX或者BIN文件发给我,让我分析下原因。

出0入0汤圆

 楼主| 发表于 2013-9-27 12:18:09 | 显示全部楼层
develop 发表于 2013-9-27 10:51
测试了一下 断句不行 有待提高呵

以前无聊的时候也搞了个半吊子 区分代码和数据难做  一处错了往后的都错 ...

感谢你的关注和支持。
断句是什么意思,不明白。

出0入0汤圆

发表于 2013-9-27 12:20:37 | 显示全部楼层
本帖最后由 xjavr 于 2013-9-27 12:22 编辑




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-27 12:50:33 | 显示全部楼层
这个确实很牛。

出0入0汤圆

 楼主| 发表于 2013-9-27 12:53:27 | 显示全部楼层
xjavr 发表于 2013-9-27 12:20


使用PUSH和RET组合跳转方式,静态逆向是无能为力的了,需要动态完全模拟MCU运行和跟踪状态,这和具体的MCU型号又扯上关系了。
你这程序是跑某个OS的吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-9-27 12:55:58 | 显示全部楼层
我把PUSH和RET指令操作也跟踪进去,可以解决这个问题的,敬请期待.^_^

出0入12汤圆

发表于 2013-9-27 13:06:45 | 显示全部楼层
LZ niu

出0入0汤圆

发表于 2013-9-27 13:40:53 | 显示全部楼层
这个真的很N呀!

出0入0汤圆

发表于 2013-9-27 15:53:11 | 显示全部楼层
xuhai777 发表于 2013-9-27 12:55
我把PUSH和RET指令操作也跟踪进去,可以解决这个问题的,敬请期待.^_^

没有跑OS,不过初始化文件是我自己写了一个压栈的操作。

出0入0汤圆

发表于 2013-9-27 15:54:33 | 显示全部楼层
好东西make一下。

出0入0汤圆

发表于 2013-9-27 17:35:51 | 显示全部楼层
楼主辛苦了,要花费很多精力哟。

出0入0汤圆

发表于 2013-9-27 17:59:52 来自手机 | 显示全部楼层
加密的也可以?        

出0入0汤圆

发表于 2013-9-27 18:55:47 来自手机 | 显示全部楼层
觉得IDA很好用。楼主可以考虑研究一下stm8或stm32反汇编软件,因为这俩单片机很火,以后反汇编需求定大。而且这软件目前还没,要么不能用。

出0入0汤圆

 楼主| 发表于 2013-9-27 19:01:20 | 显示全部楼层
xjavr 发表于 2013-9-27 15:53
没有跑OS,不过初始化文件是我自己写了一个压栈的操作。

PUSH DPL
PUSH DPH
RETI
这个组合跳转在V1.1中能识别了,但要求这三条指令连续,不够完美

其中的JMP @A+DPTR识别是静态逆向无能为力的了
例如1:
_07beh: MOV   R0     ,DPL            ;a8 82
        MOV   B      ,DPH            ;85 83 f0
        POP   DPH                    ;d0 83
        POP   DPL                    ;d0 82
        LCALL _07d5h                 ;12 07 d5
        LCALL _07d5h                 ;12 07 d5
        LCALL _07d5h                 ;12 07 d5
        LCALL _07d5h                 ;12 07 d5
        CLR   A                      ;e4
        JMP   @A+DPTR                ;73
例如2:
_082bh: MOVC  A      ,@A+DPTR        ;93
        MOV   R0     ,A              ;f8
        MOV   A      ,#001h          ;74 01
        MOVC  A      ,@A+DPTR        ;93
        MOV   DPL    ,A              ;f5 82
        MOV   DPH    ,R0             ;88 83
        CLR   A                      ;e4
        JMP   @A+DPTR                ;73
还是打算做个完全模拟51运行的逆向器,完美的51逆向,敬请期待吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-9-27 19:20:59 | 显示全部楼层
xuhai777 发表于 2013-9-27 19:01
PUSH DPL
PUSH DPH
RETI

要智能还是要进一步分析程序的意图,才能更好的区别是指令还是数据还是花指令。

出0入0汤圆

发表于 2013-9-27 19:50:58 | 显示全部楼层
关注发展

出0入0汤圆

发表于 2013-9-27 21:14:04 | 显示全部楼层
都是厉害的哇哇

出0入0汤圆

发表于 2013-9-28 08:16:55 | 显示全部楼层
可是03的中断向量也没识别嘛

出1000入0汤圆

发表于 2013-9-28 08:33:26 | 显示全部楼层
楼主厉害,感谢

出0入0汤圆

发表于 2013-9-28 10:20:18 | 显示全部楼层
做个记号留观

出0入0汤圆

发表于 2013-9-28 12:15:49 | 显示全部楼层
厉害。
曾经修改过其他人的bin文件,改过串口波特率。如果早有这个利器就好了

出0入0汤圆

发表于 2013-9-28 12:32:03 | 显示全部楼层
近期研究加密,有一定幫助,lz有破解加密嗎?
聽說有hex,stc51有id的,有人千多元可破解,真平宜

出0入13汤圆

发表于 2013-9-28 12:42:06 | 显示全部楼层
楼主牛啊,支持下

出0入0汤圆

发表于 2013-9-29 16:47:39 来自手机 | 显示全部楼层
楼主,牛人啊~~~~

出0入26汤圆

发表于 2013-9-29 21:55:38 | 显示全部楼层
正在学习逆向51单片机,谢谢楼主啊!

出0入0汤圆

发表于 2013-9-29 21:59:02 | 显示全部楼层
标记一下 ,留这以后用

出0入0汤圆

发表于 2013-9-29 22:37:20 | 显示全部楼层
看有些反汇编的论文,分析全局变量,局部变量的工具是存在的,基本就是反向出高级语言

出0入0汤圆

发表于 2013-10-1 17:49:01 | 显示全部楼层
都是牛人啊,关注发展

出0入0汤圆

发表于 2013-10-1 19:49:57 | 显示全部楼层
不错,以前反汇编用过  伟福的也不错,可以实现反汇编后再次编译

出0入0汤圆

发表于 2013-10-1 21:52:13 | 显示全部楼层
用IDA不是更好?

出0入0汤圆

发表于 2013-10-1 22:55:43 | 显示全部楼层
真不错,顶一个,支持一下

出0入0汤圆

发表于 2015-10-2 22:09:30 | 显示全部楼层
卧虎藏龙。

出0入0汤圆

发表于 2015-10-17 23:22:36 | 显示全部楼层
xuhai777 发表于 2013-9-27 19:01
PUSH DPL
PUSH DPH
RETI

楼主,51更高级的逆向升级了吗?如果升级了发给我一个喔。先谢了!

出0入0汤圆

发表于 2015-10-17 23:26:12 | 显示全部楼层
本帖最后由 风雨无阻88 于 2015-10-17 23:28 编辑
风雨无阻88 发表于 2015-10-17 23:22
楼主,51更高级的逆向升级了吗?如果升级了发给我一个喔。先谢了!  ...


我是你的粉丝喔! 试了下,你的比那个智能的好用喔!

出0入0汤圆

发表于 2015-10-18 01:12:53 来自手机 | 显示全部楼层
LS牛逼哦!   

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-26 00:54

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

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