首页
社区
课程
招聘
[旧帖] [已解决][求助]我用汇编写一个crackme的时候,获取不到字符串 0.00雪花
发表于: 2009-10-9 20:23 1430

[旧帖] [已解决][求助]我用汇编写一个crackme的时候,获取不到字符串 0.00雪花

2009-10-9 20:23
1430
下面是代码,运行后输入正确的注册码确还是弹出错误的对话筐。。用MessageBox弹出esi的内容是空..向各位请教。。谢谢

.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include                windows.inc
include                user32.inc
includelib        user32.lib
include                kernel32.inc
includelib        kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN        equ                1000h        ;图标
DLG_MAIN        equ                1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .data?

hInstance        dd                ?
lpBuf                        db 256 dup (?)
.const
szRight        db        'Congratulations',0
szErr                        db        'Please Try Again!',0
szSign                db '没用信息',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain        proc        uses ebx edi esi hWnd,wMsg,wParam,lParam

                mov        eax,wMsg
                .if        eax == WM_CLOSE
                        invoke        EndDialog,hWnd,NULL
                .elseif        eax == WM_INITDIALOG
                        invoke        LoadIcon,hInstance,ICO_MAIN
                        invoke        SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
                        invoke   SetDlgItemText,hWnd,11,offset szSign
                .elseif        eax == WM_COMMAND
                        mov        eax,wParam
                        .if        ax == IDOK
                                invoke        GetDlgItemInt,hWnd,107,NULL,FALSE
                                mov ebx,12345678
                                mov esi,offset lpBuf
                                .if        ebx==DWORD ptr [esi]
                                       
                                        invoke        MessageBox,NULL,offset szRight,offset szSign,MB_OK ;这里永远执行不到
                                .else               
                                        ;invoke MessageBox,NULL,DWORD PTR[esi],offset szSign,MB_OK  ;这是测试用的弹出空对话框
                                        invoke        MessageBox,NULL,offset szErr,offset szSign,MB_OK  ;无论输入的注册码正确与否,都会运行到这里
;
                                .endif
                        .endif
                .else
                        mov        eax,FALSE
                        ret
                .endif
                mov        eax,TRUE
                ret

_ProcDlgMain        endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
                invoke        GetModuleHandle,NULL
               
                mov        hInstance,eax
                invoke        DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
                invoke        ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                end        start

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
2
invoke  GetDlgItemInt,hWnd,107,NULL,FALSE
        mov ebx,12345678
        mov esi,offset lpBuf
        .if  ebx==DWORD ptr [esi]
这里错了,你原意是当输入12345678的时候就正确?
那应该是:invoke  GetDlgItemInt,hWnd,107,NULL,FALSE
               mov ebx,12345678
               .if  ebx==eax
2009-10-10 18:14
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢moonife 版主的指点。。问题已解决
2009-10-11 22:00
0
游客
登录 | 注册 方可回帖
返回
//