feat: initialize BogusMips project with basic app structure

- Add Cargo.toml with project metadata and dependencies.
- Create main application logic in src/app.rs, including a simple UI that displays "Hello, World!".
- Implement main function in src/main.rs to run the application with specified window options.
- Set up module structure with src/ui for theme management.
- Add dark theme application in src/ui/theme.rs to customize the UI appearance.
This commit is contained in:
Jan Kammerath committed 2026-10-28 10:08:45 +01:00
1 parent bb31650f8a
commit d243a3af64
8 files changed
+4195 -1

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
/target
.DS_Store
Generated
+4103
View File
File diff suppressed because it is too large. Load diff
+14
View File
@@ -0,0 +1,14 @@
[package]
name = "bogusmips"
version = "0.1.0"
edition = "2024"
rust-version = "1.85"
description = "Analyze how far an Android app (*.apk / *.aab) can be disassembled"
readme = "README.md"
[dependencies]
eframe = "0.32.3"
[profile.release]
lto = true
codegen-units = 1
+21 -1
View File
@@ -1,3 +1,23 @@
# BogusMips
BogusMips is written in Rust and allows performing analyses on how far your Android app can be disassembled. It allows you to open the `*.apk` or `*.aab` file of your app to see how far your app can be disassembled.
BogusMips is written in Rust and allows performing analyses on how far your Android app can be disassembled. It allows you to open the `*.apk` or `*.aab` file of your app to see how far your app can be disassembled.
## Building & running
Requires Rust 1.85 or newer.
```sh
cargo run # debug build
cargo run --release # optimized build
```
## Project structure
```
src/
├── main.rs # entry point, window setup
├── app.rs # application state and main UI loop
└── ui/
├── mod.rs
└── theme.rs # dark theme configuration
```
+23
View File
@@ -0,0 +1,23 @@
use eframe::egui;
use crate::ui::theme;
#[derive(Default)]
pub struct BogusMipsApp;
impl BogusMipsApp {
pub fn new(cc: &eframe::CreationContext<'_>) -> Self {
theme::apply_dark(&cc.egui_ctx);
Self
}
}
impl eframe::App for BogusMipsApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
egui::CentralPanel::default().show(ctx, |ui| {
ui.centered_and_justified(|ui| {
ui.heading("Hello, World!");
});
});
}
}
+20
View File
@@ -0,0 +1,20 @@
mod app;
mod ui;
use app::BogusMipsApp;
fn main() -> eframe::Result {
let options = eframe::NativeOptions {
viewport: eframe::egui::ViewportBuilder::default()
.with_title("BogusMips")
.with_inner_size([1024.0, 720.0])
.with_min_inner_size([640.0, 400.0]),
..Default::default()
};
eframe::run_native(
"BogusMips",
options,
Box::new(|cc| Ok(Box::new(BogusMipsApp::new(cc)))),
)
}
+1
View File
@@ -0,0 +1 @@
pub mod theme;
+11
View File
@@ -0,0 +1,11 @@
use eframe::egui::{self, Color32};
pub fn apply_dark(ctx: &egui::Context) {
ctx.set_theme(egui::Theme::Dark);
ctx.style_mut_of(egui::Theme::Dark, |style| {
let bg = Color32::from_rgb(0x1e, 0x1e, 0x22);
style.visuals.panel_fill = bg;
style.visuals.window_fill = bg;
style.visuals.override_text_color = Some(Color32::from_rgb(0xe6, 0xe6, 0xe6));
});
}