同步操作将从 qiling/qiling 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/usr/bin/env python3## Cross Platform and Multi Architecture Advanced Binary Emulation Framework#import platform, sys, unittest, os, threading, timefrom unicorn import UcError, UC_ERR_READ_UNMAPPED, UC_ERR_FETCH_UNMAPPEDsys.path.append("..")from qiling import *from qiling.const import *from qiling.exception import *from qiling.os.posix import syscallfrom qiling.os.mapper import QlFsMappedObjectfrom qiling.os.posix.stat import Fstatfrom qiling.os.filestruct import ql_fileclass ELFTest(unittest.TestCase):def test_elf_linux_execve_x8664(self):if platform.system() == "Darwin" and platform.machine() == "arm64":returnql = Qiling(["../examples/rootfs/x8664_linux/bin/posix_syscall_execve"], "../examples/rootfs/x8664_linux", verbose=QL_VERBOSE.DEBUG)ql.run()for key, value in ql.loader.env.items():QL_TEST=valueself.assertEqual("TEST_QUERY", QL_TEST)self.assertEqual("child", ql.loader.argv[0])del QL_TESTdel qldef test_elf_linux_cloexec_x8664(self):with open('../examples/rootfs/x8664_linux/testfile', 'wb') as f:f.write(b'0123456789')err = ql_file.open('output.txt', os.O_RDWR | os.O_CREAT, 0o777)ql = Qiling(["../examples/rootfs/x8664_linux/bin/x8664_cloexec_test"],"../examples/rootfs/x8664_linux",verbose=QL_VERBOSE.DEBUG,stderr=err,multithread=True)ql.run()os.close(err.fileno())with open('output.txt', 'rb') as f:self.assertTrue(b'fail' in f.read())del qldef test_multithread_elf_linux_x86(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):nonlocal buf_outtry:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()buf_out = bufexcept:passbuf_out = Noneql = Qiling(["../examples/rootfs/x86_linux/bin/x86_multithreading"], "../examples/rootfs/x86_linux", multithread=True, verbose=QL_VERBOSE.DEBUG)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertTrue("thread 2 ret val is" in buf_out)del qldef test_multithread_elf_linux_arm64(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):nonlocal buf_outtry:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()buf_out = bufexcept:passbuf_out = Noneql = Qiling(["../examples/rootfs/arm64_linux/bin/arm64_multithreading"], "../examples/rootfs/arm64_linux", multithread=True, verbose=QL_VERBOSE.DEBUG)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertTrue("thread 2 ret val is" in buf_out)del qldef test_multithread_elf_linux_x8664(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):nonlocal buf_outtry:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()buf_out = bufexcept:passbuf_out = Noneql = Qiling(["../examples/rootfs/x8664_linux/bin/x8664_multithreading"], "../examples/rootfs/x8664_linux", multithread=True, profile= "profiles/append_test.ql")ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertTrue("thread 2 ret val is" in buf_out)del qldef test_multithread_elf_linux_mips32el(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):nonlocal buf_outtry:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()buf_out = bufexcept:passbuf_out = Noneql = Qiling(["../examples/rootfs/mips32el_linux/bin/mips32el_multithreading"], "../examples/rootfs/mips32el_linux", multithread=True, verbose=QL_VERBOSE.DEBUG)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertTrue("thread 2 ret val is" in buf_out)del qldef test_multithread_elf_linux_arm(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):nonlocal buf_outtry:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()buf_out = bufexcept:passbuf_out = Noneql = Qiling(["../examples/rootfs/arm_linux/bin/arm_multithreading"], "../examples/rootfs/arm_linux", multithread=True, verbose=QL_VERBOSE.DEBUG)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertTrue("thread 2 ret val is" in buf_out)del qldef test_tcp_elf_linux_x86(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):try:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()if buf.startswith("server send()"):ql.buf_out = bufexcept:passql = Qiling(["../examples/rootfs/x86_linux/bin/x86_tcp_test","20001"], "../examples/rootfs/x86_linux", multithread=True)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertEqual("server send() 14 return 14.\n", ql.buf_out)del qldef test_tcp_elf_linux_x8664(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):try:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()if buf.startswith("server send()"):ql.buf_out = bufexcept:passql = Qiling(["../examples/rootfs/x8664_linux/bin/x8664_tcp_test","20002"], "../examples/rootfs/x8664_linux", multithread=True)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertEqual("server send() 14 return 14.\n", ql.buf_out)del qldef test_tcp_elf_linux_arm(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):try:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()if buf.startswith("server write()"):ql.buf_out = bufexcept:passql = Qiling(["../examples/rootfs/arm_linux/bin/arm_tcp_test","20003"], "../examples/rootfs/arm_linux", multithread=True)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertEqual("server write() 14 return 14.\n", ql.buf_out)del qldef test_tcp_elf_linux_arm64(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):try:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()if buf.startswith("server send()"):ql.buf_out = bufexcept:passql = Qiling(["../examples/rootfs/arm64_linux/bin/arm64_tcp_test","20004"], "../examples/rootfs/arm64_linux", multithread=True)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertEqual("server send() 14 return 14.\n", ql.buf_out)del qldef test_tcp_elf_linux_mips32el(self):ql = Qiling(["../examples/rootfs/mips32el_linux/bin/mips32el_tcp_test","20005"], "../examples/rootfs/mips32el_linux", multithread=True)ql.run()del qldef test_udp_elf_linux_x86(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):try:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()if buf.startswith("server sendto()"):ql.buf_out = bufexcept:passql = Qiling(["../examples/rootfs/x86_linux/bin/x86_udp_test","20007"], "../examples/rootfs/x86_linux", multithread=True)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertEqual("server sendto() 14 return 14.\n", ql.buf_out)del qldef test_udp_elf_linux_x8664(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):try:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()if buf.startswith("server sendto()"):ql.buf_out = bufexcept:passql = Qiling(["../examples/rootfs/x8664_linux/bin/x8664_udp_test","20008"], "../examples/rootfs/x8664_linux", multithread=True)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertEqual("server sendto() 14 return 14.\n", ql.buf_out)del qldef test_udp_elf_linux_arm64(self):def check_write(ql, write_fd, write_buf, write_count, *args, **kw):try:buf = ql.mem.read(write_buf, write_count)buf = buf.decode()if buf.startswith("server sendto()"):ql.buf_out = bufexcept:passql = Qiling(["../examples/rootfs/arm64_linux/bin/arm64_udp_test","20009"], "../examples/rootfs/arm64_linux", multithread=True)ql.set_syscall("write", check_write, QL_INTERCEPT.ENTER)ql.run()self.assertEqual("server sendto() 14 return 14.\n", ql.buf_out)del qldef test_http_elf_linux_x8664(self):def picohttpd():ql = Qiling(["../examples/rootfs/x8664_linux/bin/picohttpd"], "../examples/rootfs/x8664_linux", multithread=True, verbose=QL_VERBOSE.DEBUG)ql.run()picohttpd_therad = threading.Thread(target=picohttpd, daemon=True)picohttpd_therad.start()time.sleep(1)f = os.popen("curl http://127.0.0.1:12913")self.assertEqual("httpd_test_successful", f.read())def test_http_elf_linux_arm(self):def picohttpd():ql = Qiling(["../examples/rootfs/arm_linux/bin/picohttpd"], "../examples/rootfs/arm_linux", multithread=True, verbose=QL_VERBOSE.DEBUG)ql.run()picohttpd_therad = threading.Thread(target=picohttpd, daemon=True)picohttpd_therad.start()time.sleep(1)f = os.popen("curl http://127.0.0.1:12913")self.assertEqual("httpd_test_successful", f.read())if __name__ == "__main__":unittest.main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。