Skip to content

Commit 0cba75a

Browse files
author
yangzhao
committed
修复复制dylib 已存在失败问题
1 parent 7228935 commit 0cba75a

File tree

3 files changed

+33
-9
lines changed

3 files changed

+33
-9
lines changed

ifile.cpp

+26-3
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,37 @@ QFileInfoList GetFileList(QString path)
88

99
for(int i = 0; i != folder_list.size(); i++)
1010
{
11-
QString name = folder_list.at(i).absoluteFilePath();
12-
QFileInfoList child_file_list = GetFileList(name);
13-
file_list.append(child_file_list);
11+
QString name = folder_list.at(i).absoluteFilePath();
12+
QFileInfoList child_file_list = GetFileList(name);
13+
file_list.append(child_file_list);
1414
}
1515

1616
return file_list;
1717
}
1818

19+
bool CopyFileToPath(QString sourceDir ,QString toDir, bool coverFileIfExist){
20+
toDir.replace("\\","/");
21+
if (sourceDir == toDir){
22+
return true;
23+
}
24+
if (!QFile::exists(sourceDir)){
25+
return false;
26+
}
27+
QDir *createfile = new QDir;
28+
bool exist = createfile->exists(toDir);
29+
if (exist){
30+
if(coverFileIfExist){
31+
createfile->remove(toDir);
32+
}
33+
}//end if
34+
35+
if(!QFile::copy(sourceDir, toDir))
36+
{
37+
return false;
38+
}
39+
return true;
40+
}
41+
1942
IFile::IFile()
2043
{
2144

ifile.h

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
QFileInfoList GetFileList(QString path);
99

10+
bool CopyFileToPath(QString sourceDir ,QString toDir, bool coverFileIfExist);
11+
1012
class IFile
1113
{
1214
public:

signutil.cpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@ bool SignUtil::dylibInjection(QString dylibFilePath,QString machOFilePath,QStrin
55
QString dylibFileName=fileInfo.fileName();
66
fileInfo=QFileInfo(machOFilePath);
77
QString machOAbstractPath=fileInfo.absolutePath();
8-
QString cmd="cp \""+dylibFilePath+"\" \""+machOAbstractPath+"/"+dylibFileName+"\"";
9-
qDebug() << "执行命令:"+cmd;
10-
int flag=system(cmd.toLocal8Bit().data());
11-
if(flag!=0){
8+
9+
bool copyResult=CopyFileToPath(dylibFilePath,machOAbstractPath+"/"+dylibFileName,true);
10+
if(!copyResult){
1211
emit execPrint("植入代码迁移失败");
1312
return false;
1413
}
15-
cmd="chmod +x \""+machOFilePath+"\"";
14+
QString cmd="chmod +x \""+machOFilePath+"\"";
1615
qDebug() << "执行命令:"+cmd;
17-
flag=system(cmd.toLocal8Bit().data());
16+
int flag=system(cmd.toLocal8Bit().data());
1817
if(flag!=0){
1918
emit execPrint("签名失败!");
2019
return false;

0 commit comments

Comments
 (0)