部分代码如下:
.const
szHZ db 'txt',0
.code
LOCAL @hFindFile ;句柄
LOCAL @stFindFile:WIN32_FIND_DATA ;结构
LOCAL @szPath[MAX_PATH]:BYTE ;存放要查找的"路径\"
LOCAL @szCopyPath[MAX_PATH]:BYTE ;存放要复制的"路径\"
LOCAL @szSearch[MAX_PATH]:BYTE ;存放"路径\*.*"
LOCAL @szFindFile[MAX_PATH]:BYTE ;存放"路径\找到的文件"
LOCAL @szCopyFile[MAX_PATH]:BYTE ;存放"路径\要复制的文件"
.if @stFindFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ;判断是否为目录
.if @stFindFile.cFileName!='.'
invoke CreateDirectory,addr @szCopyFile,NULL ;建立个目录
invoke _FindFile,addr @szFindFile ;递归查找
.endif
.else
;>>>>>>>>>>>>>>>判断后缀>>>>>>>>>>>>>>>>>>
lea edi,@szFindFile
mov eax,sizeof @szFindFile
mov ecx,eax
add edi,eax
mov al,'.'
std
repne scasb
jnz nocopy
mov ecx,3
add edi,2
mov esi,offset szHZ
repe cmpsb
jnz nocopy
;>>>>>>>>>>>>>>>判断后缀>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>复制文件代码>>>>>>>>>>>>>>>>>>
具体复制的代码略
;>>>>>>>>>>>>>>>复制文件代码>>>>>>>>>>>>>>>>>>
nocopy:
invoke FindNextFile,@hFindFile,addr @stFindFile
.until eax==FALSE
invoke FindClose,@hFindFile
.endif
popad
ret
麻烦高人帮我看看关于判断后缀的部分的代码是否有误,去掉判断后缀就没问题了,加上的话就无法成功复制,建个目录后程序又退出了。我很郁闷
[课程]Android-CTF解题方法汇总!