通达信软件指令修改技巧之浅谈

阅读 作者:股海网时间 2013-04-14 股软教程

通达信软件指令修改技巧之浅谈

在软件分析过程中,为了优化原程序或在一定空间里增添代码,需要一定的指令修改技巧,如下:
 
---------------------------------------------------------------------------------------------
 功能                       指令                         机器码             指令长度(bytes)
 ---------------------------------------------------------------------------------------------
 替换1个字节                 nop                          90                               1
 ---------------------------------------------------------------------------------------------
                           nop                          90                               1
                            nop                          90                               1
                           ------------------------------------------------------------------
                           mov edi,edi                  8B FF                            2
                           ------------------------------------------------------------------
替换2个字节                 push eax                      50                              1
                            pop eax                       58                              1
                            ------------------------------------------------------------------
                            inc eax                       40                              1
                            dec eax                       48                              1
                            ------------------------------------------------------------------
                            jmp xx                        eb00                            2
 ---------------------------------------------------------------------------------------------
                            mov eax,00000000h             B8 00 00 00 00                  5
                            ------------------------------------------------------------------
 寄存器清零                  push 0                         6A 00                          2
                            pop eax                        58                             1
                            ------------------------------------------------------------------
                            sub eax,eax/xor eax,eax        2B C0/33 C0                    2
 ---------------------------------------------------------------------------------------------
                           cmp eax,00000000h               83 F8 00                      3
                            je _label_                      74xx/0F84xxxxxxxx             2/6
 测试寄存器是否为零           ------------------------------------------------------------------
                            or eax,eax/test eax,eax         0B C0/85 C0                   2
                            je _label_                      74xx/0F84xxxxxxxx             2/6
 ---------------------------------------------------------------------------------------------
                           mov eax,0ffffffffh              B8 FF FF FF FF                5                        
                           ------------------------------------------------------------------                      
                            xor eax,eax/sub eax,eax         33 C0/2B C0                   2       
                            dec eax                         48                            1
 置寄存器为0FFFFFFFFh        -------------------------------------------------------------------
                            Stc                              F9                           1
                            sbb eax,eax                     2B C0                         2
 ---------------------------------------------------------------------------------------------
                           jmp _label_                     EBxx/E9xxxxxxxx               2/5
 转移指令                    ------------------------------------------------------------------
                            push _label_                    68 xx xx xx xx                5
                            ret                             C3                            1
 ---------------------------------------------------------------------------------------------
很多指令针对eax被做了优化,要尽可能多地使用eax。例如,“xchg eax,eax”只需要1个字节,而用其他寄存器则需要2个字节。
 

上传会员: 
股海网
上传时间: 
2013-04-14
下载积分: 
-
免责申明: 
请仔细阅读并同意后才能下载
本附件为论坛用户分享上传,股海网没有对文件进行验证,不能保证下载资源的准确性、安全性和完整性,也不保证下载资源能正常安装和使用,且下载后扣除的积分无法退还,除非您充分理解并完全接受本声明,否则您无权下载。
本站对提供下载的软件、指标、资料等不拥有任何权利,其版权归该下载资源的合法拥有者所有。本附件仅供学习和研究,不得用于商业或非法用途,如有侵犯您的版权,请参看 《侵权处理流程》《免责声明条款》
点击下载无反应时,更换手机自带浏览器重登录操作,如华为浏览器,苹果Safari浏览器,第三方浏览器有不兼容现象,或先收藏再到电脑端下载
同意以上声明才能下载,扣除积分无法退还!
我已知晓! 点我同意 所有条款自愿下载!
如有问题请点关闭提交问题反馈→
关闭
收藏
全部评论共 0 条

问题反馈 取消