打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

在软件分析过程中,为了优化原程序或在一定空间里增添代码,需要一定的指令修改技巧,如下:
 
---------------------------------------------------------------------------------------------
 功能                       指令                         机器码             指令长度(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个字节。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ftofficer|张聪的blog ? CALL指令有多少种写法
Softice使用方法和技巧
lea指令与mov指令
NOP 指令作用
詳談 HOOK API 的技術
单片机学习知识点全攻略
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服