回 帖 发 新 帖 刷新版面

主题:分析一段常用代码

分析一段常用代码

相关网站:http://edu.teamsourcing.com.cn

下面的几句代码,不论eax初始值 是多少,最后的结果是eax 的值为1。

   sbb eax,eax 
   sbb eax,0ffffffffh
   test eax,eax

这个在循环中比较有用,例如下面的一个函数中这段代码的用法。

FindWinExecStringInFile proc uses ebx esi edi

local @Buffer[1000h]:byte
local @NumberOfBytesRead:dword
local @hFile:dword

comment^
    只读方式打开ecx 参数传入的文件,如果打开失败,则返回0 ,退出
comment^
                push    0
                push    80h
                push    3
                push    0
                push    7
                push    80000000h
                push    ecx
                call    CreateFileA
                
                mov     @hFile, eax
                cmp     @hFile, 0FFFFFFFFh
                jz      short OpenFailed
                
comment^
     设置文件指针指向开始位置
comment^
                push    0
                push    0
                push    0
                push    @hFile
                call    SetFilePointer
                
comment^
     从文件中读取1000h字节内容到缓冲区中,读取失败,跳转,关闭文件,返回0,退出
comment^                
                lea     eax, @NumberOfBytesRead
                lea     ecx, @Buffer
                push    0
                push    eax
                push    1000h
                push    ecx
                push    @hFile
                call    ReadFile
                test    eax, eax
                jz      short ReadFailed
                
                xor     edi, edi

SerchTheFirstChar:        
comment^
     判断当前缓冲区中取出的字符是否是57h, 即 'W',如果不是则继续循环找.缓冲区大小共1000h,
     查找返回是edi从0到ff9h,因为"WinExec"自身长度是7。 
comment^                
                     
                mov     cl, [edi+@Buffer]
                lea     eax, [edi+@Buffer]
                cmp     cl, 57h               
                jnz     short GoOnSearch
                mov     esi, offset aWinexec
                
comment^
     找到开始的'W'字符后,开始比较两个字符串。 如果后续某个字符不相等,则继续寻找开始的'W'字符。
     如果后续buffer中取出的字符是结束符'\0'则结束循环,关闭文件,返回1,退出。
comment^       
CMPNEXTCHAR:                          
                mov     dl, [eax]
                mov     bl, [esi]
                mov     cl, dl
                cmp     dl, bl
                jnz     short NotEqual
                test    cl, cl
                jz      short CharEOF
                mov     dl, [eax+1]
                mov     bl, [esi+1]
                mov     cl, dl
                cmp     dl, bl
                jnz     short NotEqual
                add     eax, 2
                add     esi, 2
                test    cl, cl
                jnz     short CMPNEXTCHAR

CharEOF:                            
                xor     eax, eax
                jmp     short IsSerachOver
; ---------------------------------------------------------------------------

NotEqual:                            
               sbb     eax, eax
                sbb     eax, 0FFFFFFFFh

IsSerachOver:                            
                test    eax, eax
                jz      short SearchOver

GoOnSearch:                            
                inc     edi
                cmp     edi, 0FF9h
                jb      short SerchTheFirstChar

ReadFailed:                            
                push    @hFile
                call    CloseHandle

OpenFailed:                             
              
                xor     eax, eax
                ret
; ---------------------------------------------------------------------------

SearchOver:                            
                push    @hFile
                call    CloseHandle
                mov     eax, 1                         
                ret
FindWinExecStringInFile endp

相关网站:http://edu.teamsourcing.com.cn

回复列表 (共3个回复)

沙发

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

板凳

寻找一直寻找机会的人!
一个趋势中的趋势的项目!
一个直销和传销终结者的项目!
一个帮助普通创业者成功的项目!
   我们在互联网上正在拓展一个生意项目,现在正在寻求合作伙伴。我们认为成功的关键是你是什么人?还有你和谁在一起。我们在乎的是--您是否是有激情、有梦想的人。有意者请跟我们联系,我们和您谈谈,给您讲解一些生意概念,或许我们可以合作。一个集即时网游、交友,娱乐游戏,网络品牌代理商城,互联网平台项目招商进行中……详情QQ空间资料
网商咨询 摩客天宇QQ 909065437 

3 楼

寻找中国的最优秀的网商领袖精英  
当今世界正经历着全球经济一体化的大潮,中国本土企业也因此面临着前所未有的机遇与挑战。
在这场洗礼中,哪些互联网平台有能力成为世界级的电子商务平台?网商精英要怎样做,才能最终成长为世界级网商精英领袖?
淘宝商盟平台震撼登场,携手淘宝30万商家联盟购物商城。
平台刚刚启动,互联网的网商精英请咨询qq: 908889846 
占领市场第一先机,合力打造网商系统!
淘宝商盟官网   www.taobaosm.com
 http://blog.sina.com.cn/tbsm8
淘宝商盟奖励制度

我来回复

您尚未登录,请登录后再回复。点此登录或注册