我把安装包的中文文件导入进去,提示安装包有错误。
后来试了一下,修改一个字符也提示安装包错误。
可以肯定安装包应该有自效验。
因为这个软件是开源的。所以下载了安装包的源代码
通过代码确定是CRC32校验。
看了半天用OD修改了安装包的几个跳转,还是不行。水平实在有限。
关键代码:
if (bMakePackage)
{
/* Create self-extracting package */
MakeSelfExtractingPackage (NULL, SetupFilesDir);
}
else
{
SetInstallationPath (NULL);
if (!bUninstall)
{
if (IsSelfExtractingPackage())
{
if (!VerifyPackageIntegrity()) // VerifyPackageIntegrity就应该是CRC32校验的函数
{
// Package corrupted
exit (1);
}
bDevm = FALSE;
}
else if (!bDevm)
{
MessageBox (NULL, "Error: This installer file does not contain any compressed files.\n\nTo create a self-extracting installation package (with embedded compressed files), run:\n\"TrueCrypt Setup.exe\" /p", "TrueCrypt", MB_ICONERROR | MB_SETFOREGROUND | MB_TOPMOST);
exit (1);
}
if (bChangeMode)
{
/* TrueCrypt is already installed on this system and we were launched from the Program Files folder */
char *tmpStr[] = {0, "SELECT_AN_ACTION", "REPAIR_REINSTALL", "UNINSTALL", "EXIT", 0};
// Ask the user to select either Repair or Unistallation
switch (AskMultiChoice ((void **) tmpStr, FALSE))
{
case 1:
bRepairMode = TRUE;
break;
case 2:
bUninstall = TRUE;
break;
default:
exit (1);
}
}
}
// System Restore
SystemRestoreDll = LoadLibrary ("srclient.dll");
if (!bUninstall)
{
/* Create the main dialog for install */
DialogBoxParamW (hInstance, MAKEINTRESOURCEW (IDD_INSTL_DLG), NULL, (DLGPROC) MainDialogProc,
(LPARAM)lpszCommandLine);
}
else
{
/* Create the main dialog for uninstall */
DialogBoxW (hInstance, MAKEINTRESOURCEW (IDD_UNINSTALL), NULL, (DLGPROC) UninstallDlgProc);
if (UninstallBatch[0])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory (&si, sizeof (si));
si.cb = sizeof (si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
if (!CreateProcess (UninstallBatch, NULL, NULL, NULL, FALSE, IDLE_PRIORITY_CLASS, NULL, NULL, &si, &pi))
DeleteFile (UninstallBatch);
else
{
CloseHandle (pi.hProcess);
CloseHandle (pi.hThread);
}
}
}
}
return 0;
}
求大神分析一下,怎样用OD去掉校验。
安装包的源代码为setup.zip。
剩下的是安装包程序
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: