Home

Awesome

Smali Code Injector (SCI)

Language Language Language Language License

Automate assembly code (smali) injection within Android applications.

The initial ambition of this project was to automate stack trace injections within Android applications in order to facilitate my master thesis work. Being able to log and display applications' runtime method calls along with their returned value greatly helps in reverse engineering complex applications by providing an insight into their logic and workflow.

Then, new features and payloads were progressively added in an attempt to create a framework fully capable of injecting any type of assembly code. Users familiar with Android development can easily implement compatible payloads. SCI is in charge of automating low level operation such as registers allocation, dependancie, type, etc.

Tampering Android applications has never been that easy!

Further information about Android reverse engineering can be found at:

Automation for a simpler world...

Code injections are performed at the assembly level (smali files) making the differenciation process between legit and modified applications complicated and time consuming - it would require considerable forensic work such as network, permissions, signature and code analysis -.

A high level overview of the steps involved during code injection is:

  1. Disassembling the application.
  2. Collecting relevant information about the application.
    • Classes name.
    • Methods name.
    • Registers number and type.
    • etc.
  3. Editing the AndroidManifest.xml to add permissions, services and broadcastReceivers (depending on the payload requirements).
  4. Injecting and tweaking up the selected payload within the targeted method(s). Some Android libraries are also injected in order to defeat obfuscation.
  5. Reassembling and signing the app with a valid self-signed certificate.

Usage

Roadmap

Project Information

This framework was developed in the context of my master thesis work in July 2015 and rewritten in 2017.

Sponsor 💖

If you want to support this project and appreciate the time invested in developping, maintening and extending it; consider donating toward my next cup of coffee. ☕

It is easy, all you got to do is press the Sponsor button at the top of this page or alternatively click this link. 💸

Reporting Issues

Found a bug? I would love to squash it! 🐛

Please report all issues on the GitHub issues tracker.

Contributing

You would like to contribute to better this project? 🤩

Please submit all PRs on the GitHub pull requests tracker.

License

See LICENSE.