This is probably the best method to
bypass sig checking, why ?
Cos it's stable, it's easy and it works on any
pbo.
How-To-Use:
1 - Open it and select your
PBO Hack.
2 - Select a Legit
PBO + Legit
Bisign.
NOTE: The legit bisign you select must be the same that the legit pbo uses.
Example:
Legit PBO = C:\Program Files\Steam\steamapps\common\arma 2 operation arrowhead\Expansion\Addons\rocks_e.pbo
Legit Bisign = C:\Program Files\Steam\steamapps\common\arma 2 operation arrowhead\Expansion\Addons\rocks_e.pbo.bi.bisign
3 - Click
Spoof and choose where you want to save the files. You usually want
save it on the "\arma 2 operation arrowhead\Expansion\Addons" folder.
4 -
Have fun! Tested on:
- Windows 7 32bit
- Arma 2 OA - 1.57
Download:
http://tkc-community.net/forum/index.php?action=downloads;sa=view;down=159Source:
core_gui.pbIncludeFile "spoofer.pbi"
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Frame3D_0
#Text_0
#String_HaxPBO
#Button_H_BR
#Frame3D_1
#Text_1
#String_LPBO
#Button_L_BR
#Text_2
#String_LBI
#Button_B_BR
#Button_Spoof
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 439, 198, "Darky Arma 2 Addon Spoofer", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
Frame3DGadget(#Frame3D_0, 10, 10, 420, 50, "")
TextGadget(#Text_0, 20, 30, 70, 20, "Hack PBO:")
StringGadget(#String_HaxPBO, 100, 30, 280, 20, "")
ButtonGadget(#Button_H_BR, 390, 30, 30, 20, "...")
Frame3DGadget(#Frame3D_1, 10, 70, 420, 80, "")
TextGadget(#Text_1, 20, 90, 70, 20, "Legit PBO:")
StringGadget(#String_LPBO, 100, 90, 280, 20, "")
ButtonGadget(#Button_L_BR, 390, 90, 30, 20, "...")
TextGadget(#Text_2, 20, 120, 70, 20, "Legit Bisign:")
StringGadget(#String_LBI, 100, 120, 280, 20, "")
ButtonGadget(#Button_B_BR, 390, 120, 30, 20, "...")
ButtonGadget(#Button_Spoof, 10, 160, 420, 30, "Spoof")
EndIf
EndProcedure
Procedure SpoofHAX(sSavePath.s, sHackPBo.s, sLegitPBO.s, sLegitBisign.s)
*pCRC = AllocateMemory(20)
If ReadPBO_CRC(sLegitPBO, *pCRC)
If WritePBO_CRC(sHackPBo, *pCRC)
newBisNa.s = sSavePath + GetFilePart(sHackPBo) + ".bi.bisign" ;The New Sig File
CopyFile(sLegitBisign, newBisNa) ;Copy the Bisig File
CopyFile(sHackPBo, sSavePath + GetFilePart(sHackPBo))
DeleteFile(sHackPBo)
MessageRequester("Ok", "Your Hack PBO has been saved on: " +#CRLF$+#CRLF$+sSavePath, #MB_ICONINFORMATION)
Else
MessageRequester("Error", "Cant Write PBO CRC!", #MB_ICONERROR)
EndIf
Else
MessageRequester("Error", "Cant read PBO CRC!", #MB_ICONERROR)
EndIf
EndProcedure
A_SteamDIR.s = GetEnvironmentVariable("ProgramFiles") + "\Steam\steamapps\common\arma 2 operation arrowhead\Expansion\Addons\"
Open_Window_0()
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #Button_H_BR ;Open the Hack PBO File
Pattern.s = "PBO (*.pbo)|*.pbo;|All files (*.*)|*.*"
File.s = OpenFileRequester("Choose you Hack PBO...", "", Pattern, 0)
If File And FileSize(File) > 0
SetGadgetText(#String_HaxPBO, File)
EndIf
ElseIf GadgetID = #Button_L_BR ;Open the Legit PBO File
Pattern.s = "PBO (*.pbo)|*.pbo;|All files (*.*)|*.*"
If FileSize(A_SteamDIR) = -2
File.s = OpenFileRequester("Choose a Legit PBO...", A_SteamDIR, Pattern, 0)
Else
File.s = OpenFileRequester("Choose a Legit PBO...", "", Pattern, 0)
EndIf
If File And FileSize(File) > 0
SetGadgetText(#String_LPBO, File)
sPBOSig.s = GetPathPart(File) + ReplaceString(GetFilePart(File),GetExtensionPart(File)+".","") + ".bi.bisign"
If FileSize(sPBOSig) > 0
SetGadgetText(#String_LBI, sPBOSig)
EndIf
EndIf
ElseIf GadgetID = #Button_B_BR ;Open the legit Bisign File
Pattern.s = "Bisign (*.bisign)|*.bisign;|All files (*.*)|*.*"
If FileSize(A_SteamDIR) = -2
File.s = OpenFileRequester("Choose a Legit Bisign File...", A_SteamDIR, Pattern, 0)
Else
File.s = OpenFileRequester("Choose a Legit Bisign File...", "", Pattern, 0)
EndIf
If File And FileSize(File) > 0
SetGadgetText(#String_LBI, File)
EndIf
ElseIf GadgetID = #Button_Spoof ;Win
If GetGadgetText(#String_HaxPBO) <> "" And GetGadgetText(#String_LPBO) <> "" And GetGadgetText(#String_LBI) <> ""
If FileSize(A_SteamDIR) = -2
InitialPath.s = A_SteamDIR
Else
InitialPath.s = "C:\"
EndIf
sPath.s = PathRequester("Please choose your save path...", InitialPath)
If sPath
SpoofHAX(sPath, GetGadgetText(#String_HaxPBO), GetGadgetText(#String_LPBO), GetGadgetText(#String_LBI))
EndIf
Else
MessageRequester("Error", "You need to select needed files!", #MB_ICONERROR)
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
spoofer.pbiProcedure.b ReadPBO_CRC(sFile.s, *Out_Buffer)
hFile = ReadFile(#PB_Any, sFile)
hResult = hFile
If hFile
fLen.l = Lof(hFile)
FileSeek(hFile, fLen - 20) ;Last 20 Bytes are the CRC
hResult = ReadData(hFile, *Out_Buffer, MemorySize(*Out_Buffer))
CloseFile(hFile)
EndIf
ProcedureReturn hResult
EndProcedure
Procedure.b WritePBO_CRC(sFile.s, *In_Buffer)
hFile = OpenFile(#PB_Any, sFile)
hResult = hFile
If hFile
fLen.l = Lof(hFile)
FileSeek(hFile, fLen - 20) ;Last 20 Bytes are the CRC
hResult = WriteData(hFile, *In_Buffer, MemorySize(*In_Buffer))
CloseFile(hFile)
EndIf
ProcedureReturn hResult
EndProcedure