根据易论坛“近在眼前”提供的易程序源码改编而成,这里表示感谢!


QQ性别修改器,可以修改性别为任意字符(不能超过2个字节)

代码:



;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;  Programmed by hacker0058, nohacks@126.com
;  Website: http://nohacks.ys168.com
;               QQ性别修改器 V1.0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 

.386 
.model flat,stdcall 
option casemap:none 

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        Include 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc 
include kernel32.inc 
include shell32.inc
include debug.inc
includelib kernel32.lib 
include user32.inc 
includelib user32.lib 
includelib shell32.lib

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        Equ 数据 RC资源
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


DLG_MAIN        equ             1000
IDC_EDT         equ             1001
IDC_IDOK        equ             1002


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

.data 


.data?

ls db 10 dup (?)

sextemp db 10 dup (?)

hInstance HINSTANCE ?  

.code 

;********************************************************************
_ProcDlgMain        proc        uses ebx edi esi, \
                hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD
                
                
                
     LOCAL hwnd,hwnd1,hwnd2,hwnd3,hwnd4,hwnd5,idx
              
        mov eax,wMsg
    
        cmp eax,WM_CLOSE
        je  boxClose
        cmp eax,WM_INITDIALOG
        je  boxStart
        cmp eax,WM_COMMAND
        je commoand
   
   retFalse:
           mov        eax,FALSE
           ret    
                  
   boxClose:
          invoke EndDialog,hWnd,NULL
          jmp retTrue
          
   boxStart:
          
              invoke SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE or SWP_NOSIZE ;窗口置顶
              jmp retTrue
                   
   commoand:
           mov eax,wParam
        
    .if eax == IDC_IDOK
          
           invoke  FindWindow,CTEXT("#32770"), CTEXT("QQ2007设置")
         
          .if eax==0
           
          invoke  FindWindow,CTEXT("#32770"), CTEXT("QQ2006设置")
           
          .endif
         
          
        .if eax!=0
           
             mov hwnd,eax
              
             invoke   FindWindowEx ,hwnd, 0, CTEXT("#32770"), 0
               
             mov hwnd1,eax
               
             invoke   FindWindowEx ,hwnd1, 0, CTEXT("#32770"), 0
                
              mov hwnd2,eax
                
             invoke    GetDlgItem ,hwnd2, 1356
                
              mov hwnd3,eax
               
             invoke    GetDlgItem ,hwnd2, 1345
                
             mov hwnd4,eax
               
             invoke    GetDlgItem ,hwnd1, 1343
               
              mov hwnd5,eax
             
              invoke SendMessage,hwnd3,32,0,0
              
              invoke GetDlgItemText,hWnd,IDC_EDT ,addr sextemp,10  ;取用户输入到文本
              
              invoke SendMessage,hwnd3,323,0, addr sextemp
              
              mov idx,eax
              
             invoke SendMessage,hwnd3,334,idx,0
             
             invoke   SendMessage ,hwnd4, 13, 10,addr ls
             
             invoke  SendMessage ,hwnd4, 12, 0, addr ls
             
             invoke SendMessage,hwnd5, 245, 0, 0

             jmp retTrue
             
             
          .else
        
      
          invoke MessageBox,0,CTEXT("请先打开QQ个人设置窗口!"),CTEXT("提示"),MB_OK  
        
      .endif  
             
  .endif
            
     retTrue:
        
           mov        eax,TRUE
           ret        

_ProcDlgMain        endp




;********************************************************************

start:
  invoke GetModuleHandle,NULL
  mov hInstance,eax
  invoke DialogBoxParam,eax,DLG_MAIN,NULL,offset _ProcDlgMain,0   ;显示对话框
  invoke ExitProcess,NULL

;********************************************************************

end        start