diff --git a/Cargo.lock b/Cargo.lock index 17c663f..4da151f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1820,7 +1820,7 @@ dependencies = [ [[package]] name = "iced" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "iced_core", "iced_futures", @@ -1834,7 +1834,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "bitflags 2.5.0", "bytes", @@ -1852,7 +1852,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "futures", "iced_core", @@ -1866,7 +1866,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "bitflags 2.5.0", "bytemuck", @@ -1887,7 +1887,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -1899,7 +1899,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "bytes", "iced_core", @@ -1911,7 +1911,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "bytemuck", "cosmic-text", @@ -1927,7 +1927,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "bitflags 2.5.0", "bytemuck", @@ -1947,11 +1947,12 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "iced_renderer", "iced_runtime", "num-traits", + "once_cell", "rustc-hash", "thiserror", "unicode-segmentation", @@ -1960,7 +1961,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.13.0-dev" -source = "git+https://github.com/iced-rs/iced?rev=978327f9e7f68d3e5bc280faa0617487d8eabc57#978327f9e7f68d3e5bc280faa0617487d8eabc57" +source = "git+https://github.com/iced-rs/iced?rev=143f4c86caeb43cfff6573fe192c8eb877bb044c#143f4c86caeb43cfff6573fe192c8eb877bb044c" dependencies = [ "iced_futures", "iced_graphics", diff --git a/Cargo.toml b/Cargo.toml index 0abec1b..9766506 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,9 +33,9 @@ flate2 = "1.0.30" [dependencies.iced] version = "0.13.0-dev" git = "https://github.com/iced-rs/iced" -rev = "978327f9e7f68d3e5bc280faa0617487d8eabc57" +rev = "143f4c86caeb43cfff6573fe192c8eb877bb044c" default-features = false -features = ["advanced", "svg", "tokio", "wgpu", "image"] +features = ["wgpu", "tiny-skia", "advanced", "svg", "tokio", "image"] [package.metadata.winresource] LegalCopyright = "Copyright (c) 2024 b1n " diff --git a/src/bin/maker.rs b/src/bin/maker.rs index 3bc09be..3fefa0e 100644 --- a/src/bin/maker.rs +++ b/src/bin/maker.rs @@ -5,13 +5,14 @@ use std::{fs, ops::Not, path::PathBuf}; use anyhow::{anyhow, bail}; use dirs::{desktop_dir, home_dir}; use iced::{ + alignment::{Horizontal, Vertical}, application, futures::TryFutureExt, widget::{ button, column, horizontal_rule, pick_list, radio, row, svg::Handle, text, text_editor, text_input, Column, Svg, }, - Alignment, Length, Size, Task, Theme, + Length, Size, Task, Theme, }; use pumpbin::{ plugin::{Plugin, PluginInfo, PluginReplace}, @@ -476,30 +477,30 @@ impl Maker { text("Plugin Name"), text_input("", self.plugin_name()).on_input(MakerMessage::PluginNameChanged), ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text("Author"), text_input("", self.author()).on_input(MakerMessage::AuthorChanged), ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text("Version"), text_input("", self.version()).on_input(MakerMessage::VersionChanged), ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text("Prefix"), text_input("", self.src_prefix()).on_input(MakerMessage::SrcPrefixChanged), ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text("Max Len"), text_input("", self.max_len()).on_input(MakerMessage::MaxLenChanged), ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), ] .spacing(10) - .align_items(Alignment::Center), + .align_y(Vertical::Center), column![ text("Type"), row![ @@ -523,15 +524,15 @@ impl Maker { text_input("", self.size_holder()) .on_input(MakerMessage::SizeHolderChanged) ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) ), ShellcodeSaveType::Remote => None, }) - .align_items(Alignment::Center) + .align_y(Vertical::Center) .height(30) .spacing(20) ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text("Windows"), row![ @@ -545,10 +546,10 @@ impl Maker { choose_button() .on_press(MakerMessage::ChooseFileClicked(ChooseFileType::WindowsLib)), ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10) ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text("Linux"), row![ @@ -561,10 +562,10 @@ impl Maker { choose_button() .on_press(MakerMessage::ChooseFileClicked(ChooseFileType::LinuxLib)), ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10) ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text("Darwin"), row![ @@ -578,10 +579,10 @@ impl Maker { choose_button() .on_press(MakerMessage::ChooseFileClicked(ChooseFileType::DarwinLib)), ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10) ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), row![ column![column![ text("Encrypt Shellcode Plug-in"), @@ -592,10 +593,10 @@ impl Maker { ChooseFileType::EncryptShellcodePlugin )) ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10), ] - .align_items(Alignment::Start)] + .align_x(Horizontal::Left)] .push_maybe(match self.shellcode_save_type() { ShellcodeSaveType::Local => None, ShellcodeSaveType::Remote => Some(column![ @@ -607,12 +608,12 @@ impl Maker { ChooseFileType::FormatUrlRemote )) ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10) ]), }) .width(Length::FillPortion(1)) - .align_items(Alignment::Center), + .align_x(Horizontal::Center), column![column![ text("Format Encrypted Shellcode Plug-in"), row![ @@ -622,10 +623,10 @@ impl Maker { ChooseFileType::FormatEncryptedShellcodePlugin )) ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10), ] - .align_items(Alignment::Start)] + .align_x(Horizontal::Left)] .push_maybe(match self.shellcode_save_type() { ShellcodeSaveType::Local => None, ShellcodeSaveType::Remote => Some( @@ -640,16 +641,16 @@ impl Maker { ChooseFileType::UploadFinalShellcodeRemote )) ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10) ] - .align_items(Alignment::Start) + .align_x(Horizontal::Left) ), }) .width(Length::FillPortion(1)) - .align_items(Alignment::Center) + .align_x(Horizontal::Center) ] - .align_items(Alignment::Center) + .align_y(Vertical::Center) .spacing(10), column![ text("Description"), @@ -657,14 +658,14 @@ impl Maker { .on_action(MakerMessage::DescAction) .height(Length::Fill) ] - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![row![ button("Generate").on_press(MakerMessage::GenerateClicked) ]] - .align_items(Alignment::Center) + .align_x(Horizontal::Center) .width(Length::Fill), ] - .align_items(Alignment::Start) + .align_x(Horizontal::Left) .padding(20) .spacing(10); @@ -703,20 +704,20 @@ impl Maker { row![ column![version] .width(Length::Fill) - .align_items(Alignment::Start), - column![row![b1n, github].align_items(Alignment::Center)] + .align_x(Horizontal::Left), + column![row![b1n, github].align_y(Vertical::Center)] .width(Length::Shrink) - .align_items(Alignment::Center), + .align_x(Horizontal::Center), column![theme_list] .width(Length::Fill) - .align_items(Alignment::End) + .align_x(Horizontal::Right) ] .padding([0, 20]) - .align_items(Alignment::Center) + .align_y(Vertical::Center) ] - .align_items(Alignment::Center); + .align_x(Horizontal::Center); - column![maker, footer].align_items(Alignment::Center) + column![maker, footer].align_x(Horizontal::Center) } pub fn theme(&self) -> Theme { diff --git a/src/lib.rs b/src/lib.rs index 1394c54..794c292 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,13 +11,14 @@ use std::{fmt::Display, fs, ops::Not, path::PathBuf}; use anyhow::anyhow; use dirs::{desktop_dir, home_dir}; use iced::{ + alignment::{Horizontal, Vertical}, futures::TryFutureExt, widget::{ - button, column, container, horizontal_rule, pick_list, row, scrollable, + button, column, container, horizontal_rule, pick_list, row, svg::{self, Handle}, text, text_editor, text_input, vertical_rule, Column, Scrollable, Svg, }, - Alignment, Background, Length, Task, Theme, + Background, Length, Task, Theme, }; use plugin::{Plugin, Plugins}; use plugin_system::Pass; @@ -489,7 +490,7 @@ impl Pumpbin { .on_press(Message::ChooseShellcodeClicked), ] .spacing(3) - .align_items(Alignment::Center); + .align_y(Vertical::Center); let pick_list_handle = || pick_list::Handle::Dynamic { closed: pick_list::Icon { @@ -535,7 +536,7 @@ impl Pumpbin { text!("Generate") ] .spacing(3) - .align_items(Alignment::Center), + .align_y(Vertical::Center), ) .on_press_maybe( if self.selected_binary_type().is_some() && self.shellcode_src().is_empty().not() { @@ -547,10 +548,10 @@ impl Pumpbin { let setting_panel = row![shellcode_src, platform, binary_type, generate] .spacing(spacing) - .align_items(Alignment::Center); + .align_y(Vertical::Center); let mut plugin_items = column![] - .align_items(Alignment::Center) + .align_x(Horizontal::Center) .spacing(10) .width(Length::Fill) .padding(3); @@ -568,7 +569,7 @@ impl Pumpbin { .color(self.theme().extended_palette().primary.base.color) ] .spacing(spacing) - .align_items(Alignment::Center), + .align_y(Vertical::Center), ); } @@ -587,7 +588,7 @@ impl Pumpbin { row![ column![text!(" {}", plugin.info().author())] .width(Length::Fill) - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![row!( text(" ").color(self.theme().extended_palette().primary.base.color), if plugin.bins().windows().is_platform_supported() { @@ -608,13 +609,13 @@ impl Pumpbin { text(" ").color(self.theme().extended_palette().danger.base.color) } ) - .align_items(Alignment::Center)] + .align_y(Vertical::Center)] .width(Length::Shrink) - .align_items(Alignment::End) + .align_x(Horizontal::Right) ] - .align_items(Alignment::Center), + .align_y(Vertical::Center), ] - .align_items(Alignment::Center), + .align_x(Horizontal::Center), ) .width(Length::Fill) .style(match self.selected_plugin() { @@ -672,14 +673,12 @@ impl Pumpbin { plugin_info_title(" Darwin:"), plugin_info_title(" Description:"), ] - .align_items(Alignment::Start)] - .align_items(Alignment::Start), - row![pumpkin] - .height(Length::Fill) - .align_items(Alignment::End), + .align_x(Horizontal::Left)] + .align_y(Vertical::Top), + row![pumpkin].height(Length::Fill).align_y(Vertical::Bottom), ] .width(Length::FillPortion(1)) - .align_items(Alignment::Start), + .align_x(Horizontal::Left), column![ text(plugin.info().plugin_name()).size(16), text(plugin.info().author()).size(16), @@ -711,7 +710,7 @@ impl Pumpbin { } ] .spacing(3) - .align_items(Alignment::Center), + .align_y(Vertical::Center), row![ text(BinaryType::Executable.to_string()), { @@ -733,7 +732,7 @@ impl Pumpbin { } ] .spacing(3) - .align_items(Alignment::Center), + .align_y(Vertical::Center), row![ text(BinaryType::Executable.to_string()), { @@ -755,30 +754,27 @@ impl Pumpbin { } ] .spacing(3) - .align_items(Alignment::Center), + .align_y(Vertical::Center), text_editor(self.plugin_desc()) .padding(10) .height(Length::Fill) .on_action(Message::EditorAction), ] .width(Length::FillPortion(3)) - .align_items(Alignment::Start) + .align_x(Horizontal::Left) ] .spacing(spacing) - .align_items(Alignment::Center) + .align_y(Vertical::Center) } None => row![pumpkin], }] - .align_items(Alignment::Start); + .align_x(Horizontal::Left); let plugin_list_view = container( column![ - Scrollable::with_direction( - plugin_items, - scrollable::Direction::Vertical(scrollable::Properties::new()) - ) - .width(Length::Fill) - .height(Length::Fill), + Scrollable::new(plugin_items) + .width(Length::Fill) + .height(Length::Fill), column![ horizontal_rule(0), row![ @@ -818,16 +814,16 @@ impl Pumpbin { vertical_rule(0), ] .width(Length::Fill) - .align_items(Alignment::Center), + .align_y(Vertical::Center), ] .width(Length::Fill) .height(20) - .align_items(Alignment::Center) + .align_x(Horizontal::Center) ] .spacing(3) .width(Length::Fill) .height(Length::Fill) - .align_items(Alignment::Center), + .align_x(Horizontal::Center), ) .height(Length::Fill) .style(|theme: &Theme| { @@ -840,7 +836,7 @@ impl Pumpbin { plugin_list_view.width(Length::FillPortion(1)) ] .spacing(spacing) - .align_items(Alignment::Center) + .align_y(Vertical::Center) .width(Length::Fill) .height(Length::Fill); @@ -879,27 +875,27 @@ impl Pumpbin { row![ column![version] .width(Length::Fill) - .align_items(Alignment::Start), - column![row![b1n, github].align_items(Alignment::Center)] + .align_x(Horizontal::Left), + column![row![b1n, github].align_y(Vertical::Center)] .width(Length::Shrink) - .align_items(Alignment::Center), + .align_x(Horizontal::Center), column![theme_list] .width(Length::Fill) - .align_items(Alignment::End) + .align_x(Horizontal::Right) ] .padding([0, padding]) - .align_items(Alignment::Center) + .align_y(Vertical::Center) ] - .align_items(Alignment::Center); + .align_x(Horizontal::Center); let home = column![ column![setting_panel, plugin_panel] .padding(padding) - .align_items(Alignment::Center) + .align_x(Horizontal::Center) .spacing(spacing), footer ] - .align_items(Alignment::Center); + .align_x(Horizontal::Center); home } diff --git a/src/main.rs b/src/main.rs index 30caf80..305718c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -40,5 +40,6 @@ fn try_main() -> anyhow::Result<()> { .window(utils::window_settings()) .theme(Pumpbin::theme) .run()?; + Ok(()) } diff --git a/src/utils.rs b/src/utils.rs index f934efd..93921b5 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -73,7 +73,7 @@ pub fn replace( let position = memmem::find_iter(bin, holder) .next() - .ok_or(anyhow!("Not found {}", String::from_utf8_lossy(holder)))?; + .ok_or(anyhow!("Not found {}.", String::from_utf8_lossy(holder)))?; let mut random: Vec = iter::repeat(b'0') .take(max_len - replace_by.len()) .collect();