Skip to content

4.1 Q&A and incoming features

nongiach edited this page Jun 20, 2018 · 8 revisions

Where filesystem and kernel come from?

It's based on buildroot, we download them from https://toolchains.bootlin.com/downloads/releases/toolchains/

Is it a real virtual machine?

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.

Who uses arm_now?

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.

Where can we talk about arm_now or fuzzing/exploit/reverse?

Go on freenode irc and "/join #arm_now cpu".

Who to thanks?

linux kernel, gcc, busybox, qemu, https://buildroot.org, https://toolchains.bootlin.com ...

How can I help?

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.

Contributions needed

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.

cpio rootfs

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...

Tar rootfs

Same as cpio, it's less than 30 minutes of work!

Need more CPU arch

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.

Need more package manager

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

Better images

Make a script based on buildroot that will compile every existing arch? this sounds like hours of work :/ but that would be awesome.

All libc

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.

All kernel version

Also in the function scrawl_kernel in download.py, 10 minutes of work.

Auto detect mode

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.

Dependencies

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.

Exploit tools

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.

Add support for MacOS host

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!

Contributors

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