同步操作将从 qiling/qiling 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env python3## Cross Platform and Multi Architecture Advanced Binary Emulation Framework#import syssys.path.append("..")from qiling.core import Qilingfrom qiling.const import QL_VERBOSEfrom qiling.os.const import STRINGdef get_kaimendaji_password():def my_getenv(ql, *args, **kwargs):env = {"ID": b"000000000000000", "ethaddr": b"11:22:33:44:55:66"}params = ql.os.resolve_fcall_params({'key': STRING})value = env.get(params["key"], b"")value_addr = ql.os.heap.alloc(len(value))ql.mem.write(value_addr, value)ql.reg.r0 = value_addrql.reg.arch_pc = ql.reg.lrdef get_password(ql, *args, **kwargs):password_raw = ql.mem.read(ql.reg.r0, ql.reg.r2)password = ''for item in password_raw:if 0 <= item <= 9:password += chr(item + 48)else:password += chr(item + 87)print("The password is: %s" % password)def partial_run_init(ql):# argv prepareql.reg.arch_sp -= 0x30arg0_ptr = ql.reg.arch_spql.mem.write(arg0_ptr, b"kaimendaji")ql.reg.arch_sp -= 0x10arg1_ptr = ql.reg.arch_spql.mem.write(arg1_ptr, b"000000") # arbitrary passwordql.reg.arch_sp -= 0x20argv_ptr = ql.reg.arch_spql.mem.write(argv_ptr, ql.pack(arg0_ptr))ql.mem.write(argv_ptr + ql.pointersize, ql.pack(arg1_ptr))ql.reg.r2 = 2ql.reg.r3 = argv_ptrwith open("../examples/rootfs/blob/u-boot.bin.img", "rb") as f:uboot_code = f.read()ql = Qiling(code=uboot_code[0x40:], archtype="arm", ostype="blob", profile="uboot_bin.ql", verbose=QL_VERBOSE.OFF)image_base_addr = ql.loader.load_addressql.hook_address(my_getenv, image_base_addr + 0x13AC0)ql.hook_address(get_password, image_base_addr + 0x48634)partial_run_init(ql)ql.run(image_base_addr + 0x486B4, image_base_addr + 0x48718)if __name__ == "__main__":get_kaimendaji_password()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。