注册 登录
编程论坛 汇编论坛

一个数组赋值的问题

obstratiker 发布于 2011-10-13 21:18, 586 次点击
对于这个我老郁闷了,我要读一段内存,然后把和 value 的值相同的内存地址放入数组 Find 中,代码如下
.data
    Find    db    4096*4 dup(0)
.code

.......
_Find    proc
    local    @Buf[5000]:BYTE
    local    @buffer[256]:BYTE
   
        mov       Base,00401000h
        .while    Base < 007fffffh
            invoke    ReadProcessMemory,NULL,Base,addr @Buf,4096,NULL
            .if    eax
                mov    i,0
                .while i < 4096
                    mov    ebx,i
                    mov    dx,value
                    .if    WORD ptr @Buf[ebx] == dx
                        mov        ecx,i
                        add        ecx,Base
                        mov        DWORD ptr Find[ebx*4],ecx                                             ;在这把地址放进去
                        invoke    wsprintf,addr @buffer,addr szMemory,ecx,value                          ;szMemory的格式是 '地址%08x  值%d'
                        invoke    SendDlgItemMessage,hWinMain,IDC_LISTBOX,LB_ADDSTRING,0,addr @buffer    ;这是列表框,把符合的结果写入
                    .endif
                    inc     i
                .endw
            .endif
            mov    eax,Base
            add    eax,4096
            mov    Base,eax
        .endw



结果非常郁闷,Find 中的值始终为零,比如我在后面希望将存入的地址写在另一个列表框上
                        mov    i,0
                        mov    ebx,i
                        .while    DWORD ptr Find[ebx*4] != 0            
                            invoke    wsprintf,addr @buffer,addr szMemory,DWORD ptr Find[ebx*4],value
                            invoke    SendDlgItemMessage,hWinMain,IDC_LISTBOX2,LB_ADDSTRING,0,addr @buffer
                            inc        i
                            mov        ebx,i
                        .endw
完全不行啊……真是弄得我不得其解,求高手赐教
0 回复
1