首页
社区
课程
招聘
[求助]帮忙解析一下
发表于: 2009-2-17 16:52 2712

[求助]帮忙解析一下

2009-2-17 16:52
2712
请看:
==================================
_SendtoNotepad        proc        _lpsz
                local        @hWinNotepad

                pushad
                invoke        FindWindow,addr szDestClass,NULL
                .if        eax
                        mov        ecx,eax
                        invoke        ChildWindowFromPoint,ecx,20,20
                .endif
                .if        eax
                        mov        @hWinNotepad,eax
                        mov        esi,_lpsz
                        @@:
                        lodsb
                        or        al,al
                        jz        @F
                        movzx        eax,al
                        invoke        PostMessage,@hWinNotepad,WM_CHAR,eax,1
                        jmp        @B
                        @@:
                .endif
                popad
                ret

_SendtoNotepad        endp
======================================================
能不能逐句逐句帮我解析一下,我没有一个看得懂的。。。。不知道什么意思。
特别是lodsb的用法。莫名其妙的感觉》》谢谢了

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
如果你连基本的指令都不明白,应该先看一下指令的说明,在汇编器的帮助文件中会有。

这段代码仅是三个API的使用而已,用C简单描述就是这样的(注意,变量等不是精确的对应关系,仅说明代码流程)

hWnd = FindWindow( NOTEPADCLASS, NULL);//查找记事本的窗口
if ( hWnd)
{
  hWnd=ChildWindowFromPoint(hWnd,0x20,0x20);  //查找词本的主窗口上的RichEdit控件,即编辑区域
}

if ( hWnd )
{
while ( _lpzs[0] != '\0')
{
  PostMessage(hWnd,WM_CHAR,(*_lpzs),1);
++_lpzs;
}

注:

lodsb指令是“串操作”指令,lod 代表 load, s 代表 string,b 代表 byte。

所执行的操作就是  al <- byte ptr [esi];  esi <- esi + 1;
2009-2-17 19:37
0
游客
登录 | 注册 方可回帖
返回
//