Code for comparing executable files:
Code: Select all
MessageRequester("","")Code: Select all
EnableExplicit
Global bytes
Procedure OpenFileToGadget(FilePath$)
Protected length, oFile, *mem
oFile = ReadFile(#PB_Any, FilePath$)
If oFile
length = Lof(oFile)
*mem = AllocateMemory(length)
If *mem
bytes = ReadData(oFile, *mem, length)
If bytes
ProcedureReturn *mem
EndIf
EndIf
CloseFile(oFile)
EndIf
ProcedureReturn 0
EndProcedure
Define *FData1, *FData2
Global length1, length2
Procedure CompareData(*b1.Byte, *b2.Byte)
Protected i, toggle = 0, z
Protected *c1.Byte, *c2.Byte
Protected *Compare1, *Compare2
If length1 <> length2
ProcedureReturn 0
EndIf
If length1 = 0 Or length1 = 0
ProcedureReturn 0
EndIf
If *b1 = 0 Or *b2 = 0
ProcedureReturn 0
EndIf
*Compare1 = AllocateMemory(length1)
*Compare2 = AllocateMemory(length1)
If Not (*Compare1 And *Compare2)
ProcedureReturn 0
EndIf
*c1 = *Compare1
*c2 = *Compare2
For i = 1 To length1
z + 1
If *b1\b <> *b2\b
*c1\b = *b1\b
*c2\b = *b2\b
*c1 + 1
*c2 + 1
If toggle
Debug z
EndIf
toggle = 0
Else
toggle = 1
EndIf
*b1 + 1
*b2 + 1
Next
ShowMemoryViewer(*Compare2, 1000)
EndProcedure
*FData1 = OpenFileToGadget("C:\1.exe")
length1 = bytes
*FData2 = OpenFileToGadget("C:\2.exe")
length2 = bytes
CompareData(*FData1, *FData2)
FreeMemory(*FData1)
FreeMemory(*FData2)
