• R/O
  • SSH
  • HTTPS

zolm: Commit


Commit MetaInfo

Revisión83 (tree)
Tiempo2017-12-28 03:20:43
Autorderekwildstar

Log Message

- Dificultando a vida dos crackers

Cambiar Resumen

Diferencia incremental

--- trunk/CLIENTE/BIN/Proteção Binária.txt (revision 82)
+++ trunk/CLIENTE/BIN/Proteção Binária.txt (revision 83)
@@ -1,29 +1,29 @@
11 1. Em cada unit do projeto a ser protegido, ou no mínimo em uma unit, inclua o seguinte bloco de código no final:
22
33 {$I DEBUG.inc}
4-{$I CRC32.inc}
5-{$I DLL.inc}
4+{$I CRC.inc}
65
76 initialization
87
98 DebugCheck;
10-DLLCheck;
11-VerificarCRC32(GetModuleName(HInstance));
9+CheckIntegrity;
1210
1311 Caso a unit já contenha uma seção initialization, ajuste para que haja estas linhas
1412
15-2. Em cada unit onde o passo 1 foi executado, inclua na cláusula uses "TlHelp32" e "Windows", caso não existam
13+2. Em cada unit onde o passo 1 foi executado, inclua na cláusula uses "ImageHlp" e "Windows", caso não existam
1614
17-3. Compile o executável e gere a partir dele seu CRC32 usando p CRC32Gen. Você pode arrastar o executável em cima
18- do executável do CRC32Gen para gerar o arquivo .crc
15+3. Compile o executável e gere a partir dele seu CRC32 usando o CRC32Gen. Você pode arrastar o executável em cima
16+ do executável do CRC32Gen para gerar o CRC, o qual é colocado dentro do próprio executável!
1917
20-4. Para DLLs o procedimento é o mesmo, apenas diferente é o bloco protetor, o qual deverá ser:
18+4. Para DLLs o procedimento é o mesmo, a diferença é que podemos checar a integridade do módulo host também:
2119
2220 {$I DEBUG.inc}
23-{$I CRC32.inc}
21+{$I CRC.inc}
2422
2523 initialization
2624
2725 DebugCheck;
28-VerificarCRC32(GetModuleName(HInstance));
29-VerificarCRC32(ParamStr(0));
26+CheckIntegrity;
27+CheckIntegrity(ParamStr(0));
28+
29+5. Ao usar o Petite, use-o apenas na DLL e sem a opção de verificação de vírus primeiro e só depois gere o CRC arrastando a DLL em cima de CRC32Gen.
--- trunk/CLIENTE/PRJ/CRC32Gen.dpr (revision 82)
+++ trunk/CLIENTE/PRJ/CRC32Gen.dpr (revision 83)
@@ -4,26 +4,96 @@
44
55 uses
66 SysUtils,
7- Windows;
7+ Windows,
8+ ImageHlp;
89
9-{$I CRC32.inc}
10+{$I CRC.INC}
1011
12+const
13+ CRLF = ^M^J;
14+
1115 var
12- CRCObtido: LongWord;
13- CRC: file of LongWord;
16+ hFile: THandle;
17+ hMapFile: THandle;
18+ fSize: DWORD;
19+ lpMapAddress: LPVOID;
20+ pImageNTHeader: PImageNtHeaders32;
21+ Checksum: DWORD;
22+ Headersum: DWORD;
23+ B0, B1, B2, B3: Byte;
1424 begin
25+ WriteLn('ZOLM Checksum Generator'#13#10);
26+
1527 if ParamCount = 0 then
16- Exit;
28+ WriteLn(Format('Uso: %s <nome do arquivo>',[ExtractFileName(ParamStr(0))]) + CRLF)
29+ else
30+ begin
31+ WriteLn('Checksum do arquivo:');
1732
18- CRCObtido := GerarCRC32(ParamStr(1));
19- CRCObtido := Gira359Graus(CRCObtido);
33+ hFile := CreateFile(PChar(ParamStr(1)), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
34+ if (hFile <> INVALID_HANDLE_VALUE) then
35+ try
36+ fSize := GetFileSize(hFile, nil);
2037
21- AssignFile(CRC,ChangeFileExt(ParamStr(1),'.crc'));
22- try
23- FileMode := fmOpenWrite;
24- ReWrite(CRC);
25- Write(CRC,CRCObtido);
26- finally
27- CloseFile(CRC);
38+ hMapFile := CreateFileMapping(hFile, nil, PAGE_READWRITE, 0, fSize, nil);
39+ if hMapFile > 0 then
40+ begin
41+
42+ lpMapAddress := MapViewOfFile(hMapFile, FILE_MAP_WRITE, 0, 0, 0);
43+ if Assigned(lpMapAddress) then
44+ try
45+ pImageNTHeader := ImageNtHeader(lpMapAddress);
46+ if Assigned(pImageNTHeader) then
47+ begin
48+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[0] := 0;
49+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[1] := 0;
50+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[2] := 0;
51+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[3] := 0;
52+
53+ CheckSum := 0;
54+ HeaderSum := 0;
55+
56+ if Assigned(CheckSumMappedFile(lpMapAddress, fSize, @HeaderSum, @CheckSum)) then
57+ begin
58+ // AABBCCDD
59+ B0 := CheckSum shr 24; // AA
60+ B1 := CheckSum shr 16 mod 256; // BB
61+ B2 := Checksum shr 8 mod 256; // CC
62+ B3 := Checksum mod 256; // DD
63+
64+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[0] := B3 or (CRC8(B0) shl 8);
65+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[1] := B2 or (CRC8(B1) shl 8);
66+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[2] := B1 or (CRC8(B2) shl 8);
67+ PIMAGE_DOS_HEADER(lpMapAddress).e_res[3] := B0 or (CRC8(B3) shl 8);
68+
69+ if Assigned(CheckSumMappedFile(lpMapAddress, fSize, @HeaderSum, @CheckSum)) then
70+ pImageNTHeader.OptionalHeader.CheckSum := CheckSum;
71+
72+ if (FlushViewOfFile(lpMapAddress, fSize)) then
73+ WriteLn('Finalizado!')
74+ else
75+ WriteLn(Format(CRLF + 'Erro: Não foi possível salvar o checksum no arquivo' + CRLF + 'Erro #: 0x%.8X' + CRLF,[GetLastError()]));
76+ end
77+ else
78+ WriteLn(Format(CRLF + 'Erro: Não foi possível obter o checksum da visualização do mapa do arquivo %s' + CRLF + 'Erro #: 0x%.8X' + CRLF,[ParamStr(1),GetLastError()]));
79+ end
80+ else
81+ WriteLn(Format(CRLF + 'Erro: Não foi possível obter a estrutura "IMAGE_NT_HEADERS" para o arquivo %s' + CRLF + 'Erro #: 0x%.8X' + CRLF,[ParamStr(1),GetLastError()]));
82+ finally
83+ UnmapViewOfFile(lpMapAddress);
84+ end
85+ else
86+ WriteLn(Format(CRLF + 'Erro: Não foi possível gerar a visualização do mapa do arquivo %s' + CRLF + 'Erro #: 0x%.8X' + CRLF,[ParamStr(1),GetLastError()]));
87+ end
88+ else
89+ WriteLn(Format(CRLF + 'Erro: Não foi possível mapear o arquivo %s' + CRLF + 'Erro #: 0x%.8X' + CRLF,[ParamStr(1),GetLastError()]));
90+ finally
91+ CloseHandle(hFile);
92+ end
93+ else
94+ WriteLn(Format(CRLF + 'Erro: Não foi possível abrir o arquivo %s' + CRLF + 'Erro #: 0x%.8X' + CRLF,[ParamStr(1),GetLastError()]));
95+
2896 end;
97+ WriteLn(CRLF + 'Pressione qualquer tecla para terminar o programa');
98+ ReadLn;
2999 end.
--- trunk/CLIENTE/PRJ/CRC32Gen.dproj (revision 82)
+++ trunk/CLIENTE/PRJ/CRC32Gen.dproj (revision 83)
@@ -39,12 +39,12 @@
3939 <DCC_K>false</DCC_K>
4040 <DCC_N>false</DCC_N>
4141 <DCC_E>false</DCC_E>
42- <DCC_DebugInformation>0</DCC_DebugInformation>
42+ <DCC_DebugInformation>1</DCC_DebugInformation>
4343 <DCC_UnitSearchPath>..\inc;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
4444 <DCC_ExeOutput>..\bin</DCC_ExeOutput>
4545 <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
4646 <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=;CFBundleDisplayName=;UIDeviceFamily=;CFBundleIdentifier=;CFBundleVersion=;CFBundlePackageType=;CFBundleSignature=;CFBundleAllowMixedLocalizations=;UISupportedInterfaceOrientations=;CFBundleExecutable=;CFBundleResourceSpecification=;LSRequiresIPhoneOS=;CFBundleInfoDictionaryVersion=;CFBundleDevelopmentRegion=;package=;label=;versionCode=;versionName=;persistent=;restoreAnyVersion=;installLocation=;largeHeap=;theme=</VerInfo_Keys>
47- <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
47+ <Manifest_File>None</Manifest_File>
4848 <DCC_F>false</DCC_F>
4949 <DCC_S>false</DCC_S>
5050 <DCC_ImageBase>00400000</DCC_ImageBase>
@@ -66,6 +66,7 @@
6666 <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
6767 </PropertyGroup>
6868 <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
69+ <Debugger_RunParams>testes.exe</Debugger_RunParams>
6970 <VerInfo_Locale>1033</VerInfo_Locale>
7071 <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
7172 <Manifest_File>None</Manifest_File>
--- trunk/CLIENTE/PRJ/Testes.dpr (revision 82)
+++ trunk/CLIENTE/PRJ/Testes.dpr (revision 83)
@@ -11,7 +11,7 @@
1111
1212 begin
1313 try
14-// VerifyLicense('{64E052D8-FEC9-405E-BDF6-D34AAEDE242E}');
14+ VerifyLicense('{64E052D8-FEC9-405E-BDF6-D34AAEDE242E}');
1515 Application.Initialize;
1616 Application.MainFormOnTaskbar := True;
1717 Application.CreateForm(TForm12, Form12);
--- trunk/CLIENTE/SRC/Testes/UFormPrincipal.pas (revision 82)
+++ trunk/CLIENTE/SRC/Testes/UFormPrincipal.pas (revision 83)
@@ -3,8 +3,8 @@
33 interface
44
55 uses
6- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
6+ System.SysUtils, Winapi.Windows, Winapi.Messages, System.Variants, System.Classes, Vcl.Graphics,
7+ Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ImageHlp;
88
99 type
1010 TForm12 = class(TForm)
@@ -20,27 +20,14 @@
2020
2121 implementation
2222
23-uses
24- TlHelp32, ImageHlp;
25-
2623 {$R *.dfm}
2724
2825 {$I DEBUG.inc}
29-{$I CRC32.inc}
30-{$I DLL.inc}
26+{$I CRC.INC}
3127
32-var
33- HC, CC: Cardinal;
34-
3528 initialization
3629
37-//DebugCheck;
38-//DLLCheck;
39-//VerificarCRC32(GetModuleName(HInstance));
30+DebugCheck;
31+CheckIntegrity;
4032
41- MapFileAndCheckSum(PChar(GetModuleName(HInstance)),HC,CC);
42-
43- showmessage(inttohex(HC,6));
44- showmessage(inttohex(cc,6));
45-
4633 end.
--- trunk/CLIENTE/SRC/UFORMMasterPassword.pas (revision 82)
+++ trunk/CLIENTE/SRC/UFORMMasterPassword.pas (revision 83)
@@ -23,7 +23,7 @@
2323 implementation
2424
2525 uses
26- TlHelp32;
26+ ImageHlp;
2727
2828 {$R *.dfm}
2929
@@ -45,12 +45,12 @@
4545 //in Z-order and will stay on top of it automatically.
4646
4747 {$I DEBUG.inc}
48-{$I CRC32.inc}
48+{$I CRC.inc}
4949
5050 initialization
5151
5252 DebugCheck;
53-VerificarCRC32(GetModuleName(HInstance));
54-VerificarCRC32(ParamStr(0));
53+CheckIntegrity;
54+CheckIntegrity(@ParamStr(0)[1]);
5555
5656 end.
--- trunk/CLIENTE/SRC/UFORMRegistrar.pas (revision 82)
+++ trunk/CLIENTE/SRC/UFORMRegistrar.pas (revision 83)
@@ -85,7 +85,7 @@
8585 , UStructures
8686 , UFuncoes
8787 , KRK.Lib.Rtl.Common.NetworkUtils
88- , TlHelp32;
88+ , ImageHlp;
8989
9090 const
9191 CPF_REGEX = '\Dª'#13#10 + { ###.###.###-## }
@@ -261,12 +261,12 @@
261261 end;
262262
263263 {$I DEBUG.inc}
264-{$I CRC32.inc}
264+{$I CRC.inc}
265265
266266 initialization
267267
268268 DebugCheck;
269-VerificarCRC32(GetModuleName(HInstance));
270-VerificarCRC32(ParamStr(0));
269+CheckIntegrity;
270+CheckIntegrity(@ParamStr(0)[1]);
271271
272272 end.
--- trunk/CLIENTE/SRC/UFuncoes.pas (revision 82)
+++ trunk/CLIENTE/SRC/UFuncoes.pas (revision 83)
@@ -39,7 +39,7 @@
3939 , zolmws
4040 , UFORMMasterPassword
4141 , idFtp
42- , TlHelp32;
42+ , ImageHlp;
4343
4444 // Tabela de códigos de erro
4545 {
@@ -882,12 +882,12 @@
882882 //end;
883883
884884 {$I DEBUG.inc}
885-{$I CRC32.inc}
885+{$I CRC.inc}
886886
887887 initialization
888888
889889 DebugCheck;
890-VerificarCRC32(GetModuleName(HInstance));
891-VerificarCRC32(ParamStr(0));
890+CheckIntegrity;
891+CheckIntegrity(@ParamStr(0)[1]);
892892
893893 end.
--- trunk/CLIENTE/SRC/UStructures.pas (revision 82)
+++ trunk/CLIENTE/SRC/UStructures.pas (revision 83)
@@ -23,15 +23,15 @@
2323 implementation
2424
2525 uses
26- TlHelp32;
26+ ImageHlp;
2727
2828 {$I DEBUG.inc}
29-{$I CRC32.inc}
29+{$I CRC.inc}
3030
3131 initialization
3232
3333 DebugCheck;
34-VerificarCRC32(GetModuleName(HInstance));
35-VerificarCRC32(ParamStr(0));
34+CheckIntegrity;
35+CheckIntegrity(@ParamStr(0)[1]);
3636
3737 end.
Show on old repository browser