⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apilist.asm

📁 APilist
💻 ASM
📖 第 1 页 / 共 2 页
字号:
						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 + -