Let us start here, from square one. No, from Zero!
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import binascii
|
||||
import spiceapi
|
||||
import argparse
|
||||
|
||||
|
||||
def patch_string(con, dll_name: str, find: str, replace: str):
|
||||
while True:
|
||||
try:
|
||||
|
||||
# replace first result
|
||||
address = spiceapi.memory_signature(
|
||||
con, dll_name,
|
||||
binascii.hexlify(bytes(find, "utf-8")).decode("utf-8"),
|
||||
binascii.hexlify(bytes(replace, "utf-8")).decode("utf-8"),
|
||||
0, 0)
|
||||
|
||||
# print findings
|
||||
print("{}: {} = {} => {}".format(
|
||||
dll_name,
|
||||
hex(address),
|
||||
find,
|
||||
replace))
|
||||
|
||||
except spiceapi.APIError:
|
||||
|
||||
# this happens when the signature wasn't found anymore
|
||||
break
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
# parse args
|
||||
parser = argparse.ArgumentParser(description="SpiceAPI string replacer")
|
||||
parser.add_argument("host", type=str, help="The host to connect to")
|
||||
parser.add_argument("port", type=int, help="The port the host is using")
|
||||
parser.add_argument("password", type=str, help="The pass the host is using")
|
||||
parser.add_argument("dll", type=str, help="The DLL to patch")
|
||||
parser.add_argument("find", type=str, help="The string to find")
|
||||
parser.add_argument("replace", type=str, help="The string to replace with")
|
||||
args = parser.parse_args()
|
||||
|
||||
# connect
|
||||
con = spiceapi.Connection(host=args.host, port=args.port, password=args.password)
|
||||
|
||||
# replace the string
|
||||
patch_string(con, args.dll, args.find, args.replace)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user