论坛风格切换切换到宽版
  • 3522阅读
  • 3回复

救助虎版,关于Inno的几个问题,附脚本。 [复制链接]

上一主题 下一主题
离线yishe
 
发帖
*
金钱
*
威望
*
只看楼主 倒序阅读 0 发表于: 2013-11-22
1.项目打包使用IS,想对安装包加密,有没有什么办法可以获取安装机器的cup,硬盘序列号,网卡mac地址,最好不从缓存(注册表)获取?
2.问题1没有解决自己写了个脚本获取MAC地址,在使用GetMD5OfUnicodeString()方法返回的字符串和其他MD5加密生成的字符串不一样,有没有什么解决方法?没有试GetMD5OfString()方法,因为那个获取MAC地址返回的字符串是Unicode的(只知道如何将Ansi转Unicode)
function getMacAddress():String;
var TmpFileName:string;fileStr:TArrayOfString;i,index,ResultCode:integer;
begin
    TmpFileName := ExpandConstant('{tmp}') + '\ipconfig_results.txt';
    Exec('cmd.exe','/C ipconfig /ALL > "' + TmpFileName + '"', '', SW_HIDE,ewWaitUntilTerminated,ResultCode);
    if LoadStringsFromFile(TmpFileName,fileStr) then begin
      for i := 0 to GetArrayLength(fileStr) - 1 do
        begin
          index := Pos('Physical Address',fileStr);
          if index = 0 then continue else
            result := Copy(fileStr,Pos(':',fileStr)+2,17);
            break;
        end;
    end;
    DeleteFile(TmpFileName);
end;
3.使用一个网上的防止解包的方法,想知道一般人解包的容易程度

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
DefaultGroupName=My Application
UninstallDisplayIcon={app}\MyProg.exe
SolidCompression=yes
Compression=lzma/ultra
Password=123456abcdef
UsePreviousTasks=yes
Encryption=true
OutputDir=C:\Users\Yishe\Desktop


[Types]
Name: "full"; Description: "full"
Name: "compact"; Description: "compact"
Name: "custom"; Description: "custom"; Flags: iscustom


[Components]
Name: "program"; Description: "app files"; Types: full compact custom; Flags: fixed
Name: "help"; Description: "help files"; Types: full
Name: "readme"; Description: "readme files"; Types: full


[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Components: program
Source: "MyProg1.chm"; DestDir: "{app}"; Components: help
Source: "Readme1.txt"; DestDir: "{app}"; Components: readme; Flags: isreadme


[Icons]
Name: "{group}\my application"; Filename: "{app}\MyProg.exe"


[code]
Var P1, P2: Integer;
function CheckPassword(Password: String): Boolean;
begin
  Result := True;
end;
function GetPassword(PrevPassword: String): String;
begin
  if (P1 = 5) and (P2 = 6) then
  begin
    Result := chr(ord('2')-1);
    Result := Result + chr(ord('3')-1);
    Result := Result + chr(ord('4')-1);
    Result := Result + chr(ord('5')-1);
    Result := Result + chr(ord('6')-1);
    Result := Result + chr(ord('7')-1);
  end else
  if (P1 = 5) and (P2 = 9) then
  begin
    Result := Copy(PrevPassword, 1, 6) + chr(ord('b')-1);
    Result := Result + chr(ord('c')-1);
    Result := Result + chr(ord('d')-1);
    Result := Result + chr(ord('e')-1);
    Result := Result + chr(ord('f')-1);
    Result := Result + chr(ord('g')-1);
  end else
    Result := PrevPassword + 'FakePassword';
    P2 := P2 + 1;
end;                      
procedure InitializeWizard();
begin
  P1 := 5;
end;
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2013-11-22
你是不是把“解包”和“解密”混淆了。

“解包”是分解你的安装程序,把里面打包的内容直接提取出来,无须运行安装程序。防解包不能通过你的脚本本身来实现,而是跟你使用的安装程序编译器有关。现在用 Inno 增强版编译的安装程序好像都是防解包的。

“解密”是防止别人破解你用密码保护的安装程序(密码可能跟机器码等硬件信息有关)。
Inno 自带的密码保护功能是很有限的,也就是说密码很容易被破解。建议你用某些第三方插件,比如
http://www.mjfreelancing.com/index.php?option=com_content&view=article&id=11&Itemid=13


离线qqjszl

发帖
126
金钱
1210
威望
121
只看该作者 2 发表于: 2015-02-22
回 1楼(gnatix) 的帖子
gnatix:你是不是把“解包”和“解密”混淆了。 “解包”是分解你的安装程序,把里面打包的内容直接提取出来,无须运行安装程序。防解包不能通过你的脚本本身来实现,而是跟你使用的安装程序编 .. (2013-11-22 20:08) 

虎大有这个软件的使用教程么?
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2015-02-23
中文的使用教程是没有的。不过,它的使用比较简单,你参考一下示例就会的。