Beispiel #1
0
int main(int argc, char *argv[]) {
	StringList excludeGlobalFunctions;
	StringList luaFiles;
	std::string globalExcludeFunctionFileName;
	std::string tocFileName;
	std::string addonDir;
	stObfuscatorSetting settings;

	srand(static_cast<unsigned int>(time(NULL)));

	parseArguments(argc, argv, tocFileName, addonDir, globalExcludeFunctionFileName, luaFiles, settings);

	print("Addon dir: %s\n", addonDir.c_str());
	print("Work dir: %s\n", getWorkDir());

	LuaObfuscator::readAddonGlobalExcludeFunctions(globalExcludeFunctionFileName.c_str(), excludeGlobalFunctions);

	LuaObfuscator::readAddonTocFile(tocFileName.c_str(), luaFiles);

	// add absolute path name, if need
	//validateFileNames(luaFiles, addonDir.c_str());

	if (luaFiles.empty()) {
		printHelp();
		printf("\nNo a files for an obfuscating\n");
		return -1;
	}

	try {
		LuaObfuscator obfuscator(luaFiles, excludeGlobalFunctions, addonDir);

		print("create bak file:        %d\n", settings.bCreateBakFile);
		print("create one file:        %d\n", settings.bCreateOneFile);
		print("obfuscate const int:    %d\n", settings.ObfuscateConstInt);
		print("obfuscate const float:  %d\n", settings.ObfuscateConstFloat);
		print("obfuscate const string: %d\n", settings.ObfuscateConstString);
		print("obfuscate local vars:   %d\n", settings.ObfuscateLocalVasAndParam);
		print("obfuscate global fucntions: %d\n", settings.ObfuscateGlobalFunctionName);

		obfuscator.obfuscate(settings);
	}
	catch (std::exception) {
		print("ERROR: obfuscator creating fail\n");
	}

#ifdef _DEBUG
	getchar();
#endif

	return 0;
}
Beispiel #2
0
void validateFileNames(StringList &luaFiles, const char *szAddonDir = NULL) {
	StringListIter iter = luaFiles.begin();

	if (!szAddonDir || !szAddonDir[0])
		szAddonDir = getWorkDir();

	while (iter != luaFiles.end()) {
		std::string &str = *iter;
		if (!isAbsoluteFilePath(str.c_str())) {
			str = szAddonDir + str;
		}
		++iter;
	}
}
Beispiel #3
0
std::string ZFlyEmMisc::HackathonEvaluator::getSimmatFile() const
{
  return getWorkDir() + "/simmat.txt";
}
Beispiel #4
0
std::string ZFlyEmMisc::HackathonEvaluator::getNeuronTypeFile() const
{
  return getWorkDir() + "/neuron_type.json";
}
Beispiel #5
0
int parseArguments(int argc, char *argv[], std::string &tocFileName, std::string &addonDir,
	std::string &globalExcludeFunctionFileName, StringList &luaFiles,
	stObfuscatorSetting &setting)
{
	int count = 0;

	// default
	setting.bCreateOneFile              = false;
	setting.ObfuscateAddFalseCode       = false;
	setting.ObfuscateAddFalseComment    = false;
	setting.ObfuscateConstFloat         = false;
	setting.ObfuscateConstInt           = false;
	setting.ObfuscateConstString        = false;
	setting.ObfuscateGlobalFunctionName = false;
	setting.ObfuscateLocalFunctionName  = false;
	setting.ObfuscateLocalVasAndParam   = false;
	setting.bCreateBakFile              = true;
	setting.linesBetweenFiles           = 0;

//	addonDir = "e:/Software/Games/World of Warcraft/Interface/AddOns/chardumps/";

	for (int i = 1; i < argc; ++i) {
		const char *arg = argv[i];

		if (!strncmp(arg, "-opt-", 5)) {
			const char *opt = arg + 5;

			if (!strcmp(opt, "one_file")) {
				setting.bCreateOneFile = true;
			}
			else if (!strcmp(opt, "add_false_code")) {
				setting.ObfuscateAddFalseCode = true;
			}
			else if (!strcmp(opt, "add_false_comment")) {
				setting.ObfuscateAddFalseComment = true;
			}
			else if (!strcmp(opt, "const_float")) {
				setting.ObfuscateConstFloat = true;
			}
			else if (!strcmp(opt, "const_int")) {
				setting.ObfuscateConstInt = true;
			}
			else if (!strcmp(opt, "const_string")) {
				setting.ObfuscateConstString = true;
			}
			else if (!strcmp(opt, "global_function")) {
				setting.ObfuscateGlobalFunctionName = true;
			}
			else if (!strcmp(opt, "local_function")) {
				setting.ObfuscateLocalFunctionName = true;
			}
			else if (!strcmp(opt, "local_vars_args")) {
				setting.ObfuscateLocalVasAndParam = true;
			}
		}
		else if (!strcmp(arg, "-t")) {
			if (++i < argc) {
				tocFileName = argv[i];
				++count;
			}
		}
		else if (!strcmp(arg, "-gef")) {
			if (++i < argc) {
				globalExcludeFunctionFileName = argv[i];
				++count;
			}
		}
		else if (!strcmp(arg, "-a")) {
			if (++i < argc) {
				luaFiles.push_back(argv[i]);
				++count;
			}
		}
		else if (!strcmp(arg, "-dir")) {
			if (++i < argc) {
				addonDir = argv[i];
				if (addonDir == ".") {
					addonDir = getWorkDir();
				}
				char c = addonDir[addonDir.length() - 1];
				if (!isPathSep(c))
					addonDir += PATH_SEPARATOR_CHAR;
				++count;
			}
		}
		else if (!strcmp(arg, "-between_lines")) {
			if (++i < argc) {
				setting.linesBetweenFiles = atoi(argv[i]);
			}
		}
	}

	if (!tocFileName.empty() && !isAbsoluteFilePath(tocFileName.c_str())) {
		if (!addonDir.empty())
			tocFileName = addonDir + tocFileName;
		else
			tocFileName = getWorkDir() + tocFileName;
	}

	return count;
}