-
Notifications
You must be signed in to change notification settings - Fork 87
4.1 Q&A and incoming features
It's based on buildroot, we download them from https://toolchains.bootlin.com/downloads/releases/toolchains/
Yes, it's a real virtual machine we use qemu-system-*. It's not a container or something based on chroot. You can fully debug any elf, all syscall are implemented.
Folks around the world to safely fuzz a program without breaking the host or exploit/reverse a CTF challenge. If someone sends you an x86-64 binary that you don't trust just 'arm_now start x86-64 --sync' and you will be able to safely run it.
Go on freenode irc and "/join #arm_now cpu".
linux kernel, gcc, busybox, qemu, https://buildroot.org, https://toolchains.bootlin.com ...
I do this project as a hobby if you find bugs report and I will fix, the code source is very small about 300 lines of python, don't be afraid to pull request.
- Publish writeups and blog post :)
- Tell me which features you need.
- Report any bug! Let's fix them all.
- Report all typo in this wiki.
If you want to do your first opensource contribution this is it, there are a lot of easy things to be done. You only need 30 minutes for most of them.
Open filesystem.py at line 131 and modify the Cpio class to implement thoose methods:
- Add files to a cpio archive using shell commands...
- Get files to a cpio archive using shell commands...
Same as cpio, it's less than 30 minutes of work!
A lot of CPU arch are still not supported, bfin, sparc .., at line 13 of config.py you will find a dict that you can play with to add new CPU arch.
Search a package manager for all arch like => https://wiki.openwrt.org/about/mirrors or http://pkg.entware.net/binaries/ For now only few CPU arch have a package manager (opkg), the reason is that I didn't dig too much to find mirrors for the others
Make a script based on buildroot that will compile every existing arch? this sounds like hours of work :/ but that would be awesome.
Let the user choose the libc, (musl, glibc, uclibc), this is very easy 10-20 min, edit the function scrawl_kernel in download.py, to reach this code you have to use the --real-source option.
Also in the function scrawl_kernel in download.py, 10 minutes of work.
When arm_now is started for the first time "arm_now start --sync", it would be nice to detect which vm has to be started depending on the ELF stored in the current folder. // 5 minutes of work. import magic and add one or two if.
Allow the user to give any binary as input and run it in the right CPU arch, all dependencies should be automatically resolved and installed.
Use buildroot to compile gdb or gdbserver for all arch, have look at utils/test-pkg. strace, ltrace are a plus. Having strace + ltrace + gdbserver on all arch is the goal.
I don't have a Mac but it should be straightforward to correct the dependencies in the function check_dependencies_or_exit of arm_now.py.
Be awesome and contribute!
Name | What |
---|---|
NoobieDog | resize option, pull request |
Sakiir | documentation, pull request |
zachriggle | code cleanup, pull request |
lucasduffey | security fix, issue |
ixty | add aarch64 package manager, issue |
RomainKraft | resize fix, issue |
XeR | typo |