Skip to content

xfm00mm/ipwndfu_rewrite_c

Repository files navigation

~~~~~ checkm8_tool ~~~~~

This is the code for the optimized version of checkm8 that I wrote as a part of
this project. It consists of a variety of modules and was built to run on
Linux. It will probably not work on Windows or MacOS, although a port could
definitely be possible in the future.

	checkm8_remote: the main executable generated by the project. It
			includes various functionality for communicating with
			and exploiting a device (currently, only iPhones with
			an A10 chip are supported), including payload transfer
			and execution. The main program is located in the
			checkm8_remote/main.c file. It is currently configured
			to install and run a basic AES payload. 

	checkm8_libusb: a userspace library for communicating with USB devices.
			Currently this is unmodified from the standard release
			of libusb1.0, but in future versions there will be 
			modifications to enable custom USB behavior.

	checkm8_payloads: the custom payload functionality is defined in this
			  directory. To compile payloads, you need the 
			  aarch64-linux-gnu toolchain to cross-compile binaries
			  for the iPhone platform.

~~~~~ Building ~~~~~

This project uses cmake as its build system. To build, simply do the following
commands in the project's root directory

	mkdir build
	cd build
	cmake ..
	make

~~~~~ Usage ~~~~~~

To run the checkm8-remote binary, simply run

	./build/checkm8_remote/checkm8_remote

without any flags. Functionality is currently hardcoded to the AES payload, but
will be made more configurable in the future. Make sure that the target device
is in DFU mode before running the program.