📄 apilist.asm
字号:
invoke keybd_event,VK_BACK,0ffh,KEYEVENTF_EXTENDEDKEY,0
invoke keybd_event,VK_BACK,0ffh,KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP,0
lodsb
.endw
mov BYTE ptr ItemBuffer,0
invoke OpenClipboard,hWnd
invoke EmptyClipboard
invoke GlobalAlloc,GMEM_MOVEABLE,256
push eax
mov eax,[eax]
invoke lstrcpy,eax,addr ItemBuffer+128
invoke SetClipboardData,CF_TEXT,[esp]
invoke CloseClipboard
call GlobalFree
invoke keybd_event,VK_CONTROL,0ffh,KEYEVENTF_EXTENDEDKEY,0
invoke keybd_event,VK_V,0ffh,KEYEVENTF_EXTENDEDKEY ,0
invoke keybd_event,VK_V,0ffh,KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP,0
invoke keybd_event,VK_CONTROL,0ffh,KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP,0
pop ecx
pop eax
.if eax == 0
mov byte ptr ItemBuffer+128[ecx],0
.endif
mov nfor,0
.if BYTE ptr ItemBuffer+128 == ' '
popad
xor eax,eax
ret
.endif
invoke GetApi
mov nfor,0
call SetPos
invoke ShowWindow,m_Edit,SW_SHOWNOACTIVATE
invoke ShowWindow,hWnd,SW_HIDE
; invoke GetSystemMetrics,SM_CXSCREEN
.elseif al == 0dh
invoke ShowWindow,m_Edit,SW_HIDE
invoke ShowWindow,hWnd,SW_HIDE
mov nfor,0
.elseif al == 08h
.if nfor != 0
dec nfor
mov ebx,nfor
mov BYTE ptr ItemBuffer[ebx],0
.endif
.elseif al == '.'
.if strfor != 0
invoke keybd_event,VK_BACK,0ffh,KEYEVENTF_EXTENDEDKEY,0
invoke keybd_event,VK_BACK,0ffh,KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP,0
.endif
inc strfor
invoke CreateFile,addr TempData,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
MOV nfile,eax
invoke ReadFile,nfile,addr structends,4,addr br,NULL
mov ecx,DWORD ptr structends
sub ecx,strfor
.if ecx == -1
xor ecx,ecx
mov strfor,0
.endif
inc ecx
.while ecx != 0
push ecx
invoke ReadFile,nfile,addr structends,4,addr br,NULL
invoke ReadFile,nfile,addr structends,DWORD ptr structends,addr br,NULL
mov eax,br
add eax,offset structends
mov BYTE ptr [eax],0
pop ecx
dec ecx
.endw
invoke SendMessage,m_Edit,WM_SETTEXT,4096,ADDR structends
invoke CloseHandle,nfile
call SetPos
invoke ShowWindow,m_Edit,SW_SHOWNOACTIVATE
.elseif al == ',' || al == '(' || al == ':' || al == 09h || al== '='
mov nfor,0
mov BYTE ptr ItemBuffer,0
invoke SendMessage,m_Edit,WM_SETTEXT,4096,addr ApiReset
call SetPos
.elseif al > 48 && al<127
mov strfor,0
mov ebx,nfor
mov BYTE ptr ItemBuffer[ebx],al
mov BYTE ptr ItemBuffer[ebx+1],0
inc nfor
mov eax,po.y
.if eax > ScreenSize.y
sub eax,150
.else
add eax,24
.endif
invoke SetWindowPos,hWnd,0,500,eax,0,0,SWP_NOACTIVATE +SWP_NOSIZE
call SetPos
invoke ShowWindow,hWnd,SW_SHOWNOACTIVATE
.else
call SetPos
invoke ShowWindow,hWnd,SW_HIDE
.endif
invoke SendMessage,hWnd,LB_FINDSTRING,0,addr ItemBuffer
inc eax
.if eax != 0
dec eax
.endif
invoke SendMessage,hWnd,LB_SETTOPINDEX,eax,0
.endif
assume ebx:nothing
.endif
@ret:
popad
xor eax,eax
ret
SetPos:
invoke SendMessage,m_Edit,EM_GETLINECOUNT,0,0
push eax
xor edx,edx
mov eax,ScreenSize.x
mov bx,6
div bx
mov dx,ax
dec dx
xor ecx,ecx
xor ebx,ebx
.while ecx != [esp]
push ecx
mov WORD ptr ItemBuffer+128,dx
invoke SendMessage,m_Edit,EM_GETLINE,ecx,addr ItemBuffer+128
.if ebx < eax
mov ebx,eax
.endif
pop ecx
inc ecx
.endw
pop eax
imul ebx,ebx,6
add ebx,4
imul eax,eax,14
.if eax > ScreenSize.y
mov eax,ScreenSize.y
.endif
mov ecx,ScreenSize.y
.if po.y > ecx
sub po.y,eax
sub po.y,24
.else
add po.y,24
.endif
invoke MoveWindow,m_Edit,0,po.y,ebx,eax,TRUE
db 0c3h
HookProc endp
GetApi proc
pushad
invoke lstrlen,addr ItemBuffer+129
push eax
invoke GlobalAlloc,GMEM_MOVEABLE,65540
push eax
invoke GlobalLock,eax
mov ebx,eax
invoke CreateFile,ADDR WinDat,080000000h,03,
0,03,80,NULL
mov nfile,eax
.while eax != -1
invoke ReadFile,nfile,ebx,65536,addr br,NULL
mov edi,ebx
mov ecx,br
.if br == 65536
sub ecx,4096
mov br,ecx
.endif
lea esi,ItemBuffer+128
lodsb
CmpLoop1:
repne scasb
.if ecx != 0
push edi
push esi
push ecx
.if BYTE ptr [edi-2] == 0ah
mov ecx,[esp+16]
inc ecx
repz cmpsb
.if ecx == 0
dec edi
.if DWORD ptr [edi+1] == 'URTS' || DWORD ptr [edi+1] == 'urts'
mov ecx,edi
sub ecx,[esp+16]
dec ecx
push ecx
mov ecx,4096
.while ecx != 0
CmpLoop2:
repne scasb
lea esi,ItemBuffer+129
push edi
push esi
push ecx
mov ecx,[esp+32]
repz cmpsb
.if ecx == 0
mov al,0ah
mov ecx,4096
repnz scasb
mov WORD ptr [edi-2],0
add esp,12
pop edi
add esp,12
invoke SetWindowText,m_Edit,edi
invoke lstrcpy,ADDR structends,edi
invoke CreateFile,addr TempData,GENERIC_READ + GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
MOV nfile,eax
mov strfor,0
invoke ReadFile,nfile,addr strfor,4,addr br,NULL
inc strfor
invoke SetFilePointer,nfile,0,NULL,FILE_BEGIN
invoke WriteFile,nfile,addr strfor,4,addr br,NULL
mov strfor,0
invoke SetFilePointer,nfile,0,NULL,FILE_END
invoke lstrlen,edi
push eax
mov ecx,esp
invoke WriteFile,nfile,ecx,4,addr br,NULL
pop eax
invoke WriteFile,nfile,edi,eax,addr br,NULL
invoke CloseHandle,nfile
xor ebx,ebx
jmp retview1
.endif
pop ecx
pop esi
pop edi
jmp CmpLoop2
.endw
.elseif BYTE ptr [edi] == ' ' || BYTE ptr [edi] == 09h
sub edi,[esp+16]
dec edi
push edi
mov ecx,4096
mov al,0dh
repnz scasb
mov BYTE ptr [edi-1],0
pop edi
add esp,12
invoke SetWindowText,m_Edit,edi
xor ebx,ebx
jmp retview1
.endif
.endif
@not:
.endif
pop ecx
pop esi
pop edi
jmp CmpLoop1
.endif
.if br == 65536-4096
mov eax,br
add nfor,eax
invoke SetFilePointer,nfile,nfor,NULL,FILE_BEGIN
.else
retview1:
mov eax,-1
.endif
.endw
invoke CloseHandle,nfile
mov nfor,0
or ebx,ebx
jz retview2
invoke CreateFile,ADDR ApiIfo,080000000h,03,
0,03,80,NULL
mov nfile,eax
.while eax != -1
invoke ReadFile,nfile,ebx,65536,addr br,NULL
mov edi,ebx
mov ecx,br
.if br == 65536
sub ecx,4096
mov br,ecx
.endif
lea esi,ItemBuffer+128
lodsb
CmpLoop:
repne scasb
.if ecx != 0
push edi
push esi
push ecx
.if BYTE ptr [edi-2] < 34 || BYTE ptr [edi-2] >126
mov ecx,[esp+16]
inc ecx
repz cmpsb
.if ecx == 0
dec edi
.if BYTE ptr [edi] == '(' || BYTE ptr [edi] == ' ' || WORD ptr [edi] == '(A' || WORD ptr [edi] == ' A' || byte ptr [edi] == 0dh
mov esi,edi
.while eax != 0
lodsb
.if al == '('
jmp CmpCur
.endif
.if al>34 && al<126 && al != 'A'
pop ecx
pop esi
pop edi
jmp CmpLoop
.endif
.endw
CmpCur:
mov al,';'
mov ecx,4096
repnz scasb
mov word ptr [edi],0
push edi
dec edi
dec edi
std
mov ecx,4096
repnz scasb
cld
inc edi
inc edi
inc edi
inc edi
pop eax
sub eax,edi
add esp,12
invoke SetWindowText,m_Edit,edi
invoke lstrcpy,ADDR ApiReset,edi
jmp retview
.else
pop ecx
pop esi
pop edi
jmp CmpLoop
.endif
.endif
.endif
pop ecx
pop esi
pop edi
jmp CmpLoop
.endif
.if br == 65536-4096
mov eax,br
add nfor,eax
invoke SetFilePointer,nfile,nfor,NULL,FILE_BEGIN
.else
retview:
mov eax,-1
.endif
.endw
retview2:
call GlobalFree
pop eax
invoke CloseHandle,nfile
popad
ret
GetApi endp
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -