I forked this repository because the upstream project’s old Releases page is no longer populated, and I wanted a reproducible way to build fresh SREP binaries directly from the original source instead of relying on random preserved copies of BOOTX64.efi from third-party mirrors.
I had ChatGPT help me inspect the original build workflow, update the GitHub Actions plumbing so current runners can still produce artifacts, and add a conservative SREP_Config.cfg for my own Lenovo Legion testing. The SREP source itself is still the upstream author’s work; I am not claiming authorship of the project. My goal with this fork is basically preservation, reproducible builds, and a place where I can keep the exact config I am testing documented alongside the source.
For my initial Legion test, I am intentionally exposing only the Advanced and Power forms. I am not exposing AMD PBS or AMD CBS yet. I want the first pass to be as conservative as possible: boot SREP with Secure Boot temporarily disabled, browse the newly visible setup pages, take photos, and exit without changing or saving any hidden setting. If I later decide to experiment with PBS/CBS, I will document that separately rather than quietly broadening this first config.
The current SREP_Config.cfg in this fork is therefore deliberately narrower than the combined AMD/Intel example farther down in the original README.
These Are tool From "The Vault", that I decided to upload, so expect not fully polished product, or very slow Fixes if any
Plese don't open issue not strictly related with the tool. Request for bios unlock are not related to the tool, for that you can try to ask on the discord server( a bit of effort from you side is required)
Even if the tool is free, my time is not, so don't expect that I make a patch from scratch for your bios, without you putting some effort in it.
Use this at your own risk,I won’t be responsible for any damage.
Also the code quality and the parsing engine are not that great, but were the best I could come to.
https://github.com/SmokelessCPUv2/SREP-Community-Patches
This is a simple tool to patch and Inject/Patch EFI modules at runtime, I developed this as I wasn't confortable with SPI flashing, as is not boring and require opening the laptop for every small change, as with AMD you can't flash from the OS a new BIOS, if is not signed...
The real reason why this exist, is that with an update Lenovo removed the Unlock BackDoor LenovoH2O-Unlocker, so after an update I couldn't change some adv option check Unlocking Lenovo H2O Bios I decided to develop a new way to do it....
When the EFI App is booted up, it look for a file Called SREP_Config.cfg, containing a list of command to execute, then will execute them
If you want to donate/support please consider supportorting on Patreon
For one one donation, you can subribe for a month to Patreon then after the biilling, unsubsribe; (I might add a paypal in future)
-
Download the Latest zip, from the Release Page
-
extract in a USB, such that exist a Folder Called EFI in the USB Root,
-
Create a SREP_Config.cfg and place in the root of the USB
-
boot from the USB
-
??
-
Profit
The Config file can containg muliple batch of operation, the syntax is,
Op OpName1
Argument 1
Argument 2
Argument n
Op OpName2
Argument 1
Argument 2
Argument n
End
Op OpName3
Argument 1
Argument 2
Argument n
End
Load a EFI File in memory from a EFI partition, set as target
* FileName : The Filename to load
Load a EFI File in memory from the FV(Firmware Volume)/The BIOS image, set as target
* SectionName : The Section to load
Target an already loaded Module
* Name : The Name of the Loaded App to target
Patch the previus loaded target
* Pattern : provide the Find and Replace a Patterns
* Offset : Provide and offset from the File start, and then the Byte to replace here
* RelNegOffset/RelPosOffset : negative/positive offset from previus Patch operation, and then the Byte to replace here
Execute the Previus loaded Module
[ ] Uninstall Protocol
[ ] Lzma compressed object (very common on AMI BIOS)
This is an Example of Loading a simple EFI, and executing it:
Op LoadFromFS APP.efi
Op Exec
End
This is an Example of Loading a simple EFI, replacing by pattern,and executing it
Find and replace AABBCCDDEEFF with AABBCCDDEEEE, find and replace AABBCCDDAABB with AABBCCDDAAAA:
Op LoadFromFS
APP.efi
Op Patch
Pattern
AABBCCDDEEFF
AABBCCDDEEEE
Op Patch
Pattern
AABBCCDDAABB
AABBCCDDAAAA
Op Exec
End
This is an Example of using relative pattern
Find the pattern AABBCCDDEEFF (replace with AABBCCDDEEFF, as we want it's own start address), then write AABBCCDDAAAA, at +50 from the pattern start
Op LoadFromFS
APP.efi
Op Patch
Pattern
AABBCCDDEEFF
AABBCCDDEEFF
Op Patch
RelPosOffset
50
AABBCCDDAAAA
Op Exec
End
Now a real example on how to use it to patch a Lenovo Legion Bios to Unlock the Advanced menu:
The Target H2O, is very simple in the regard on which form is shown...
in the H2OFormBrowserDxe there is a simple array of struct:
struct Form
{
GUID FormGUID;
uint32_t isShown;
}
struct Form FormList[NO_OF_FORM];
The previus cE! backdoor, was very simple, looked like this:
if(gRS->GetVariable("cE!".....))
for(int i=0;i<NO_OF_FORM;i++)
{
FormList[i].isShown=1;
}
if the Variable didn't existed default isShow was used...
With this tool we can manually set the isShow Flag so we can replicate that behavoir...
The H2OFormBrowserDxe, is already loaded when we are able to execute SREP, so we can use the Loaded OP....
Let's say that we want to show the CBS Menu , it's guid is {B04535E3-3004-4946-9EB7-149428983053}, so it's hex representation is
E33545B0043046499EB7149428983053
given that is disabled, the complete Form Struct in memory will be
E33545B0043046499EB714942898305300000000
as we appended the 4 byte uint32_t of value 0;
we want to replace this with the 1, the little endian version of a uint32_t is
01 00 00 00
so the replace string is
E33545B0043046499EB714942898305301000000
So putting all toghether the SREP_Config.cfg file look like
Op Loaded
H2OFormBrowserDxe
Op Patch
Pattern
E33545B0043046499EB714942898305300000000
E33545B0043046499EB714942898305301000000
Op End
Now we have patched the H2OFormBrowserDxe, but the Bios UI will be not loaded as we booted from a USB, but we can force it to load with
Op LoadFromFV
SetupUtilityApp
Op Exec
So the Finall SREP_Config.cfg is:
Op Loaded
H2OFormBrowserDxe
Op Patch
Pattern
E33545B0043046499EB714942898305300000000
E33545B0043046499EB714942898305301000000
Op End
Op LoadFromFV
SetupUtilityApp
Op Exec
Note You can't show the AOD menu with this, as it is not even loaded on non HX, cpu, you can force to load, Patching also AoDSetupDxe, but that's a topic for another day.
You could do the same to show the PBS menu and the Advanced Menu on intel one, if you are lazy you can use the combined one AMD/Intel provided here(I might have forgot to unlock something tbh):
Op Loaded
H2OFormBrowserDxe
Op Patch
Pattern
59B963B8C60E334099C18FD89F04022200000000
59B963B8C60E334099C18FD89F04022201000000
Op Patch
Pattern
E33545B0043046499EB714942898305300000000
E33545B0043046499EB714942898305301000000
Op Patch
Pattern
732871A65F92C64690B4A40F86A0917B00000000
732871A65F92C64690B4A40F86A0917B01000000
Op Patch
Pattern
9E76D4C6487F2A4D98E987ADCCF35CCC00000000
9E76D4C6487F2A4D98E987ADCCF35CCC01000000
Op End
Op LoadFromFV
SetupUtilityApp
Op Exec
Op Loaded
H2OFormBrowserDxe
Op Patch
Pattern
49D592C3EB27464F8A119F5DF55A9C8B00000000
49D592C3EB27464F8A119F5DF55A9C8B01000000
Op Patch
Pattern
1AB0E0C17E60754BB8BB0631ECFAACF200000000
1AB0E0C17E60754BB8BB0631ECFAACF201000000
Op Patch
Pattern
9E76D4C6487F2A4D98E987ADCCF35CCC00000000
9E76D4C6487F2A4D98E987ADCCF35CCC01000000
Op Patch
Pattern
732871A65F92C64690B4A40F86A0917B00000000
732871A65F92C64690B4A40F86A0917B01000000
Op End
Op LoadFromFV
SetupUtilityApp
Op Exec