打印

**别人的东西还是很好玩滴~

[复制链接]
29547|156
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2007-11-9 00:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有关编程用汇编还是C/C++的争论很多,但俺觉得必须有点汇编的功底.

这样才能更好地编写程序,尤其是小容量的MCU程序.

俺并不是鼓励反汇编,更不是祝这样的人来窃取别人的程序.

俺在网上破的反汇编程序也很多了,但俺真的去"偷"吗???

NO,也不NO~~~

俺只是用此来锻炼俺的大脑来"猜"别人的脑浆~~~

这就是俺人老脑不老的原因之一吧~~~

为何不发布此倒塌一切51的反汇编软件呢???

哈哈,俺不想用它来"危害社会治安"~~~

但俺反汇编不是什么"见不得人的东西"~~~而是一种"另类的学习方法"~~~
相关链接:http://www.**/blog/hotpower/58199/message.aspx

相关帖子

沙发
hotpower|  楼主 | 2007-11-9 00:37 | 只看该作者

沙发~~~

虽然现在很少用汇编,并且几乎不用51系列了,但它给俺打下了MCU深厚的"水底"~~~
相关链接:http://www.**/blog/hotpower/58199/message.aspx

使用特权

评论回复
板凳
chunyang| | 2007-11-9 01:57 | 只看该作者

呵呵,想起当年一个哥们反汇编了SK

    SK(Sidekick)老hot肯定是有印象的,1980S后期著名的PC平台常驻内存工具程序,当年国内还没有任何实用的常驻内存程序的编写资料,那个哥们用了近半年的时间仔细分析了超过10万行的反汇编代码,楞是搞清了DOS下常驻内存程序的机制,然后正赶上首款PC病毒——“小球”的出现,这个哥们立刻写了一个常驻内存的杀毒程序,可以发现并删除内存/磁盘上的病毒代码,算是国内最早的一批杀毒软件了,其机制颇类似现在的“防火墙”比同期出现的固态杀毒程序高明,校计算中心的所有PC都安装了该软件,后来还升级了对“**”病毒的反制功能。
    可惜,我的这个哥们后来为情所困,没有再往软件业发展,倒是他的死Dang得了他的真传,跑到金山混的不错,据说是骨干,只是不知现在是否还在,如果还在的话,凭其年资就不得了。

使用特权

评论回复
地板
hotpower|  楼主 | 2007-11-9 02:27 | 只看该作者

哈哈~~~当年俺也喜欢这一手~~~

DOS启动自动查杀**病毒,再用16个字节常住内存阻止病毒攻击硬盘主引导扇区,阻止对硬盘的格式化.

哈哈~~~那时攻击硬盘主引导扇区像玩一样~~~

后来不玩了,也不敢玩这些了~~~

那时用PCTOOLS和DEBUG真是"无所不能"...

直接写屏,鼠标程序都是自己编写,速度真快~~~

现在单位的foxprox还是用ucdos,自己编写的菜单制作程序,直接访问fox数据库.
现在还在用,比windows快多了~~~鼠标+键盘+菜单+数据库+并口+串口.

虽然系统也升级到xp了,但是DOS的优点还是很多的~~~

反汇编很锻炼人的反应能力,它时刻让你猜出作者的心思...

从中看出他的诡计和不足~~~

现在大家都害怕被人"盗版",俺认为被人盗是好事~~~

这说明你编的程序好~~~

如果被人反汇编了,并在无硬件或功能说明下被人猜到了,那就说明你自己的不足了~~~需要继续努力~~~

反汇编可以看出程序运行的效率,可以看出你程序框架的好坏,也能更好地找出
C语言不能察觉到的bug!!!

一般说C语言不用关心硬件,但反汇编后很容易分析出时序的出问题所在.

为什么好的调试环境都会有反汇编窗口呢???

道理不说自明~~~

使用特权

评论回复
5
hotpower|  楼主 | 2007-11-9 02:40 | 只看该作者

哈哈~~~庆幸自己早脱离了那个"魔圈"~~~

现在真的很庆幸自己当年退出PC软件的举动~~~

那是美国佬上门找事后明智的决定~~~

虽然俺现在很贫穷,但俺没"做梦带手铐"

使用特权

评论回复
6
chunyang| | 2007-11-9 02:56 | 只看该作者

怎么,老hot竟然被人“上门找事”啦?

使用特权

评论回复
7
hotpower|  楼主 | 2007-11-9 03:07 | 只看该作者

哈哈~~~不提当年...低头做人便是---从不做违法的事情~~~

不过反汇编确实能提高自己,这就是俺发此贴的一个原因所在~~~

在就是这小子的文言文逗得俺再帮他玩玩~~~

我的邮箱里要求反汇编的人真不少...这个俺例外了...

使用特权

评论回复
8
qiushui007| | 2007-11-9 08:34 | 只看该作者

支持汇编

小容量的MCU只能用汇编. 

使用特权

评论回复
9
fsaok| | 2007-11-9 08:35 | 只看该作者

反汇编

谈起反汇编,最好提一下当年的debug,

在单板机的年代,我还曾经用汇编写过一个反汇编的程序,

后来在PC上,我用debug去反汇编过不少程序,**最深的,可能是ccdos的内核,尤其是打印驱动这部分,当时很多都是用汇编写的,其中有很多bug,所以我反汇编后,然后修改成新的程序。

我记得最早采用C语言写打印机驱动的,是长城CCDOS的24针驱动,

当然,我还反汇编过很多程序,比如是 BASIC 解释器,汇编的编译器等,从中学到不少的知识。

反汇编曾经让我乐此不倦。

真是 十年一觉汇编梦,在做了十多年的反汇编后,我才悟出,只有自己写的程序,而不是逆向工程,才可以很随意地加入自己的创意。

使用特权

评论回复
10
gyt| | 2007-11-9 10:12 | 只看该作者

很有兴趣

使用特权

评论回复
11
程序匠人| | 2007-11-9 10:25 | 只看该作者

呵呵,匠人最近忙,什么都没看见

使用特权

评论回复
12
john_light| | 2007-11-9 11:29 | 只看该作者

谁也没看见我发的帖

反汇编大多和**有关,所以这东西大都捂着。

使用特权

评论回复
13
HWM| | 2007-11-9 11:31 | 只看该作者

反汇编者“反”汇编。呵呵

使用特权

评论回复
14
古道热肠| | 2007-11-9 12:15 | 只看该作者

当年也玩过反汇编

  没有玩大家这么深,有个软件用加密软盘做加密,这加密软盘无法复制。DOS下跑了个Soft Ice ,一跟踪就找到的软件中加密的关键程序段,也就几页纸的PC汇编代码,用uEDIT只改了一条汇编指令,这软件认密码盘的操作被屏蔽掉了,后来细心研究了一下这加密机制,利用DOS的INT13功能做出n个完全兼容的加密盘来。
  当年拿老板工资,被逼无奈干此事,现在不感兴趣了,还是自己写东西过瘾。

使用特权

评论回复
15
hotpower|  楼主 | 2007-11-9 13:13 | 只看该作者

哈哈~~~匠人JJ迷糊了~~~

使用特权

评论回复
16
孤独泪| | 2007-11-9 17:24 | 只看该作者

如果不迷糊,你们这类大虾不经常来光顾

那些小虾米来就没有意思了

使用特权

评论回复
17
wolfererer| | 2007-11-9 21:31 | 只看该作者

高手就是高手~

感觉看反汇编就是难,几个标志位就能把人搞晕

不得不佩服此道高人


谁都知道hotpower大叔藏有一宝
所以难免前来拜见的人也就多了

使用特权

评论回复
18
58741| | 2007-11-9 22:22 | 只看该作者

??

偶想弱弱的问一句,汇编和反汇编不是一样的语言吗?如露怯勿笑

使用特权

评论回复
19
hotpower|  楼主 | 2007-11-9 22:32 | 只看该作者

很经典的W77E58P串口反汇编程序注解及图示

;;;;串口中断服务子程序;;;;;;;;;;;;;;
L76B4:    
    PUSH  PSW;保护现场
    PUSH  ACC
    PUSH  DPL
    PUSH  DPH
    PUSH  B
    SETB  RS1
    CLR   RS0;选择第1组寄存器组,这样可以不保护08H~0FH,R0~R7=08H~0FH
    JNB   TI,L76D9;不是发送中断
;;;;串口发送中断服务子程序;;;;;;;;;;;
    CLR   TI;清除发送中断标志
    INC   R1;移动发送缓冲区指针
;;;;串口发送中断越界判断;;;;;;;;;;;
    MOV   A,R0;发送缓冲区尾指针
    MOV   B,R1;当前发送缓冲区指针
    CJNE  A,B,L76D1;发送缓冲区未满继续
    LJMP  L76D9;发送缓冲区已满退出(估计要丢数据~~~应该做成滚筒式的)
L76D1:    
    MOV   DPL,R1;当前发送缓冲区低8位地址
    MOV   DPH,#021H;发送缓冲区高8位固定地址
    MOVX  A,@DPTR;从发送缓冲区中取出数据
    MOV   SBUF,A;通过串口硬件模块发送数据
L76D9:    
    JNB   RI,L76E9;不是接收中断
;;;;串口接收中断服务子程序;;;;;;;;;;;
    CLR   RI;清除接收中断标志
    MOV   R6,#002H;设置接收中断软件标志,表示刚收到过数据
    MOV   A,SBUF;通过串口硬件模块接收数据
    MOV   DPL,R2;当前接收缓冲区低8位地址
    MOV   DPH,#020H;接收缓冲区高8位固定地址(估计为256个字节,应该是滚筒式的)
    MOVX  @DPTR,A;保存到接收缓冲区
    INC   R2;移动接收缓冲区指针
L76E9:;总之该汇编串口接收发送中断服务程序写得非常不错,应该表扬~~~
    POP   B;恢复现场
    POP   DPH
    POP   DPL
    POP   ACC
    POP   PSW
    RETI;中断返回

使用特权

评论回复
20
hotpower|  楼主 | 2007-11-9 22:34 | 只看该作者

很经典的P89V58RD2串口反汇编程序注解及图示

;;;;串口中断服务子程序;;;;;;;;;;;;;;
L4E60:    
    PUSH  PSW;保护现场
    PUSH  ACC
    PUSH  DPL
    PUSH  DPH
    PUSH  B
    SETB  RS1
    CLR   RS0;选择第1组寄存器组,这样可以不保护08H~0FH,R0~R7=08H~0FH
    JNB   TI,L4E8E;不是发送中断
;;;;串口发送中断服务子程序;;;;;;;;;;;
    CLR   TI;清除发送中断标志
;;;;串口发送中断空(R4=1为空)判断;;;;;;;;;;;
    DJNZ  R4,L4E78;发送缓冲区未满继续(最大256个字节)
    LJMP  L4E8E;发送缓冲区已满退出(估计要丢数据~~~应该做成滚筒式的)
L4E78:    
    MOV   DPL,R0;当前发送缓冲区低8位地址
    MOV   DPH,R1;发送缓冲区高8位地址
    MOVX  A,@DPTR;从发送缓冲区中取出数据
    INC   DPTR;移动发送缓冲区指针
    MOV   SBUF,A;通过串口硬件模块发送数据
    MOV   R0,DPL;保存发送缓冲区低8位地址
    MOV   R1,DPH;保存发送缓冲区高8位地址
;;;;串口发送中断缓冲区越界判断;;;;;;;;;;;
    MOV   A,R1
    CJNE  A,#03FH,L4E8E;串口发送中断缓冲区未越界
;;;;越界处理;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    MOV   R0,#000H;发送缓冲区头低8位地址
    MOV   R1,#03EH;发送缓冲区头高8位地址(3E00H~3EFEH共255个字节缓冲区)
    MOV   R4,#001H;越界标志(发送缓冲区已满)
L4E8E:    
    JNB   RI,L4EAA;不是接收中断
    CLR   RI;清除接收中断标志
    MOV   A,SBUF;通过串口硬件模块接收数据
    MOV   DPL,R2;当前接收缓冲区低8位地址
    MOV   DPH,R3;当前接收缓冲区高8位地址
    MOV   R7,#003H;设置接收中断软件标志,表示刚收到过数据
;;;;终止或特殊字符判断;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    CJNE  A,#07EH,L4E9F;不为终止或特殊字符7EH
    INC   R5;找到1个终止或特殊字符,记录次数
L4E9F:    
    MOVX  @DPTR,A;保存到接收缓冲区
    INC   DPTR;移动接收缓冲区指针
    LCALL S4EB5;DPH=3CH或3DH
    CLR   A;零标志表示已经存入数据???
    MOVX  @DPTR,A;????估计是软件握手之类或标志等
    MOV   R2,DPL;保存接收缓冲区低8位地址
    MOV   R3,DPH;保存接收缓冲区高8位地址
L4EAA:;总之该汇编串口接收发送中断服务程序写得非常不错,应该表扬~~~    
    POP   B;恢复现场
    POP   DPH
    POP   DPL
    POP   ACC
    POP   PSW
    RETI  
;;;;DPH=3CH或3DH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
S4EB5:    
    PUSH  ACC
    MOV   A,DPH
    ANL   A,#001H
    ORL   A,#03CH
    MOV   DPH,A
    POP   ACC
    RET   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1538

主题

21697

帖子

505

粉丝