├── release_version.txt ├── doc ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png ├── 7.png ├── 8.png ├── xmachoviewer.png ├── BUILD.md └── THANKS.md ├── res ├── main.icns ├── main.ico ├── thanks │ ├── Dan0xE.png │ ├── clayne.png │ ├── hmstk.png │ ├── AdricNet.png │ ├── AliHadi.png │ ├── Bartosz.png │ ├── DavClark.png │ ├── Xylit0l.png │ ├── elastic.png │ ├── phithon.png │ ├── rmusser.png │ ├── AdamHenault.png │ ├── DavidZimmer.png │ ├── FilipNavara.png │ ├── FrenchYeti.png │ ├── GiladReich.png │ ├── JoaoVitor.png │ ├── SpriteOvO.png │ ├── fr0zenbag.png │ ├── miT231-spec.png │ ├── misonothx.png │ ├── sapdragon.png │ ├── AndersonLeite.png │ ├── DuncanOgilvie.png │ ├── IntegralTech.png │ ├── JasonJackTan.png │ ├── LeandroFroes.png │ ├── FernandoMerces.png │ ├── clayne.json │ ├── misonothx.json │ ├── JoaoVitor.json │ ├── SpriteOvO.json │ ├── fr0zenbag.json │ ├── hmstk.json │ ├── sapdragon.json │ ├── GiladReich.json │ ├── JasonJackTan.json │ ├── miT231-spec.json │ ├── AdricNet.json │ ├── FrenchYeti.json │ ├── Dan0xE.json │ ├── Xylit0l.json │ ├── phithon.json │ ├── AdamHenault.json │ ├── DavidZimmer.json │ ├── FilipNavara.json │ ├── elastic.json │ ├── AliHadi.json │ ├── Bartosz.json │ ├── LeandroFroes.json │ ├── rmusser.json │ ├── DuncanOgilvie.json │ ├── IntegralTech.json │ ├── AndersonLeite.json │ ├── DavClark.json │ └── FernandoMerces.json ├── Info.plist ├── resource.rc ├── license.txt ├── Info.plist.in ├── resource.rc.in ├── resource_icon.rc.in ├── windows.manifest.xml └── readme.txt ├── .github ├── FUNDING.yml └── workflows │ ├── docker-image.yml │ └── builder.yml ├── src ├── gui │ ├── images │ │ └── about.png │ ├── icons │ │ ├── Add.16.16.png │ │ ├── All.16.16.png │ │ ├── Code.16.16.png │ │ ├── Copy.16.16.png │ │ ├── DIE.16.16.png │ │ ├── Data.16.16.png │ │ ├── Edit.16.16.png │ │ ├── Exit.16.16.png │ │ ├── File.16.16.png │ │ ├── Goto.16.16.png │ │ ├── Hash.16.16.png │ │ ├── Info.16.16.png │ │ ├── List.16.16.png │ │ ├── Mime.16.16.png │ │ ├── NFD.16.16.png │ │ ├── Next.16.16.png │ │ ├── Note.16.16.png │ │ ├── Open.16.16.png │ │ ├── Path.16.16.png │ │ ├── Save.16.16.png │ │ ├── TLS.16.16.png │ │ ├── Tool.16.16.png │ │ ├── Yara.16.16.png │ │ ├── Action.16.16.png │ │ ├── Address.16.16.png │ │ ├── Binary.16.16.png │ │ ├── Debug.16.16.png │ │ ├── Disasm.16.16.png │ │ ├── DotNet.16.16.png │ │ ├── Entropy.16.16.png │ │ ├── Entry.16.16.png │ │ ├── Export.16.16.png │ │ ├── Extract.16.16.png │ │ ├── Follow.16.16.png │ │ ├── Forward.16.16.png │ │ ├── Header.16.16.png │ │ ├── Image.16.16.png │ │ ├── Import.16.16.png │ │ ├── Library.16.16.png │ │ ├── Offset.16.16.png │ │ ├── Option.16.16.png │ │ ├── Overlay.16.16.png │ │ ├── Patch.16.16.png │ │ ├── Refresh.16.16.png │ │ ├── Reloc.16.16.png │ │ ├── Remove.16.16.png │ │ ├── Resize.16.16.png │ │ ├── Script.16.16.png │ │ ├── Search.16.16.png │ │ ├── Section.16.16.png │ │ ├── Segment.16.16.png │ │ ├── Select.16.16.png │ │ ├── String.16.16.png │ │ ├── Symbol.16.16.png │ │ ├── Table.16.16.png │ │ ├── Value.16.16.png │ │ ├── Version.16.16.png │ │ ├── Backward.16.16.png │ │ ├── Bookmark.16.16.png │ │ ├── Convertor.16.16.png │ │ ├── Demangle.16.16.png │ │ ├── Download.16.16.png │ │ ├── Exception.16.16.png │ │ ├── Function.16.16.png │ │ ├── Inspector.16.16.png │ │ ├── Manifest.16.16.png │ │ ├── MemoryMap.16.16.png │ │ ├── Metadata.16.16.png │ │ ├── Reference.16.16.png │ │ ├── Resource.16.16.png │ │ ├── Shortcut.16.16.png │ │ ├── Signature.16.16.png │ │ ├── Certificate.16.16.png │ │ ├── Virustotal.16.16.png │ │ ├── BreakpointEnabled.16.16.png │ │ └── BreakpointDisabled.16.16.png │ ├── dialogoptions.ui │ ├── dialogabout.h │ ├── dialogabout.ui │ ├── guimainwindow.ui │ ├── dialogoptions.h │ ├── main_gui.cpp │ ├── guimainwindow.h │ ├── dialogoptions.cpp │ ├── rsrc.qrc │ ├── CMakeLists.txt │ ├── dialogabout.cpp │ ├── guimainwindow.cpp │ └── translation │ │ └── xmachoviewer_ar_AR.ts ├── CMakeLists.txt └── global.h ├── CMakeLists.txt ├── LICENSE ├── changelog.txt ├── README.md └── .gitmodules /release_version.txt: -------------------------------------------------------------------------------- 1 | 0.4.0 -------------------------------------------------------------------------------- /doc/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/1.png -------------------------------------------------------------------------------- /doc/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/2.png -------------------------------------------------------------------------------- /doc/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/3.png -------------------------------------------------------------------------------- /doc/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/4.png -------------------------------------------------------------------------------- /doc/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/5.png -------------------------------------------------------------------------------- /doc/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/6.png -------------------------------------------------------------------------------- /doc/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/7.png -------------------------------------------------------------------------------- /doc/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/8.png -------------------------------------------------------------------------------- /res/main.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/main.icns -------------------------------------------------------------------------------- /res/main.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/main.ico -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: horsicq 4 | -------------------------------------------------------------------------------- /doc/xmachoviewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/doc/xmachoviewer.png -------------------------------------------------------------------------------- /res/thanks/Dan0xE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/Dan0xE.png -------------------------------------------------------------------------------- /res/thanks/clayne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/clayne.png -------------------------------------------------------------------------------- /res/thanks/hmstk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/hmstk.png -------------------------------------------------------------------------------- /res/thanks/AdricNet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/AdricNet.png -------------------------------------------------------------------------------- /res/thanks/AliHadi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/AliHadi.png -------------------------------------------------------------------------------- /res/thanks/Bartosz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/Bartosz.png -------------------------------------------------------------------------------- /res/thanks/DavClark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/DavClark.png -------------------------------------------------------------------------------- /res/thanks/Xylit0l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/Xylit0l.png -------------------------------------------------------------------------------- /res/thanks/elastic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/elastic.png -------------------------------------------------------------------------------- /res/thanks/phithon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/phithon.png -------------------------------------------------------------------------------- /res/thanks/rmusser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/rmusser.png -------------------------------------------------------------------------------- /res/thanks/AdamHenault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/AdamHenault.png -------------------------------------------------------------------------------- /res/thanks/DavidZimmer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/DavidZimmer.png -------------------------------------------------------------------------------- /res/thanks/FilipNavara.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/FilipNavara.png -------------------------------------------------------------------------------- /res/thanks/FrenchYeti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/FrenchYeti.png -------------------------------------------------------------------------------- /res/thanks/GiladReich.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/GiladReich.png -------------------------------------------------------------------------------- /res/thanks/JoaoVitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/JoaoVitor.png -------------------------------------------------------------------------------- /res/thanks/SpriteOvO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/SpriteOvO.png -------------------------------------------------------------------------------- /res/thanks/fr0zenbag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/fr0zenbag.png -------------------------------------------------------------------------------- /res/thanks/miT231-spec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/miT231-spec.png -------------------------------------------------------------------------------- /res/thanks/misonothx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/misonothx.png -------------------------------------------------------------------------------- /res/thanks/sapdragon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/sapdragon.png -------------------------------------------------------------------------------- /src/gui/images/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/images/about.png -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.10) 2 | project(XMachOViewer) 3 | add_subdirectory(src) 4 | -------------------------------------------------------------------------------- /res/thanks/AndersonLeite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/AndersonLeite.png -------------------------------------------------------------------------------- /res/thanks/DuncanOgilvie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/DuncanOgilvie.png -------------------------------------------------------------------------------- /res/thanks/IntegralTech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/IntegralTech.png -------------------------------------------------------------------------------- /res/thanks/JasonJackTan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/JasonJackTan.png -------------------------------------------------------------------------------- /res/thanks/LeandroFroes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/LeandroFroes.png -------------------------------------------------------------------------------- /src/gui/icons/Add.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Add.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/All.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/All.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Code.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Code.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Copy.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Copy.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/DIE.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/DIE.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Data.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Data.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Edit.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Edit.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Exit.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Exit.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/File.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/File.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Goto.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Goto.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Hash.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Hash.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Info.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Info.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/List.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/List.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Mime.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Mime.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/NFD.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/NFD.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Next.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Next.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Note.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Note.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Open.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Open.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Path.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Path.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Save.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Save.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/TLS.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/TLS.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Tool.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Tool.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Yara.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Yara.16.16.png -------------------------------------------------------------------------------- /res/thanks/FernandoMerces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/res/thanks/FernandoMerces.png -------------------------------------------------------------------------------- /src/gui/icons/Action.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Action.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Address.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Address.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Binary.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Binary.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Debug.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Debug.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Disasm.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Disasm.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/DotNet.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/DotNet.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Entropy.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Entropy.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Entry.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Entry.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Export.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Export.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Extract.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Extract.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Follow.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Follow.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Forward.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Forward.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Header.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Header.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Image.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Image.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Import.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Import.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Library.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Library.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Offset.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Offset.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Option.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Option.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Overlay.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Overlay.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Patch.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Patch.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Refresh.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Refresh.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Reloc.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Reloc.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Remove.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Remove.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Resize.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Resize.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Script.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Script.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Search.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Search.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Section.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Section.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Segment.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Segment.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Select.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Select.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/String.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/String.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Symbol.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Symbol.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Table.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Table.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Value.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Value.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Version.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Version.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Backward.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Backward.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Bookmark.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Bookmark.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Convertor.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Convertor.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Demangle.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Demangle.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Download.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Download.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Exception.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Exception.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Function.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Function.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Inspector.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Inspector.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Manifest.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Manifest.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/MemoryMap.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/MemoryMap.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Metadata.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Metadata.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Reference.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Reference.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Resource.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Resource.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Shortcut.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Shortcut.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Signature.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Signature.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Certificate.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Certificate.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/Virustotal.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/Virustotal.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/BreakpointEnabled.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/BreakpointEnabled.16.16.png -------------------------------------------------------------------------------- /src/gui/icons/BreakpointDisabled.16.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horsicq/XMachOViewer/HEAD/src/gui/icons/BreakpointDisabled.16.16.png -------------------------------------------------------------------------------- /res/thanks/clayne.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Christopher Layne", 4 | "website": "", 5 | "github": "clayne", 6 | "twitter": "", 7 | "avatar": "clayne.png" 8 | } 9 | } -------------------------------------------------------------------------------- /res/thanks/misonothx.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "misonothx", 4 | "website": "", 5 | "github": "miso-xyz", 6 | "twitter": "", 7 | "avatar": "misonothx.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/JoaoVitor.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "João Vitor", 4 | "website": "http://joaovitor.gq", 5 | "github": "keowu", 6 | "twitter": "", 7 | "avatar": "JoaoVitor.png" 8 | } 9 | } -------------------------------------------------------------------------------- /res/thanks/SpriteOvO.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "SpriteOvO", 4 | "website": "", 5 | "github": "SpriteOvO", 6 | "twitter": "", 7 | "avatar": "SpriteOvO.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/fr0zenbag.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "fr0zenbag", 4 | "website": "", 5 | "github": "fr0zenbag", 6 | "twitter": "", 7 | "avatar": "fr0zenbag.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/hmstk.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Derick Estrada", 4 | "website": "hamsteri.co", 5 | "github": "hmstk", 6 | "twitter": "", 7 | "avatar": "hmstk.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/sapdragon.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "sapdragon", 4 | "website": "", 5 | "github": "sapdragon", 6 | "twitter": "", 7 | "avatar": "sapdragon.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/GiladReich.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Gilad Reich", 4 | "website": "https://greich.com", 5 | "github": "giladreich", 6 | "twitter": "", 7 | "avatar": "GiladReich.png" 8 | } 9 | } -------------------------------------------------------------------------------- /res/thanks/JasonJackTan.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Jason Jack Tan", 4 | "website": "", 5 | "github": "Perthys", 6 | "twitter": "", 7 | "avatar": "JasonJackTan.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/miT231-spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "miT231-spec", 4 | "website": "", 5 | "github": "miT231-spec", 6 | "twitter": "", 7 | "avatar": "miT231-spec.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/AdricNet.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Adric Net", 4 | "website": "http://dfirnotes.net", 5 | "github": "adricnet", 6 | "twitter": "dfirnotes", 7 | "avatar": "AdricNet.png" 8 | } 9 | } -------------------------------------------------------------------------------- /res/thanks/FrenchYeti.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "FrenchYeti", 4 | "website": "", 5 | "github": "FrenchYeti", 6 | "twitter": "frenchyeti", 7 | "avatar": "FrenchYeti.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/Dan0xE.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Dan0xE", 4 | "website": "https://dev.to/ubervisor", 5 | "github": "Dan0xE", 6 | "twitter": "dan0xe", 7 | "avatar": "Dan0xE.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/Xylit0l.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Xylit0l", 4 | "website": "http://xylibox.com", 5 | "github": "Xyl2k", 6 | "twitter": "Xylit0l", 7 | "avatar": "Xylit0l.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/phithon.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "phithon", 4 | "website": "https://www.leavesongs.com", 5 | "github": "phith0n", 6 | "twitter": "", 7 | "avatar": "phithon.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/AdamHenault.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Adam Henault", 4 | "website": "http://adamhlt.com/", 5 | "github": "adamhlt", 6 | "twitter": "", 7 | "avatar": "AdamHenault.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/DavidZimmer.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "David Zimmer", 4 | "website": "http://sandsprite.com", 5 | "github": "dzzie", 6 | "twitter": "", 7 | "avatar": "DavidZimmer.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/FilipNavara.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Filip Navara", 4 | "website": "", 5 | "github": "filipnavara", 6 | "twitter": "filipnavara", 7 | "avatar": "FilipNavara.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/elastic.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "elastic", 4 | "website": "https://www.elastic.co", 5 | "github": "elastic", 6 | "twitter": "elastic", 7 | "avatar": "elastic.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/AliHadi.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Ali Hadi", 4 | "website": "https://www.ashemery.com", 5 | "github": "ashemery", 6 | "twitter": "binaryz0ne", 7 | "avatar": "AliHadi.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/Bartosz.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Bartosz Wójcik", 4 | "website": "https://www.pelock.com", 5 | "github": "PELock", 6 | "twitter": "PELock", 7 | "avatar": "Bartosz.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/LeandroFroes.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Leandro Fróes", 4 | "website": "", 5 | "github": "leandrofroes", 6 | "twitter": "leandrofr0es", 7 | "avatar": "LeandroFroes.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/rmusser.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Robert Musser", 4 | "website": "https://rmusser.net/", 5 | "github": "rmusser01", 6 | "twitter": "r_o_b_e_r_t_1", 7 | "avatar": "rmusser.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/DuncanOgilvie.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Duncan Ogilvie", 4 | "website": "http://mrexodia.re", 5 | "github": "mrexodia", 6 | "twitter": "mrexodia", 7 | "avatar": "DuncanOgilvie.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/IntegralTech.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Integral-Tech", 4 | "website": "https://integral.org.cn/", 5 | "github": "Integral-Tech", 6 | "twitter": "", 7 | "avatar": "IntegralTech.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/AndersonLeite.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Anderson Leite", 4 | "website": "https://reversing.codes", 5 | "github": "buzzer-re", 6 | "twitter": "buzz3r_", 7 | "avatar": "AndersonLeite.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/DavClark.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Dav Clark", 4 | "website": "https://www.linkedin.com/in/davclark", 5 | "github": "davclark", 6 | "twitter": "davclark", 7 | "avatar": "DavClark.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /res/thanks/FernandoMerces.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "name": "Fernando Mercês", 4 | "website": "https://www.mentebinaria.com.br", 5 | "github": "merces", 6 | "twitter": "mer0x36", 7 | "avatar": "FernandoMerces.png" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /.github/workflows/docker-image.yml: -------------------------------------------------------------------------------- 1 | name: Docker Image CI 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | 11 | build: 12 | 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v2 17 | - name: Build the Docker image 18 | run: docker build . --file Dockerfile --tag my-image-name:$(date +%s) 19 | -------------------------------------------------------------------------------- /res/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | XMachOViewer 9 | CFBundleIconFile 10 | main.icns 11 | CFBundleIdentifier 12 | 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleLongVersionString 16 | 0.4.0 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 0.4. 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 0.4.0 25 | CSResourcesFileMapped 26 | 27 | NSHumanReadableCopyright 28 | ntinfo 29 | 30 | 31 | -------------------------------------------------------------------------------- /res/resource.rc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | IDI_ICON1 ICON DISCARDABLE "main.ico" 4 | 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "windows.manifest.xml" 6 | VS_VERSION_INFO VERSIONINFO 7 | FILEVERSION 0,4,0,0 8 | PRODUCTVERSION 0,4,0,0 9 | FILEFLAGSMASK 0x3fL 10 | #ifdef _DEBUG 11 | FILEFLAGS VS_FF_DEBUG 12 | #else 13 | FILEFLAGS 0x0L 14 | #endif 15 | FILEOS VOS__WINDOWS32 16 | FILETYPE VFT_DLL 17 | FILESUBTYPE 0x0L 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "040904b0" 22 | BEGIN 23 | VALUE "CompanyName", "ntinfo\0" 24 | VALUE "FileDescription", "XMachOViewer is a MACH-O viewer\0" 25 | VALUE "FileVersion", "0.4.0.0\0" 26 | VALUE "LegalCopyright", "horsicq@gmail.com\0" 27 | VALUE "OriginalFilename", "xmachoviewer.exe\0" 28 | VALUE "ProductName", "XMachOViewer\0" 29 | VALUE "ProductVersion", "0.4.0.0\0" 30 | END 31 | END 32 | BLOCK "VarFileInfo" 33 | BEGIN 34 | VALUE "Translation", 0x0409, 1200 35 | END 36 | END 37 | /* End of Version info */ 38 | 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019-2025 hors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /res/license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019-2025 hors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /res/Info.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | @X_PROJECTNAME@ 9 | CFBundleIconFile 10 | main.icns 11 | CFBundleIdentifier 12 | @MACOSX_BUNDLE_GUI_IDENTIFIER@ 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleLongVersionString 16 | @X_PROJECT_VERSION@ 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | @PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@. 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | @PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@ 25 | CSResourcesFileMapped 26 | 27 | NSHumanReadableCopyright 28 | @X_COMPANYNAME@ 29 | 30 | 31 | -------------------------------------------------------------------------------- /res/resource.rc.in: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "windows.manifest.xml" 4 | VS_VERSION_INFO VERSIONINFO 5 | FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 6 | PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 7 | FILEFLAGSMASK 0x3fL 8 | #ifdef _DEBUG 9 | FILEFLAGS VS_FF_DEBUG 10 | #else 11 | FILEFLAGS 0x0L 12 | #endif 13 | FILEOS VOS__WINDOWS32 14 | FILETYPE VFT_DLL 15 | FILESUBTYPE 0x0L 16 | BEGIN 17 | BLOCK "StringFileInfo" 18 | BEGIN 19 | BLOCK "040904b0" 20 | BEGIN 21 | VALUE "CompanyName", "@X_COMPANYNAME@\0" 22 | VALUE "FileDescription", "@X_DESCRIPTION@\0" 23 | VALUE "FileVersion", "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0\0" 24 | VALUE "LegalCopyright", "@X_MAINTAINER@\0" 25 | VALUE "OriginalFilename", "@X_ORIGINAL_FILENAME@.exe\0" 26 | VALUE "ProductName", "@X_PROJECTNAME@\0" 27 | VALUE "ProductVersion", "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0\0" 28 | END 29 | END 30 | BLOCK "VarFileInfo" 31 | BEGIN 32 | VALUE "Translation", 0x0409, 1200 33 | END 34 | END 35 | /* End of Version info */ 36 | 37 | -------------------------------------------------------------------------------- /changelog.txt: -------------------------------------------------------------------------------- 1 | 0.04 2 | ----------------------------------------------------------------------- 3 | [+] Bundle for Ubuntu 22.04 4 | [+] Bundle for Apple M1 processor 5 | [+] VirusTotal analysis 6 | [+] New disasm features 7 | [+] Many bugs have been fixed 8 | ####################################################################### 9 | 0.03 10 | ----------------------------------------------------------------------- 11 | [+] Source code qt6 compatibility 12 | [+] New info file widget 13 | [+] New structs 14 | [+] Qwt 6.2.0 15 | [+] New translations 16 | [+] Many bugs have been fixed. 17 | ####################################################################### 18 | 0.02 19 | ----------------------------------------------------------------------- 20 | [+] m68k support 21 | [+] bridgeOS support 22 | [+] Linux AppImage 23 | [+] New structs 24 | [+] Autotools build system 25 | [+] CMAKE build system 26 | [+] PKG installer for OSX 27 | [+] New translations 28 | [+] Many bugs have been fixed. 29 | ####################################################################### 30 | 0.01 31 | ----------------------------------------------------------------------- 32 | [+] Init 33 | ####################################################################### 34 | -------------------------------------------------------------------------------- /res/resource_icon.rc.in: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | IDI_ICON1 ICON DISCARDABLE "main.ico" 4 | 5 | CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "windows.manifest.xml" 6 | VS_VERSION_INFO VERSIONINFO 7 | FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 8 | PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@,0 9 | FILEFLAGSMASK 0x3fL 10 | #ifdef _DEBUG 11 | FILEFLAGS VS_FF_DEBUG 12 | #else 13 | FILEFLAGS 0x0L 14 | #endif 15 | FILEOS VOS__WINDOWS32 16 | FILETYPE VFT_DLL 17 | FILESUBTYPE 0x0L 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "040904b0" 22 | BEGIN 23 | VALUE "CompanyName", "@X_COMPANYNAME@\0" 24 | VALUE "FileDescription", "@X_DESCRIPTION@\0" 25 | VALUE "FileVersion", "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0\0" 26 | VALUE "LegalCopyright", "@X_MAINTAINER@\0" 27 | VALUE "OriginalFilename", "@X_ORIGINAL_FILENAME@.exe\0" 28 | VALUE "ProductName", "@X_PROJECTNAME@\0" 29 | VALUE "ProductVersion", "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@.0\0" 30 | END 31 | END 32 | BLOCK "VarFileInfo" 33 | BEGIN 34 | VALUE "Translation", 0x0409, 1200 35 | END 36 | END 37 | /* End of Version info */ 38 | 39 | -------------------------------------------------------------------------------- /src/gui/dialogoptions.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | DialogOptions 4 | 5 | 6 | Qt::ApplicationModal 7 | 8 | 9 | 10 | 0 11 | 0 12 | 489 13 | 452 14 | 15 | 16 | 17 | Options 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 0 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | XOptionsWidget 38 | QWidget 39 |
xoptionswidget.h
40 | 1 41 |
42 |
43 | 44 | 45 |
46 | -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.10) 2 | include(../dep/build_tools/cmake/deploy.cmake) 3 | 4 | find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) 5 | 6 | if(${QT_VERSION_MAJOR} EQUAL 5) 7 | find_package(Qt5 REQUIRED COMPONENTS Widgets Concurrent Network Script ScriptTools PrintSupport OpenGL Svg Sql LinguistTools) 8 | endif() 9 | 10 | if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) 11 | find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Concurrent Network PrintSupport OpenGL Svg Sql Qml LinguistTools) 12 | endif() 13 | 14 | file (STRINGS ${PROJECT_SOURCE_DIR}/release_version.txt X_PROJECT_VERSION) 15 | project(XMachOViewer VERSION ${X_PROJECT_VERSION} LANGUAGES CXX) 16 | 17 | set(X_COMPANYNAME "ntinfo") 18 | set(X_PROJECTNAME "XMachOViewer") 19 | set(X_MAINTAINER "horsicq@gmail.com") 20 | set(X_DESCRIPTION "XMachOViewer is a MACH-O viewer") 21 | set(X_HOMEPAGE "https://horsicq.github.io/") 22 | set(X_ORIGINAL_FILENAME "xmachoviewer") 23 | 24 | set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.xmachoviewer) 25 | 26 | include(../dep/build_tools/cmake/deploy_init.cmake) 27 | 28 | add_subdirectory(../dep/XCppfilt XCppfilt) 29 | add_subdirectory(../dep/XCapstone XCapstone) 30 | add_subdirectory(../dep/XArchive XArchive) 31 | add_subdirectory(../dep/XYara XYara) 32 | add_subdirectory(gui xmachoviewer) 33 | -------------------------------------------------------------------------------- /src/global.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef _GLOBAL_H 22 | #define _GLOBAL_H 23 | 24 | #include 25 | 26 | #define X_APPLICATIONDISPLAYNAME "XMachOViewer" 27 | #define X_APPLICATIONNAME "xmachoviewer" 28 | #define X_APPLICATIONVERSION "0.04" 29 | #define X_ORGANIZATIONNAME "NTInfo" 30 | #define X_ORGANIZATIONDOMAIN "ntinfo.biz" 31 | #define X_OPTIONSFILE "xmachoviewer.ini" 32 | #define X_SHORTCUTSFILE "shortcuts.ini" 33 | 34 | #endif // _GLOBAL_H 35 | -------------------------------------------------------------------------------- /res/windows.manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | true 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/gui/dialogabout.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef DIALOGABOUT_H 22 | #define DIALOGABOUT_H 23 | 24 | #include 25 | #include 26 | 27 | #include "../global.h" 28 | #include "capstone/capstone.h" 29 | #include "qwt_global.h" 30 | #include "xoptions.h" 31 | 32 | namespace Ui { 33 | class DialogAbout; 34 | } 35 | 36 | class DialogAbout : public QDialog { 37 | Q_OBJECT 38 | 39 | public: 40 | explicit DialogAbout(QWidget *pParent = nullptr); 41 | ~DialogAbout(); 42 | 43 | private slots: 44 | void on_pushButtonOK_clicked(); 45 | 46 | private: 47 | Ui::DialogAbout *ui; 48 | }; 49 | 50 | #endif // DIALOGABOUT_H 51 | -------------------------------------------------------------------------------- /src/gui/dialogabout.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | DialogAbout 4 | 5 | 6 | Qt::ApplicationModal 7 | 8 | 9 | 10 | 0 11 | 0 12 | 609 13 | 349 14 | 15 | 16 | 17 | About 18 | 19 | 20 | true 21 | 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 0 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | Qt::Horizontal 39 | 40 | 41 | 42 | 40 43 | 20 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | OK 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | XAboutWidget 62 | QWidget 63 |
xaboutwidget.h
64 | 1 65 |
66 |
67 | 68 | 69 |
70 | -------------------------------------------------------------------------------- /src/gui/guimainwindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | GuiMainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 1320 10 | 577 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | :/pics/logo.png 29 | 30 | 31 | Qt::AlignCenter 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 0 47 | 0 48 | 1320 49 | 22 50 | 51 | 52 | 53 | 54 | 55 | 56 | MACHWidget 57 | QWidget 58 |
machwidget.h
59 | 1 60 |
61 | 62 | MACHOFATWidget 63 | QWidget 64 |
machofatwidget.h
65 | 1 66 |
67 |
68 | 69 | 70 |
71 | -------------------------------------------------------------------------------- /src/gui/dialogoptions.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef DIALOGOPTIONS_H 22 | #define DIALOGOPTIONS_H 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | 30 | #include "../global.h" 31 | #include "searchsignaturesoptionswidget.h" 32 | #include "dieoptionswidget.h" 33 | #include "xbinary.h" 34 | #include "xdisasmviewoptionswidget.h" 35 | #include "xhexviewoptionswidget.h" 36 | #include "xinfodboptionswidget.h" 37 | #include "xonlinetoolsoptionswidget.h" 38 | #include "xoptions.h" 39 | 40 | namespace Ui { 41 | class DialogOptions; 42 | } 43 | 44 | class DialogOptions : public QDialog { 45 | Q_OBJECT 46 | 47 | public: 48 | explicit DialogOptions(QWidget *pParent, XOptions *pOptions, XOptions::GROUPID groupId); 49 | ~DialogOptions(); 50 | 51 | private: 52 | Ui::DialogOptions *ui; 53 | DIEOptionsWidget *g_pDIEOptionsWidget; 54 | SearchSignaturesOptionsWidget *g_pSearchSignaturesOptionsWidget; 55 | XHexViewOptionsWidget *g_pXHexViewOptionsWidget; 56 | XDisasmViewOptionsWidget *g_pXDisasmViewOptionsWidget; 57 | XOnlineToolsOptionsWidget *g_pXOnlineToolsOptionsWidget; 58 | XInfoDBOptionsWidget *g_pXInfoDBOptionsWidget; 59 | }; 60 | 61 | #endif // DIALOGOPTIONS_H 62 | -------------------------------------------------------------------------------- /doc/BUILD.md: -------------------------------------------------------------------------------- 1 | # Build Instructions for XMachOViewer 2 | 3 | ## Prerequisites 4 | 5 | Before you start building XMachOViewer, ensure you have the following tools installed: 6 | 7 | - **CMake**: Version 3.10 or higher 8 | - **Qt**: Qt5 or higher 9 | - **Compiler**: GCC, Clang, or MSVC 10 | 11 | ## Building on Linux 12 | 13 | 1. **Install dependencies**: 14 | ```bash 15 | sudo apt-get update 16 | sudo apt-get install cmake qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools build-essential 17 | ``` 18 | 19 | 2. **Clone the repository**: 20 | ```bash 21 | git clone https://github.com/horsicq/XMachOViewer.git 22 | cd XMachOViewer 23 | ``` 24 | 25 | 3. **Create a build directory**: 26 | ```bash 27 | mkdir build 28 | cd build 29 | ``` 30 | 31 | 4. **Generate Makefiles using CMake**: 32 | ```bash 33 | cmake .. 34 | ``` 35 | 36 | 5. **Build the project**: 37 | ```bash 38 | make 39 | ``` 40 | 41 | ## Building on Windows 42 | 43 | 1. **Install dependencies**: 44 | - Download and install [CMake](https://cmake.org/download/). 45 | - Download and install [Qt](https://www.qt.io/download). 46 | - Install a C++ compiler (Visual Studio is recommended). 47 | 48 | 2. **Clone the repository**: 49 | ```sh 50 | git clone https://github.com/horsicq/XMachOViewer.git 51 | cd XMachOViewer 52 | ``` 53 | 54 | 3. **Create a build directory**: 55 | ```sh 56 | mkdir build 57 | cd build 58 | ``` 59 | 60 | 4. **Generate Visual Studio project files using CMake**: 61 | ```sh 62 | cmake .. -G "Visual Studio 16 2019" 63 | ``` 64 | 65 | 5. **Build the project**: 66 | Open the generated `.sln` file in Visual Studio and build the solution. 67 | 68 | ## Building on macOS 69 | 70 | 1. **Install dependencies**: 71 | ```sh 72 | brew install cmake qt 73 | ``` 74 | 75 | 2. **Clone the repository**: 76 | ```sh 77 | git clone https://github.com/horsicq/XMachOViewer.git 78 | cd XMachOViewer 79 | ``` 80 | 81 | 3. **Create a build directory**: 82 | ```sh 83 | mkdir build 84 | cd build 85 | ``` 86 | 87 | 4. **Generate Makefiles using CMake**: 88 | ```sh 89 | cmake .. 90 | ``` 91 | 92 | 5. **Build the project**: 93 | ```sh 94 | make 95 | ``` 96 | 97 | ## Additional Notes 98 | 99 | - Ensure that the Qt installation path is correctly set in your environment variables. 100 | - For any issues encountered during the build process, refer to the [GitHub Issues](https://github.com/horsicq/XMachOViewer/issues) page for troubleshooting and support. -------------------------------------------------------------------------------- /src/gui/main_gui.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include 22 | 23 | #include "guimainwindow.h" 24 | #include "xoptions.h" 25 | 26 | int main(int argc, char *argv[]) 27 | { 28 | #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) 29 | QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 30 | #endif 31 | #ifdef Q_OS_MAC 32 | #ifndef QT_DEBUG 33 | QCoreApplication::setLibraryPaths(QStringList(QString(argv[0]).remove("MacOS/XMachOViewer") + "PlugIns")); 34 | #endif 35 | #endif 36 | QCoreApplication::setOrganizationName(X_ORGANIZATIONNAME); 37 | QCoreApplication::setOrganizationDomain(X_ORGANIZATIONDOMAIN); 38 | QCoreApplication::setApplicationName(X_APPLICATIONNAME); 39 | QCoreApplication::setApplicationVersion(X_APPLICATIONVERSION); 40 | 41 | if ((argc == 2) && ((QString(argv[1]) == "--version") || (QString(argv[1]) == "-v"))) { 42 | QString sInfo = QString("%1 v%2").arg(X_APPLICATIONDISPLAYNAME, X_APPLICATIONVERSION); 43 | printf("%s\n", sInfo.toUtf8().data()); 44 | 45 | return 0; 46 | } 47 | 48 | QApplication app(argc, argv); 49 | QApplication::setWindowIcon(QIcon(":/pics/main.png")); 50 | 51 | XOptions xOptions; 52 | 53 | xOptions.setName(X_OPTIONSFILE); 54 | 55 | xOptions.addID(XOptions::ID_VIEW_STYLE, "Fusion"); 56 | xOptions.addID(XOptions::ID_VIEW_QSS, ""); 57 | xOptions.addID(XOptions::ID_VIEW_LANG, "System"); 58 | xOptions.addID(XOptions::ID_VIEW_FONT, ""); 59 | 60 | xOptions.load(); 61 | 62 | XOptions::adjustApplicationView(X_APPLICATIONNAME, &xOptions); 63 | 64 | GuiMainWindow w; 65 | w.show(); 66 | 67 | return app.exec(); 68 | } 69 | -------------------------------------------------------------------------------- /src/gui/guimainwindow.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #ifndef GUIMAINWINDOW_H 22 | #define GUIMAINWINDOW_H 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | 29 | #include "../global.h" 30 | #include "dialogabout.h" 31 | #include "dialogarchive.h" 32 | #include "dialogoptions.h" 33 | #include "dialogshortcuts.h" 34 | #include "machofatwidget.h" 35 | #include "machwidget.h" 36 | #ifdef USE_YARA 37 | #include "xyara.h" 38 | #endif 39 | 40 | namespace Ui { 41 | class GuiMainWindow; 42 | } 43 | 44 | class GuiMainWindow : public QMainWindow { 45 | Q_OBJECT 46 | 47 | enum MODE { 48 | MODE_UNKNOWN = 0, 49 | MODE_MACHO, 50 | MODE_MACHOFAT 51 | }; 52 | 53 | public: 54 | explicit GuiMainWindow(QWidget *pParent = nullptr); 55 | ~GuiMainWindow(); 56 | 57 | private slots: 58 | void createMenus(); 59 | void actionOpenSlot(); 60 | void actionCloseSlot(); 61 | void actionExitSlot(); 62 | void actionDemangleSlot(); 63 | void actionShortcutsSlot(); 64 | void actionOptionsSlot(); 65 | void actionAboutSlot(); 66 | void adjustWindow(); 67 | void processFile(QString sFileName); 68 | void closeCurrentFile(); 69 | 70 | protected: 71 | void dragEnterEvent(QDragEnterEvent *event) override; 72 | void dragMoveEvent(QDragMoveEvent *event) override; 73 | void dropEvent(QDropEvent *event) override; 74 | 75 | private: 76 | Ui::GuiMainWindow *ui; 77 | XOptions g_xOptions; 78 | XShortcuts g_xShortcuts; 79 | FW_DEF::OPTIONS g_formatOptions; 80 | QFile *g_pFile; 81 | XInfoDB *g_pXInfo; 82 | QTemporaryFile *g_pTempFile; 83 | MODE g_mode; 84 | }; 85 | 86 | #endif // GUIMAINWINDOW_H 87 | -------------------------------------------------------------------------------- /src/gui/dialogoptions.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "dialogoptions.h" 22 | 23 | #include "ui_dialogoptions.h" 24 | 25 | DialogOptions::DialogOptions(QWidget *pParent, XOptions *pOptions, XOptions::GROUPID groupId) : QDialog(pParent), ui(new Ui::DialogOptions) 26 | { 27 | ui->setupUi(this); 28 | 29 | g_pDIEOptionsWidget = new DIEOptionsWidget(this); 30 | g_pSearchSignaturesOptionsWidget = new SearchSignaturesOptionsWidget(this); 31 | g_pXHexViewOptionsWidget = new XHexViewOptionsWidget(this); 32 | g_pXDisasmViewOptionsWidget = new XDisasmViewOptionsWidget(this); 33 | g_pXOnlineToolsOptionsWidget = new XOnlineToolsOptionsWidget(this); 34 | g_pXInfoDBOptionsWidget = new XInfoDBOptionsWidget(this); 35 | 36 | ui->widgetOptions->setOptions(pOptions, X_APPLICATIONDISPLAYNAME); 37 | 38 | ui->widgetOptions->addPage(g_pDIEOptionsWidget, tr("Scan")); 39 | g_pDIEOptionsWidget->setOptions(pOptions); 40 | 41 | ui->widgetOptions->addPage(g_pSearchSignaturesOptionsWidget, tr("Signatures")); 42 | g_pSearchSignaturesOptionsWidget->setOptions(pOptions); 43 | 44 | ui->widgetOptions->addPage(g_pXHexViewOptionsWidget, tr("Hex")); 45 | g_pXHexViewOptionsWidget->setOptions(pOptions); 46 | 47 | ui->widgetOptions->addPage(g_pXDisasmViewOptionsWidget, tr("Disasm")); 48 | g_pXDisasmViewOptionsWidget->setOptions(pOptions); 49 | 50 | ui->widgetOptions->addPage(g_pXOnlineToolsOptionsWidget, tr("Online tools")); 51 | g_pXOnlineToolsOptionsWidget->setOptions(pOptions); 52 | 53 | ui->widgetOptions->addPage(g_pXInfoDBOptionsWidget, tr("Info")); 54 | g_pXInfoDBOptionsWidget->setOptions(pOptions); 55 | 56 | ui->widgetOptions->setCurrentPage(groupId); 57 | } 58 | 59 | DialogOptions::~DialogOptions() 60 | { 61 | delete ui; 62 | } 63 | -------------------------------------------------------------------------------- /res/readme.txt: -------------------------------------------------------------------------------- 1 | # XMachOViewer 2 | 3 | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NF3FBD3KHMXDN) 4 | [![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/horsicq/XMachOViewer.svg)](https://github.com/horsicq/XMachOViewer/releases) 5 | [![GitHub All Releases](https://img.shields.io/github/downloads/horsicq/XMachOViewer/total.svg)](https://github.com/horsicq/XMachOViewer/releases) 6 | [![gitlocalized ](https://gitlocalize.com/repo/4736/whole_project/badge.svg)](https://github.com/horsicq/XTranslation) 7 | 8 | ## Overview 9 | 10 | XMachOViewer is a Mach-O viewer for Windows, Linux, and macOS. 11 | 12 | ## Features 13 | 14 | - **Heuristic Scan**: Automatically detect various characteristics and anomalies in Mach-O files. 15 | - **String Viewer**: Display all readable strings within the Mach-O file. 16 | - **Hex Viewer**: Inspect the raw hexadecimal content of the file. 17 | - **Disassembly Viewer**: View disassembled code for multiple architectures including x86/64, ARM, PPC, and m68k. 18 | - **Entropy Viewer**: Analyze the entropy to detect packed or encrypted sections. 19 | - **Hash Viewer**: Compute and display various hashes (MD5, SHA1, SHA256) of the file content. 20 | - **Crypto Search**: Search for common cryptographic signatures. 21 | - **Name Demangling**: Convert mangled symbol names back to their original form. 22 | - **Section Viewer**: Inspect and analyze different sections within the Mach-O file. 23 | - **Header Viewer**: Detailed view of Mach-O headers and load commands. 24 | - **Symbol Table Viewer**: Display and analyze the symbol table. 25 | - **Dynamic Library Viewer**: List dynamic libraries linked to the Mach-O file. 26 | - **File Format Detection**: Automatically detect the file format and type. 27 | - **Cross-Platform**: Available for Windows, Linux, and macOS. 28 | 29 | ## Downloads 30 | 31 | XMachOViewer can be downloaded from the [releases](https://github.com/horsicq/XMachOViewer/releases) page. 32 | 33 | ## Building 34 | 35 | Build instructions can be found in [BUILD.md](https://github.com/horsicq/XMachOViewer/blob/master/docs/BUILD.md). 36 | 37 | ## Usage 38 | 39 | Instructions to use `xmachoviewer` - The GUI version can be found in [RUN.md](https://github.com/horsicq/XMachOViewer/blob/master/docs/RUN.md). 40 | 41 | ## Changelog 42 | 43 | Changelog can be found in [changelog.txt](https://github.com/horsicq/XMachOViewer/blob/master/changelog.txt). 44 | 45 | ## Contributing 46 | 47 | You can help with translation! Follow [this link](https://github.com/horsicq/XTranslation). 48 | 49 | ## Screenshots 50 | 51 | ![Mascot](https://github.com/horsicq/XMachOViewer/blob/master/mascots/xmachoviewer.png "Mascot") 52 | ![1](https://github.com/horsicq/XMachOViewer/blob/master/docs/1.png "1") 53 | ![2](https://github.com/horsicq/XMachOViewer/blob/master/docs/2.png "2") 54 | ![3](https://github.com/horsicq/XMachOViewer/blob/master/docs/3.png "3") 55 | ![4](https://github.com/horsicq/XMachOViewer/blob/master/docs/4.png "4") 56 | ![5](https://github.com/horsicq/XMachOViewer/blob/master/docs/5.png "5") 57 | ![6](https://github.com/horsicq/XMachOViewer/blob/master/docs/6.png "6") 58 | ![7](https://github.com/horsicq/XMachOViewer/blob/master/docs/7.png "7") 59 | ![8](https://github.com/horsicq/XMachOViewer/blob/master/docs/8.png "8") 60 | 61 | ## Special Thanks 62 | 63 | - [PELock Software Protection & Reverse Engineering](https://www.pelock.com) 64 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XMachOViewer 2 | 3 | [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NF3FBD3KHMXDN) 4 | [![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/horsicq/XMachOViewer.svg)](https://github.com/horsicq/XMachOViewer/releases) 5 | [![GitHub All Releases](https://img.shields.io/github/downloads/horsicq/XMachOViewer/total.svg)](https://github.com/horsicq/XMachOViewer/releases) 6 | [![gitlocalized ](https://gitlocalize.com/repo/4736/whole_project/badge.svg)](https://github.com/horsicq/XTranslation) 7 | 8 | ## Overview 9 | 10 | XMachOViewer is a Mach-O viewer for Windows, Linux, and macOS. 11 | 12 | ## Features 13 | 14 | - **Heuristic Scan**: Automatically detect various characteristics and anomalies in Mach-O files. 15 | - **String Viewer**: Display all readable strings within the Mach-O file. 16 | - **Hex Viewer**: Inspect the raw hexadecimal content of the file. 17 | - **Disassembly Viewer**: View disassembled code for multiple architectures including x86/64, ARM, PPC, and m68k. 18 | - **Entropy Viewer**: Analyze the entropy to detect packed or encrypted sections. 19 | - **Hash Viewer**: Compute and display various hashes (MD5, SHA1, SHA256) of the file content. 20 | - **Crypto Search**: Search for common cryptographic signatures. 21 | - **Name Demangling**: Convert mangled symbol names back to their original form. 22 | - **Section Viewer**: Inspect and analyze different sections within the Mach-O file. 23 | - **Header Viewer**: Detailed view of Mach-O headers and load commands. 24 | - **Symbol Table Viewer**: Display and analyze the symbol table. 25 | - **Dynamic Library Viewer**: List dynamic libraries linked to the Mach-O file. 26 | - **File Format Detection**: Automatically detect the file format and type. 27 | - **Cross-Platform**: Available for Windows, Linux, and macOS. 28 | 29 | ## Downloads 30 | 31 | XMachOViewer can be downloaded from the [releases](https://github.com/horsicq/XMachOViewer/releases) page. 32 | 33 | ## Building 34 | 35 | Build instructions can be found in [BUILD.md](https://github.com/horsicq/XMachOViewer/blob/master/doc/BUILD.md). 36 | 37 | ## Usage 38 | 39 | Instructions to use `xmachoviewer` - The GUI version can be found in [RUN.md](https://github.com/horsicq/XMachOViewer/blob/master/doc/RUN.md). 40 | 41 | ## Changelog 42 | 43 | Changelog can be found in [changelog.txt](https://github.com/horsicq/XMachOViewer/blob/master/changelog.txt). 44 | 45 | ## Contributing 46 | 47 | You can help with translation! Follow [this link](https://github.com/horsicq/XTranslation). 48 | 49 | ## Screenshots 50 | 51 | ![Mascot](https://github.com/horsicq/XMachOViewer/blob/master/doc/xmachoviewer.png "Mascot") 52 | ![1](https://github.com/horsicq/XMachOViewer/blob/master/doc/1.png "1") 53 | ![2](https://github.com/horsicq/XMachOViewer/blob/master/doc/2.png "2") 54 | ![3](https://github.com/horsicq/XMachOViewer/blob/master/doc/3.png "3") 55 | ![4](https://github.com/horsicq/XMachOViewer/blob/master/doc/4.png "4") 56 | ![5](https://github.com/horsicq/XMachOViewer/blob/master/doc/5.png "5") 57 | ![6](https://github.com/horsicq/XMachOViewer/blob/master/doc/6.png "6") 58 | ![7](https://github.com/horsicq/XMachOViewer/blob/master/doc/7.png "7") 59 | ![8](https://github.com/horsicq/XMachOViewer/blob/master/doc/8.png "8") 60 | 61 | ## Special Thanks 62 | 63 | - [PELock Software Protection & Reverse Engineering](https://www.pelock.com) 64 | -------------------------------------------------------------------------------- /src/gui/rsrc.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icons/Add.16.16.png 4 | icons/Address.16.16.png 5 | icons/Backward.16.16.png 6 | icons/Binary.16.16.png 7 | icons/BreakpointDisabled.16.16.png 8 | icons/BreakpointEnabled.16.16.png 9 | icons/Certificate.16.16.png 10 | icons/Copy.16.16.png 11 | icons/Debug.16.16.png 12 | icons/Demangle.16.16.png 13 | icons/Disasm.16.16.png 14 | icons/DotNet.16.16.png 15 | icons/Download.16.16.png 16 | icons/Edit.16.16.png 17 | icons/Entropy.16.16.png 18 | icons/Entry.16.16.png 19 | icons/Exception.16.16.png 20 | icons/Exit.16.16.png 21 | icons/Extract.16.16.png 22 | icons/File.16.16.png 23 | icons/Forward.16.16.png 24 | icons/Goto.16.16.png 25 | icons/Hash.16.16.png 26 | icons/Header.16.16.png 27 | icons/Image.16.16.png 28 | icons/Info.16.16.png 29 | icons/Library.16.16.png 30 | icons/List.16.16.png 31 | icons/MemoryMap.16.16.png 32 | icons/Metadata.16.16.png 33 | icons/Mime.16.16.png 34 | icons/Offset.16.16.png 35 | icons/Open.16.16.png 36 | icons/Option.16.16.png 37 | icons/Overlay.16.16.png 38 | icons/Refresh.16.16.png 39 | icons/Resource.16.16.png 40 | icons/Save.16.16.png 41 | icons/Search.16.16.png 42 | icons/Section.16.16.png 43 | icons/Segment.16.16.png 44 | icons/Select.16.16.png 45 | icons/Shortcut.16.16.png 46 | icons/Signature.16.16.png 47 | icons/String.16.16.png 48 | icons/Symbol.16.16.png 49 | icons/TLS.16.16.png 50 | icons/Table.16.16.png 51 | icons/Tool.16.16.png 52 | icons/Value.16.16.png 53 | icons/Virustotal.16.16.png 54 | icons/Yara.16.16.png 55 | icons/Export.16.16.png 56 | icons/Import.16.16.png 57 | icons/Data.16.16.png 58 | icons/NFD.16.16.png 59 | icons/DIE.16.16.png 60 | icons/Version.16.16.png 61 | icons/Manifest.16.16.png 62 | icons/Action.16.16.png 63 | icons/Follow.16.16.png 64 | icons/Reloc.16.16.png 65 | icons/Next.16.16.png 66 | icons/All.16.16.png 67 | icons/Path.16.16.png 68 | icons/Note.16.16.png 69 | icons/Function.16.16.png 70 | icons/Script.16.16.png 71 | icons/Patch.16.16.png 72 | icons/Remove.16.16.png 73 | icons/Resize.16.16.png 74 | icons/Code.16.16.png 75 | icons/Reference.16.16.png 76 | icons/Bookmark.16.16.png 77 | icons/Convertor.16.16.png 78 | icons/Inspector.16.16.png 79 | images/about.png 80 | 81 | 82 | -------------------------------------------------------------------------------- /.github/workflows/builder.yml: -------------------------------------------------------------------------------- 1 | name: builder 2 | on: 3 | workflow_dispatch: 4 | release: 5 | types: [created] 6 | schedule: 7 | - cron: '0 0 * * MON' 8 | 9 | env: 10 | SRC_PATH: ${{ github.workspace }}/src 11 | 12 | jobs: 13 | build-ubuntu: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | with: 18 | submodules: recursive 19 | path: ${{ env.SRC_PATH }} 20 | 21 | - name: Install Qt (Ubuntu) 22 | run: | 23 | sudo apt-get update 24 | sudo apt-get install cmake qtbase5-dev qtscript5-dev qttools5-dev qttools5-dev-tools libqt5svg5-dev qtchooser qt5-qmake build-essential -y 25 | 26 | - name: Build 27 | working-directory: ${{ env.SRC_PATH }} 28 | run: | 29 | mkdir tmp_build 30 | cd tmp_build 31 | cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_PREFIX_PATH="/usr/lib/x86_64-linux-gnu/cmake/Qt5" .. 32 | make 33 | cpack -G DEB 34 | 35 | - name: Upload Release as Download 36 | uses: softprops/action-gh-release@v2 37 | env: 38 | RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} 39 | with: 40 | tag_name: Beta 41 | draft: false 42 | prerelease: true 43 | files: | 44 | ${{ env.SRC_PATH }}/tmp_build/packages/*.deb 45 | 46 | build-windows-32: 47 | runs-on: windows-2022 48 | steps: 49 | - uses: actions/checkout@v4 50 | with: 51 | submodules: 'recursive' 52 | path: ${{ env.SRC_PATH }} 53 | 54 | - name: Setup MSVC 55 | uses: ilammy/msvc-dev-cmd@v1 56 | with: 57 | arch: x86 58 | 59 | - name: Install Qt 60 | uses: jurplel/install-qt-action@v4 61 | with: 62 | version: '5.15.2' 63 | host: 'windows' 64 | target: 'desktop' 65 | arch: 'win32_msvc2019' 66 | dir: ${{ github.workspace }} 67 | modules: qtscript 68 | 69 | - name: Build 70 | shell: cmd 71 | working-directory: ${{ env.SRC_PATH }} 72 | run: | 73 | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86 74 | mkdir tmp_build 75 | cd tmp_build 76 | cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_PREFIX_PATH="${{ github.workspace }}\Qt\5.15.2\msvc2019" -G "NMake Makefiles" .. 77 | nmake 78 | cpack -G ZIP 79 | - name: Upload Release as Download 80 | uses: softprops/action-gh-release@v2 81 | env: 82 | RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} 83 | with: 84 | tag_name: Beta 85 | draft: false 86 | prerelease: true 87 | files: | 88 | ${{ env.SRC_PATH }}/tmp_build/packages/*.zip 89 | 90 | build-windows-64: 91 | runs-on: windows-2022 92 | steps: 93 | - uses: actions/checkout@v4 94 | with: 95 | submodules: 'recursive' 96 | path: ${{ env.SRC_PATH }} 97 | 98 | - name: Setup MSVC 99 | uses: ilammy/msvc-dev-cmd@v1 100 | with: 101 | arch: x64 102 | 103 | - name: Install Qt 104 | uses: jurplel/install-qt-action@v4 105 | with: 106 | version: '5.15.2' 107 | host: 'windows' 108 | target: 'desktop' 109 | arch: 'win64_msvc2019_64' 110 | dir: ${{ github.workspace }} 111 | modules: qtscript 112 | 113 | - name: Build 114 | shell: cmd 115 | working-directory: ${{ env.SRC_PATH }} 116 | run: | 117 | call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 118 | mkdir tmp_build 119 | cd tmp_build 120 | cmake -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_PREFIX_PATH="${{ github.workspace }}\Qt\5.15.2\msvc2019_64" -G "NMake Makefiles" .. 121 | nmake 122 | cpack -G ZIP 123 | - name: Upload Release as Download 124 | uses: softprops/action-gh-release@v2 125 | env: 126 | RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} 127 | with: 128 | tag_name: Beta 129 | draft: false 130 | prerelease: true 131 | files: | 132 | ${{ env.SRC_PATH }}/tmp_build/packages/*.zip 133 | -------------------------------------------------------------------------------- /src/gui/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16) 2 | 3 | project(XMachOViewer VERSION ${X_PROJECT_VERSION} LANGUAGES CXX) 4 | 5 | include(../../dep/build_tools/cmake/cpp_standart_setup.cmake) 6 | 7 | add_definitions(-DUSE_DEX) 8 | add_definitions(-DUSE_PDF) 9 | add_definitions(-DUSE_ARCHIVE) 10 | add_definitions(-DUSE_YARA) 11 | 12 | if(WIN32) 13 | add_definitions(-DNOMINMAX) 14 | endif() 15 | 16 | if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") 17 | include(../../dep/build_tools/cmake/init_translation.cmake) 18 | endif() 19 | 20 | include(${CMAKE_CURRENT_LIST_DIR}/../../dep/archive_widget/archive_widget.cmake) 21 | include(${CMAKE_CURRENT_LIST_DIR}/../../dep/XAboutWidget/xaboutwidget.cmake) 22 | include(${CMAKE_CURRENT_LIST_DIR}/../../dep/XStyles/xstyles.cmake) 23 | 24 | set(PROJECT_SOURCES 25 | ${ARCHIVE_WIDGET_SOURCES} 26 | ${XABOUTWIDGET_SOURCES} 27 | dialogabout.cpp 28 | dialogabout.h 29 | dialogabout.ui 30 | dialogoptions.cpp 31 | dialogoptions.h 32 | dialogoptions.ui 33 | main_gui.cpp 34 | guimainwindow.cpp 35 | guimainwindow.h 36 | guimainwindow.ui 37 | rsrc.qrc 38 | ) 39 | 40 | if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") 41 | include(../../dep/build_tools/cmake/create_translation.cmake) 42 | endif() 43 | 44 | if(WIN32) 45 | add_executable(XMachOViewer 46 | WIN32 47 | ${PROJECT_SOURCES} 48 | ${QM_FILES} 49 | ../../res/resource_icon.rc 50 | ) 51 | elseif(APPLE) 52 | add_executable(XMachOViewer 53 | MACOSX_BUNDLE 54 | ${PROJECT_SOURCES} 55 | ${QM_FILES} 56 | ) 57 | 58 | set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../../res/main.icns PROPERTIES 59 | MACOSX_PACKAGE_LOCATION "Resources") 60 | target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../res/main.icns) 61 | 62 | else() 63 | add_executable(XMachOViewer 64 | ${PROJECT_SOURCES} 65 | ${QM_FILES} 66 | ) 67 | endif() 68 | 69 | if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") 70 | if(APPLE) 71 | include(../../dep/build_tools/cmake/macdeployqt.cmake) 72 | endif() 73 | endif() 74 | 75 | target_link_libraries(XMachOViewer PRIVATE bzip2) 76 | target_link_libraries(XMachOViewer PRIVATE lzma) 77 | target_link_libraries(XMachOViewer PRIVATE zlib) 78 | target_link_libraries(XMachOViewer PRIVATE ppmd) 79 | target_link_libraries(XMachOViewer PRIVATE capstone) 80 | target_link_libraries(XMachOViewer PRIVATE cppfilt) 81 | target_link_libraries(XMachOViewer PRIVATE yara) 82 | 83 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) 84 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::Concurrent) 85 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::Network) 86 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::PrintSupport) 87 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::OpenGL) 88 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::Svg) 89 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::Sql) 90 | 91 | if(${QT_VERSION_MAJOR} EQUAL 5) 92 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::Script) 93 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::ScriptTools) 94 | endif() 95 | 96 | if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) 97 | target_link_libraries(XMachOViewer PRIVATE Qt${QT_VERSION_MAJOR}::Qml) 98 | endif() 99 | 100 | if(WIN32) 101 | target_link_libraries(XMachOViewer PRIVATE Wintrust) 102 | target_link_libraries(XMachOViewer PRIVATE Crypt32) 103 | endif() 104 | 105 | find_package(Threads REQUIRED) 106 | target_link_libraries(XMachOViewer PRIVATE Threads::Threads) 107 | 108 | if(WIN32) 109 | install (TARGETS XMachOViewer DESTINATION "./") 110 | include(../../dep/build_tools/cmake/deploy_qt_windows.cmake) 111 | include(../../dep/build_tools/cmake/deploy_msvc.cmake) 112 | include(../../dep/build_tools/cmake/deploy_openssl.cmake) 113 | elseif(APPLE) 114 | install(TARGETS XMachOViewer 115 | BUNDLE DESTINATION . 116 | LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 117 | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 118 | ) 119 | else() 120 | install (TARGETS XMachOViewer DESTINATION ${CMAKE_INSTALL_BINDIR}) 121 | endif() 122 | -------------------------------------------------------------------------------- /src/gui/dialogabout.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2025 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "dialogabout.h" 22 | 23 | #include "ui_dialogabout.h" 24 | 25 | DialogAbout::DialogAbout(QWidget *pParent) : QDialog(pParent), ui(new Ui::DialogAbout) 26 | { 27 | ui->setupUi(this); 28 | 29 | XAboutWidget::DATA _data = {}; 30 | 31 | _data.sInfo += QString("

%1

").arg(XOptions::getTitle(X_APPLICATIONDISPLAYNAME, X_APPLICATIONVERSION)); 32 | _data.sInfo += QString("

Copyright (C) 2021-2025 Hors

"); 33 | _data.sInfo += QString( 34 | "

%1: horsicq@gmail.com

") 36 | .arg(tr("Bugreports")); 37 | _data.sInfo += QString( 38 | "

%1: http://ntinfo.biz

") 40 | .arg(tr("Website")); 41 | _data.sInfo += 42 | QString( 43 | "

%1(Paypal): ntinfo.re@gmail.com

") 45 | .arg(tr("Donate")); 46 | _data.sInfo += 47 | QString( 48 | "

%1(BTC): 3DqddVBX9PKqMvNPXZ3gPHBNNRtD9CnmJo

") 50 | .arg(tr("Donate")); 51 | _data.sInfo += 52 | QString( 53 | "

%1: https://github.com/horsicq/XMachOViewer

") 55 | .arg(tr("Source code")); 56 | 57 | _data.sLibraries += 58 | QString( 59 | "

QT Library %1 http://qt-project.org

") 61 | .arg(QT_VERSION_STR); 62 | _data.sLibraries += 63 | QString( 64 | "

QWT Library %1 http://qwt.sourceforge.net

") 66 | .arg(QWT_VERSION_STR); 67 | _data.sLibraries += QString( 68 | "

Capstone %1.%2.%3 http://www.capstone-engine.org

") 70 | .arg(QString::number(CS_VERSION_MAJOR), QString::number(CS_VERSION_MINOR), QString::number(CS_VERSION_EXTRA)); 71 | 72 | _data.sLogoPath = ":/pics/logo.png"; 73 | _data.sUpdatesLink = "https://github.com/horsicq/XMachOViewer/releases"; 74 | _data.sThanksLink = "https://github.com/horsicq/XMachOViewer/blob/master/doc/THANKS.md"; 75 | 76 | ui->widgetAbout->setData(_data); 77 | } 78 | 79 | DialogAbout::~DialogAbout() 80 | { 81 | delete ui; 82 | } 83 | 84 | void DialogAbout::on_pushButtonOK_clicked() 85 | { 86 | this->close(); 87 | } 88 | 89 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "dep/XShortcuts"] 2 | path = dep/XShortcuts 3 | url = https://github.com/horsicq/XShortcuts 4 | [submodule "dep/FormatWidgets"] 5 | path = dep/FormatWidgets 6 | url = https://github.com/horsicq/FormatWidgets.git 7 | [submodule "dep/FormatDialogs"] 8 | path = dep/FormatDialogs 9 | url = https://github.com/horsicq/FormatDialogs.git 10 | [submodule "dep/Formats"] 11 | path = dep/Formats 12 | url = https://github.com/horsicq/Formats.git 13 | [submodule "dep/Controls"] 14 | path = dep/Controls 15 | url = https://github.com/horsicq/Controls.git 16 | [submodule "dep/XMemoryMapWidget"] 17 | path = dep/XMemoryMapWidget 18 | url = https://github.com/horsicq/XMemoryMapWidget.git 19 | [submodule "dep/XEntropyWidget"] 20 | path = dep/XEntropyWidget 21 | url = https://github.com/horsicq/XEntropyWidget.git 22 | [submodule "dep/XQwt"] 23 | path = dep/XQwt 24 | url = https://github.com/horsicq/XQwt.git 25 | [submodule "dep/XOptions"] 26 | path = dep/XOptions 27 | url = https://github.com/horsicq/XOptions.git 28 | [submodule "dep/StaticScan"] 29 | path = dep/StaticScan 30 | url = https://github.com/horsicq/StaticScan.git 31 | [submodule "dep/SpecAbstract"] 32 | path = dep/SpecAbstract 33 | url = https://github.com/horsicq/SpecAbstract.git 34 | [submodule "dep/XArchive"] 35 | path = dep/XArchive 36 | url = https://github.com/horsicq/XArchive.git 37 | [submodule "dep/XTranslation"] 38 | path = dep/XTranslation 39 | url = https://github.com/horsicq/XTranslation.git 40 | [submodule "dep/XStyles"] 41 | path = dep/XStyles 42 | url = https://github.com/horsicq/XStyles.git 43 | [submodule "dep/XDEX"] 44 | path = dep/XDEX 45 | url = https://github.com/horsicq/XDEX.git 46 | [submodule "dep/XHashWidget"] 47 | path = dep/XHashWidget 48 | url = https://github.com/horsicq/XHashWidget.git 49 | [submodule "dep/XCapstone"] 50 | path = dep/XCapstone 51 | url = https://github.com/horsicq/XCapstone.git 52 | [submodule "dep/XHexView"] 53 | path = dep/XHexView 54 | url = https://github.com/horsicq/XHexView.git 55 | [submodule "dep/XDisasmView"] 56 | path = dep/XDisasmView 57 | url = https://github.com/horsicq/XDisasmView.git 58 | [submodule "dep/XHexEdit"] 59 | path = dep/XHexEdit 60 | url = https://github.com/horsicq/XHexEdit.git 61 | [submodule "dep/signatures"] 62 | path = dep/signatures 63 | url = https://github.com/horsicq/signatures.git 64 | [submodule "dep/XDemangle"] 65 | path = dep/XDemangle 66 | url = https://github.com/horsicq/XDemangle.git 67 | [submodule "dep/XDemangleWidget"] 68 | path = dep/XDemangleWidget 69 | url = https://github.com/horsicq/XDemangleWidget.git 70 | [submodule "dep/XLLVMDemangler"] 71 | path = dep/XLLVMDemangler 72 | url = https://github.com/horsicq/XLLVMDemangler.git 73 | [submodule "dep/archive_widget"] 74 | path = dep/archive_widget 75 | url = https://github.com/horsicq/archive_widget.git 76 | [submodule "dep/nfd_widget"] 77 | path = dep/nfd_widget 78 | url = https://github.com/horsicq/nfd_widget.git 79 | [submodule "dep/build_tools"] 80 | path = dep/build_tools 81 | url = https://github.com/horsicq/build_tools 82 | [submodule "dep/XCppfilt"] 83 | path = dep/XCppfilt 84 | url = https://github.com/horsicq/XCppfilt 85 | [submodule "dep/XDynStructs"] 86 | path = dep/XDynStructs 87 | url = https://github.com/horsicq/XDynStructs 88 | [submodule "dep/XDynStructsEngine"] 89 | path = dep/XDynStructsEngine 90 | url = https://github.com/horsicq/XDynStructsEngine 91 | [submodule "dep/XDynStructsWidget"] 92 | path = dep/XDynStructsWidget 93 | url = https://github.com/horsicq/XDynStructsWidget 94 | [submodule "dep/XFileInfo"] 95 | path = dep/XFileInfo 96 | url = https://github.com/horsicq/XFileInfo 97 | [submodule "dep/XPDF"] 98 | path = dep/XPDF 99 | url = https://github.com/horsicq/XPDF 100 | [submodule "dep/XInfoDB"] 101 | path = dep/XInfoDB 102 | url = https://github.com/horsicq/XInfoDB 103 | [submodule "dep/XSymbolsWidget"] 104 | path = dep/XSymbolsWidget 105 | url = https://github.com/horsicq/XSymbolsWidget 106 | [submodule "dep/XOnlineTools"] 107 | path = dep/XOnlineTools 108 | url = https://github.com/horsicq/XOnlineTools 109 | [submodule "dep/XAboutWidget"] 110 | path = dep/XAboutWidget 111 | url = https://github.com/horsicq/XAboutWidget 112 | [submodule "dep/die_script"] 113 | path = dep/die_script 114 | url = https://github.com/horsicq/die_script 115 | [submodule "dep/hex_templates"] 116 | path = dep/hex_templates 117 | url = https://github.com/horsicq/hex_templates 118 | [submodule "dep/XExtractorWidget"] 119 | path = dep/XExtractorWidget 120 | url = https://github.com/horsicq/XExtractorWidget 121 | [submodule "dep/XExtractor"] 122 | path = dep/XExtractor 123 | url = https://github.com/horsicq/XExtractor 124 | [submodule "dep/XUpdate"] 125 | path = dep/XUpdate 126 | url = https://github.com/horsicq/XUpdate 127 | [submodule "dep/XGithub"] 128 | path = dep/XGithub 129 | url = https://github.com/horsicq/XGithub 130 | [submodule "dep/XVisualizationWidget"] 131 | path = dep/XVisualizationWidget 132 | url = https://github.com/horsicq/XVisualizationWidget 133 | [submodule "dep/XDecompiler"] 134 | path = dep/XDecompiler 135 | url = https://github.com/horsicq/XDecompiler 136 | [submodule "dep/XYara"] 137 | path = dep/XYara 138 | url = https://github.com/horsicq/XYara 139 | [submodule "dep/yara_widget"] 140 | path = dep/yara_widget 141 | url = https://github.com/horsicq/yara_widget 142 | [submodule "dep/die_widget"] 143 | path = dep/die_widget 144 | url = https://github.com/horsicq/die_widget 145 | [submodule "dep/Detect-It-Easy"] 146 | path = dep/Detect-It-Easy 147 | url = https://github.com/horsicq/Detect-It-Easy 148 | [submodule "dep/XDataConvertorWidget"] 149 | path = dep/XDataConvertorWidget 150 | url = https://github.com/horsicq/XDataConvertorWidget 151 | [submodule "dep/XScanEngine"] 152 | path = dep/XScanEngine 153 | url = https://github.com/horsicq/XScanEngine 154 | [submodule "dep/XDisasmCore"] 155 | path = dep/XDisasmCore 156 | url = https://github.com/horsicq/XDisasmCore.git 157 | [submodule "dep/XRegionsWidget"] 158 | path = dep/XRegionsWidget 159 | url = https://github.com/horsicq/XRegionsWidget.git 160 | [submodule "dep/XStaticUnpacker"] 161 | path = dep/XStaticUnpacker 162 | url = https://github.com/horsicq/XStaticUnpacker 163 | -------------------------------------------------------------------------------- /doc/THANKS.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | 4 | 15 | 16 | 17 | 18 | 32 | 33 | 34 | 35 | 49 | 50 | 51 | 52 | 66 | 67 | 68 | 69 | 83 | 84 | 85 | 86 | 94 | 95 | 96 | 97 | 111 | 112 | 113 | 114 | 128 | 129 | 130 | 131 | 142 | 143 | 144 | 145 | 159 | 160 | 161 | 162 | 176 | 177 | 178 | 179 | 193 | 194 | 195 | 196 | 207 | 208 | 209 | 210 | 218 | 219 | 220 | 221 | 232 | 233 | 234 | 235 | 246 | 247 | 248 | 249 | 260 | 261 | 262 | 263 | 274 | 275 | 276 | 277 | 285 | 286 | 287 | 288 | 299 | 300 | 301 | 302 | 313 | 314 | 315 | 316 | 324 | 325 | 326 | 327 | 335 | 336 | 337 | 338 | 349 | 350 | 351 | 352 | 366 | 367 | 368 | 369 | 377 | 378 | 379 | 380 | 388 | 389 | 390 | 391 | 405 | 406 |

5 |

6 | Adam Henault 7 |

8 |

9 | Website: http://adamhlt.com/ 10 |

11 |

12 | GitHub: adamhlt 13 |

14 |
19 |

20 | Adric Net 21 |

22 |

23 | Website: http://dfirnotes.net 24 |

25 |

26 | GitHub: adricnet 27 |

28 |

29 | Twitter: dfirnotes 30 |

31 |
36 |

37 | Ali Hadi 38 |

39 |

40 | Website: https://www.ashemery.com 41 |

42 |

43 | GitHub: ashemery 44 |

45 |

46 | Twitter: binaryz0ne 47 |

48 |
53 |

54 | Anderson Leite 55 |

56 |

57 | Website: https://reversing.codes 58 |

59 |

60 | GitHub: buzzer-re 61 |

62 |

63 | Twitter: buzz3r_ 64 |

65 |
70 |

71 | Bartosz Wójcik 72 |

73 |

74 | Website: https://www.pelock.com 75 |

76 |

77 | GitHub: PELock 78 |

79 |

80 | Twitter: PELock 81 |

82 |
87 |

88 | Christopher Layne 89 |

90 |

91 | GitHub: clayne 92 |

93 |
98 |

99 | Dan0xE 100 |

101 |

102 | Website: https://dev.to/ubervisor 103 |

104 |

105 | GitHub: Dan0xE 106 |

107 |

108 | Twitter: dan0xe 109 |

110 |
115 |

116 | Dav Clark 117 |

118 |

119 | Website: https://www.linkedin.com/in/davclark 120 |

121 |

122 | GitHub: davclark 123 |

124 |

125 | Twitter: davclark 126 |

127 |
132 |

133 | David Zimmer 134 |

135 |

136 | Website: http://sandsprite.com 137 |

138 |

139 | GitHub: dzzie 140 |

141 |
146 |

147 | Duncan Ogilvie 148 |

149 |

150 | Website: http://mrexodia.re 151 |

152 |

153 | GitHub: mrexodia 154 |

155 |

156 | Twitter: mrexodia 157 |

158 |
163 |

164 | elastic 165 |

166 |

167 | Website: https://www.elastic.co 168 |

169 |

170 | GitHub: elastic 171 |

172 |

173 | Twitter: elastic 174 |

175 |
180 |

181 | Fernando Mercês 182 |

183 |

184 | Website: https://www.mentebinaria.com.br 185 |

186 |

187 | GitHub: merces 188 |

189 |

190 | Twitter: mer0x36 191 |

192 |
197 |

198 | Filip Navara 199 |

200 |

201 | GitHub: filipnavara 202 |

203 |

204 | Twitter: filipnavara 205 |

206 |
211 |

212 | fr0zenbag 213 |

214 |

215 | GitHub: fr0zenbag 216 |

217 |
222 |

223 | FrenchYeti 224 |

225 |

226 | GitHub: FrenchYeti 227 |

228 |

229 | Twitter: frenchyeti 230 |

231 |
236 |

237 | Gilad Reich 238 |

239 |

240 | Website: https://greich.com 241 |

242 |

243 | GitHub: giladreich 244 |

245 |
250 |

251 | Derick Estrada 252 |

253 |

254 | Website: hamsteri.co 255 |

256 |

257 | GitHub: hmstk 258 |

259 |
264 |

265 | Integral-Tech 266 |

267 |

268 | Website: https://integral.org.cn/ 269 |

270 |

271 | GitHub: Integral-Tech 272 |

273 |
278 |

279 | Jason Jack Tan 280 |

281 |

282 | GitHub: Perthys 283 |

284 |
289 |

290 | João Vitor 291 |

292 |

293 | Website: http://joaovitor.gq 294 |

295 |

296 | GitHub: keowu 297 |

298 |
303 |

304 | Leandro Fróes 305 |

306 |

307 | GitHub: leandrofroes 308 |

309 |

310 | Twitter: leandrofr0es 311 |

312 |
317 |

318 | misonothx 319 |

320 |

321 | GitHub: miso-xyz 322 |

323 |
328 |

329 | miT231-spec 330 |

331 |

332 | GitHub: miT231-spec 333 |

334 |
339 |

340 | phithon 341 |

342 |

343 | Website: https://www.leavesongs.com 344 |

345 |

346 | GitHub: phith0n 347 |

348 |
353 |

354 | Robert Musser 355 |

356 |

357 | Website: https://rmusser.net/ 358 |

359 |

360 | GitHub: rmusser01 361 |

362 |

363 | Twitter: r_o_b_e_r_t_1 364 |

365 |
370 |

371 | sapdragon 372 |

373 |

374 | GitHub: sapdragon 375 |

376 |
381 |

382 | SpriteOvO 383 |

384 |

385 | GitHub: SpriteOvO 386 |

387 |
392 |

393 | Xylit0l 394 |

395 |

396 | Website: http://xylibox.com 397 |

398 |

399 | GitHub: Xyl2k 400 |

401 |

402 | Twitter: Xylit0l 403 |

404 |
407 | -------------------------------------------------------------------------------- /src/gui/guimainwindow.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2019-2023 hors 2 | * 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy 4 | * of this software and associated documentation files (the "Software"), to deal 5 | * in the Software without restriction, including without limitation the rights 6 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | * copies of the Software, and to permit persons to whom the Software is 8 | * furnished to do so, subject to the following conditions: 9 | * 10 | * The above copyright notice and this permission notice shall be included in all 11 | * copies or substantial portions of the Software. 12 | * 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | * SOFTWARE. 20 | */ 21 | #include "guimainwindow.h" 22 | 23 | #include "ui_guimainwindow.h" 24 | 25 | GuiMainWindow::GuiMainWindow(QWidget *pParent) : QMainWindow(pParent), ui(new Ui::GuiMainWindow) 26 | { 27 | ui->setupUi(this); 28 | #ifdef USE_YARA 29 | XYara::initialize(); 30 | #endif 31 | g_pFile = nullptr; 32 | g_pXInfo = nullptr; 33 | g_pTempFile = nullptr; 34 | g_mode = MODE_UNKNOWN; 35 | 36 | ui->stackedWidget->setCurrentIndex(0); 37 | 38 | setWindowTitle(XOptions::getTitle(X_APPLICATIONDISPLAYNAME, X_APPLICATIONVERSION)); 39 | 40 | setAcceptDrops(true); 41 | 42 | g_xOptions.setName(X_OPTIONSFILE); 43 | 44 | g_xOptions.addID(XOptions::ID_VIEW_STYLE, "Fusion"); 45 | g_xOptions.addID(XOptions::ID_VIEW_QSS, ""); 46 | g_xOptions.addID(XOptions::ID_VIEW_LANG, "System"); 47 | g_xOptions.addID(XOptions::ID_VIEW_STAYONTOP, false); 48 | g_xOptions.addID(XOptions::ID_VIEW_SHOWLOGO, false); 49 | g_xOptions.addID(XOptions::ID_VIEW_FONT, ""); 50 | g_xOptions.addID(XOptions::ID_FILE_SAVELASTDIRECTORY, true); 51 | g_xOptions.addID(XOptions::ID_FILE_SAVEBACKUP, true); 52 | g_xOptions.addID(XOptions::ID_FILE_SAVERECENTFILES, true); 53 | 54 | #ifdef Q_OS_WIN 55 | g_xOptions.addID(XOptions::ID_FILE_CONTEXT, "*"); 56 | #endif 57 | 58 | DIEOptionsWidget::setDefaultValues(&g_xOptions); 59 | SearchSignaturesOptionsWidget::setDefaultValues(&g_xOptions); 60 | XHexViewOptionsWidget::setDefaultValues(&g_xOptions); 61 | XDisasmViewOptionsWidget::setDefaultValues(&g_xOptions); 62 | XOnlineToolsOptionsWidget::setDefaultValues(&g_xOptions); 63 | XInfoDBOptionsWidget::setDefaultValues(&g_xOptions); 64 | 65 | g_xOptions.addID(XOptions::ID_SCAN_YARARULESPATH, "$data/yara_rules"); 66 | 67 | g_xOptions.load(); 68 | 69 | g_xShortcuts.setName(X_SHORTCUTSFILE); 70 | g_xShortcuts.setNative(g_xOptions.isNative()); 71 | 72 | g_xShortcuts.addGroup(XShortcuts::GROUPID_STRINGS); 73 | g_xShortcuts.addGroup(XShortcuts::GROUPID_SIGNATURES); 74 | g_xShortcuts.addGroup(XShortcuts::GROUPID_HEX); 75 | g_xShortcuts.addGroup(XShortcuts::GROUPID_DISASM); 76 | g_xShortcuts.addGroup(XShortcuts::GROUPID_FIND); 77 | 78 | g_xShortcuts.load(); 79 | 80 | ui->widgetMACHO->setGlobal(&g_xShortcuts, &g_xOptions); 81 | ui->widgetMACHOFAT->setGlobal(&g_xShortcuts, &g_xOptions); 82 | 83 | connect(&g_xOptions, SIGNAL(openFile(QString)), this, SLOT(processFile(QString))); 84 | 85 | createMenus(); 86 | 87 | adjustWindow(); 88 | 89 | if (QCoreApplication::arguments().count() > 1) { 90 | QString sFileName = QCoreApplication::arguments().at(1); 91 | 92 | processFile(sFileName); 93 | } 94 | } 95 | 96 | GuiMainWindow::~GuiMainWindow() 97 | { 98 | closeCurrentFile(); 99 | g_xOptions.save(); 100 | g_xShortcuts.save(); 101 | 102 | // DialogXInfoDBTransferProcess::saveDatabase(g_pXInfo); 103 | 104 | delete ui; 105 | #ifdef USE_YARA 106 | XYara::finalize(); 107 | #endif 108 | } 109 | 110 | void GuiMainWindow::createMenus() 111 | { 112 | QMenu *pMenuFile = new QMenu(tr("File"), ui->menubar); 113 | QMenu *pMenuTools = new QMenu(tr("Tools"), ui->menubar); 114 | QMenu *pMenuHelp = new QMenu(tr("Help"), ui->menubar); 115 | 116 | ui->menubar->addAction(pMenuFile->menuAction()); 117 | ui->menubar->addAction(pMenuTools->menuAction()); 118 | ui->menubar->addAction(pMenuHelp->menuAction()); 119 | 120 | QAction *pActionOpen = new QAction(tr("Open"), this); 121 | QAction *pActionClose = new QAction(tr("Close"), this); 122 | QAction *pActionExit = new QAction(tr("Exit"), this); 123 | QAction *pActionOptions = new QAction(tr("Options"), this); 124 | QAction *pActionAbout = new QAction(tr("About"), this); 125 | QAction *pActionShortcuts = new QAction(tr("Shortcuts"), this); 126 | QAction *pActionDemangle = new QAction(tr("Demangle"), this); 127 | 128 | pMenuFile->addAction(pActionOpen); 129 | pMenuFile->addMenu(g_xOptions.createRecentFilesMenu(this)); 130 | pMenuFile->addAction(pActionClose); 131 | pMenuFile->addAction(pActionExit); 132 | pMenuTools->addAction(pActionDemangle); 133 | pMenuTools->addAction(pActionShortcuts); 134 | pMenuTools->addAction(pActionOptions); 135 | pMenuHelp->addAction(pActionAbout); 136 | 137 | connect(pActionOpen, SIGNAL(triggered()), this, SLOT(actionOpenSlot())); 138 | connect(pActionClose, SIGNAL(triggered()), this, SLOT(actionCloseSlot())); 139 | connect(pActionExit, SIGNAL(triggered()), this, SLOT(actionExitSlot())); 140 | connect(pActionOptions, SIGNAL(triggered()), this, SLOT(actionOptionsSlot())); 141 | connect(pActionAbout, SIGNAL(triggered()), this, SLOT(actionAboutSlot())); 142 | connect(pActionShortcuts, SIGNAL(triggered()), this, SLOT(actionShortcutsSlot())); 143 | connect(pActionDemangle, SIGNAL(triggered()), this, SLOT(actionDemangleSlot())); 144 | } 145 | 146 | void GuiMainWindow::actionOpenSlot() 147 | { 148 | QString sDirectory = g_xOptions.getLastDirectory(); 149 | 150 | QString sFileName = QFileDialog::getOpenFileName(this, tr("Open file") + QString("..."), sDirectory, tr("All files") + QString(" (*)")); 151 | 152 | if (!sFileName.isEmpty()) { 153 | processFile(sFileName); 154 | } 155 | } 156 | 157 | void GuiMainWindow::actionCloseSlot() 158 | { 159 | closeCurrentFile(); 160 | } 161 | 162 | void GuiMainWindow::actionExitSlot() 163 | { 164 | this->close(); 165 | } 166 | 167 | void GuiMainWindow::actionOptionsSlot() 168 | { 169 | DialogOptions dialogOptions(this, &g_xOptions, XOptions::GROUPID_FILE); 170 | dialogOptions.exec(); 171 | 172 | adjustWindow(); 173 | } 174 | 175 | void GuiMainWindow::actionAboutSlot() 176 | { 177 | DialogAbout dialogAbout(this); 178 | dialogAbout.exec(); 179 | } 180 | 181 | void GuiMainWindow::adjustWindow() 182 | { 183 | if (g_mode == MODE_MACHO) { 184 | ui->widgetMACHO->adjustView(); 185 | } else if (g_mode == MODE_MACHOFAT) { 186 | ui->widgetMACHOFAT->adjustView(); 187 | } 188 | 189 | g_xOptions.adjustWindow(this); 190 | 191 | if (g_xOptions.isShowLogo()) { 192 | ui->labelLogo->show(); 193 | } else { 194 | ui->labelLogo->hide(); 195 | } 196 | } 197 | 198 | void GuiMainWindow::processFile(QString sFileName) 199 | { 200 | bool bIsFile = XBinary::isFileExists(sFileName); 201 | bool bIsDirectory = XBinary::isDirectoryExists(sFileName); 202 | 203 | QString sTitle = sFileName; 204 | 205 | if ((sFileName != "") && (bIsFile || bIsDirectory)) { 206 | QIODevice *pOpenDevice = nullptr; 207 | 208 | g_xOptions.setLastFileName(sFileName); 209 | 210 | closeCurrentFile(); 211 | 212 | g_pXInfo = new XInfoDB; 213 | 214 | if (bIsFile) { 215 | g_pFile = new QFile; 216 | 217 | g_pFile->setFileName(sFileName); 218 | 219 | if (!g_pFile->open(QIODevice::ReadWrite)) { 220 | if (!g_pFile->open(QIODevice::ReadOnly)) { 221 | closeCurrentFile(); 222 | } 223 | } 224 | 225 | pOpenDevice = g_pFile; 226 | } 227 | 228 | QSet ftArchiveAvailable; 229 | 230 | ftArchiveAvailable.insert(XBinary::FT_ZIP); 231 | 232 | if (XArchives::isArchiveOpenValid(g_pFile, ftArchiveAvailable) || bIsDirectory) { 233 | bool bError = false; 234 | 235 | QSet ftOpenAvailable; 236 | 237 | ftOpenAvailable.insert(XBinary::FT_MACHO); 238 | ftOpenAvailable.insert(XBinary::FT_MACHO32); 239 | ftOpenAvailable.insert(XBinary::FT_MACHO64); 240 | ftOpenAvailable.insert(XBinary::FT_MACHOFAT); 241 | 242 | FW_DEF::OPTIONS options = {}; 243 | options.sTitle = sFileName; 244 | options.bFilter = true; 245 | options.bNoWindowOpen = true; 246 | 247 | DialogArchive dialogArchive(this); 248 | dialogArchive.setGlobal(&g_xShortcuts, &g_xOptions); 249 | 250 | if (bIsFile) { 251 | dialogArchive.setDevice(g_pFile, XBinary::FT_ZIP, options, ftOpenAvailable); 252 | } else if (bIsDirectory) { 253 | dialogArchive.setDirectory(sFileName, options, ftOpenAvailable); 254 | } 255 | 256 | if (dialogArchive.exec() == QDialog::Accepted) { 257 | QString sRecordName = dialogArchive.getCurrentRecordFileName(); 258 | 259 | if (bIsFile) { 260 | g_pTempFile = new QTemporaryFile; 261 | g_pTempFile->open(); 262 | 263 | if (XArchives::decompressToFile(XBinary::getDeviceFileName(g_pFile), sRecordName, g_pTempFile->fileName())) { 264 | pOpenDevice = g_pTempFile; 265 | } else { 266 | bError = true; 267 | } 268 | } else // Directory 269 | { 270 | g_pFile = new QFile; 271 | sTitle = sRecordName; 272 | 273 | g_pFile->setFileName(sRecordName); 274 | 275 | if (!g_pFile->open(QIODevice::ReadWrite)) { 276 | if (!g_pFile->open(QIODevice::ReadOnly)) { 277 | closeCurrentFile(); 278 | } 279 | } 280 | 281 | pOpenDevice = g_pFile; 282 | } 283 | } else { 284 | bError = true; 285 | } 286 | 287 | if (bError) { 288 | close(); 289 | return; 290 | } 291 | } 292 | 293 | if (pOpenDevice) { 294 | if (XMACH::isValid(pOpenDevice)) { 295 | g_mode = MODE_MACHO; 296 | 297 | ui->stackedWidget->setCurrentIndex(1); 298 | g_formatOptions.bIsImage = false; 299 | g_formatOptions.nImageBase = -1; 300 | g_formatOptions.nStartType = SMACH::TYPE_INFO; 301 | ui->widgetMACHO->setGlobal(&g_xShortcuts, &g_xOptions); 302 | ui->widgetMACHO->setData(pOpenDevice, g_formatOptions, 0, 0, 0); 303 | ui->widgetMACHO->setXInfoDB(g_pXInfo); 304 | 305 | ui->widgetMACHO->reload(); 306 | 307 | adjustWindow(); 308 | 309 | setWindowTitle(sTitle); 310 | } else if (XMACHOFat::isValid(pOpenDevice)) { 311 | g_mode = MODE_MACHOFAT; 312 | 313 | ui->stackedWidget->setCurrentIndex(2); 314 | g_formatOptions.bIsImage = false; 315 | g_formatOptions.nImageBase = -1; 316 | g_formatOptions.nStartType = SMACH::TYPE_INFO; 317 | ui->widgetMACHOFAT->setGlobal(&g_xShortcuts, &g_xOptions); 318 | ui->widgetMACHOFAT->setData(pOpenDevice, g_formatOptions, 0, 0, 0); 319 | ui->widgetMACHOFAT->setXInfoDB(g_pXInfo); 320 | 321 | ui->widgetMACHOFAT->reload(); 322 | 323 | adjustWindow(); 324 | 325 | setWindowTitle(sTitle); 326 | } else { 327 | QMessageBox::critical(this, tr("Error"), tr("It is not a valid file")); 328 | } 329 | } else { 330 | QMessageBox::critical(this, tr("Error"), tr("Cannot open file")); 331 | } 332 | } else { 333 | QMessageBox::critical(this, tr("Error"), tr("Cannot open file")); 334 | } 335 | } 336 | 337 | void GuiMainWindow::closeCurrentFile() 338 | { 339 | ui->stackedWidget->setCurrentIndex(0); 340 | 341 | if (g_pXInfo) { 342 | delete g_pXInfo; 343 | g_pXInfo = nullptr; 344 | } 345 | 346 | if (g_pFile) { 347 | g_pFile->close(); 348 | delete g_pFile; 349 | g_pFile = nullptr; 350 | } 351 | 352 | if (g_pTempFile) { 353 | g_pTempFile->close(); 354 | delete g_pTempFile; 355 | g_pTempFile = nullptr; 356 | } 357 | 358 | ui->stackedWidget->setCurrentIndex(0); 359 | ui->widgetMACHO->cleanup(); 360 | ui->widgetMACHOFAT->cleanup(); 361 | 362 | setWindowTitle(QString("%1 v%2").arg(X_APPLICATIONDISPLAYNAME, X_APPLICATIONVERSION)); 363 | } 364 | 365 | void GuiMainWindow::dragEnterEvent(QDragEnterEvent *event) 366 | { 367 | event->acceptProposedAction(); 368 | } 369 | 370 | void GuiMainWindow::dragMoveEvent(QDragMoveEvent *event) 371 | { 372 | event->acceptProposedAction(); 373 | } 374 | 375 | void GuiMainWindow::dropEvent(QDropEvent *event) 376 | { 377 | const QMimeData *mimeData = event->mimeData(); 378 | 379 | if (mimeData->hasUrls()) { 380 | QList urlList = mimeData->urls(); 381 | 382 | if (urlList.count()) { 383 | QString sFileName = urlList.at(0).toLocalFile(); 384 | 385 | sFileName = XBinary::convertFileName(sFileName); 386 | 387 | processFile(sFileName); 388 | } 389 | } 390 | } 391 | 392 | void GuiMainWindow::actionShortcutsSlot() 393 | { 394 | DialogShortcuts dialogShortcuts(this); 395 | 396 | dialogShortcuts.setData(&g_xShortcuts); 397 | 398 | dialogShortcuts.exec(); 399 | 400 | adjustWindow(); 401 | } 402 | 403 | void GuiMainWindow::actionDemangleSlot() 404 | { 405 | DialogDemangle dialogDemangle(this); 406 | 407 | dialogDemangle.exec(); 408 | } 409 | -------------------------------------------------------------------------------- /src/gui/translation/xmachoviewer_ar_AR.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Archive_widget 6 | 7 | Form 8 | 9 | 10 | 11 | Type 12 | 13 | 14 | 15 | Filter 16 | 17 | 18 | 19 | 20 | BinaryWidget 21 | 22 | Reload 23 | 24 | 25 | 26 | Readonly 27 | 28 | 29 | 30 | 31 | DEXSectionHeaderWidget 32 | 33 | Readonly 34 | 35 | 36 | 37 | 38 | DEXWidget 39 | 40 | Reload 41 | 42 | 43 | 44 | Readonly 45 | 46 | 47 | 48 | Save 49 | 50 | 51 | 52 | 53 | DIEOptionsWidget 54 | 55 | Scan after open 56 | 57 | 58 | 59 | Flags 60 | 61 | 62 | 63 | Recursive scan 64 | 65 | 66 | 67 | Deep scan 68 | 69 | 70 | 71 | Heuristic scan 72 | 73 | 74 | 75 | Aggressive scan 76 | 77 | 78 | 79 | Verbose 80 | 81 | 82 | 83 | All types 84 | 85 | 86 | 87 | Profiling 88 | 89 | 90 | 91 | Sort 92 | 93 | 94 | 95 | Highlight 96 | 97 | 98 | 99 | Hide unknown 100 | 101 | 102 | 103 | Buffer size 104 | 105 | 106 | 107 | Scan 108 | 109 | 110 | 111 | Database 112 | 113 | 114 | 115 | Extra database 116 | 117 | 118 | 119 | Custom database 120 | 121 | 122 | 123 | Format result 124 | 125 | 126 | 127 | 128 | DIEWidgetAdvanced 129 | 130 | Form 131 | 132 | 133 | 134 | Signatures 135 | 136 | 137 | 138 | Save 139 | 140 | 141 | 142 | Scan 143 | 144 | 145 | 146 | 147 | DIE_Widget 148 | 149 | Signatures 150 | 151 | 152 | 153 | Directory 154 | 155 | 156 | 157 | Log 158 | 159 | 160 | 161 | Scan 162 | 163 | 164 | 165 | Stop 166 | 167 | 168 | 169 | 170 | DialogAbout 171 | 172 | About 173 | 174 | 175 | 176 | OK 177 | 178 | 179 | 180 | 181 | DialogArchive 182 | 183 | Archive 184 | 185 | 186 | 187 | Open 188 | 189 | 190 | 191 | Close 192 | 193 | 194 | 195 | 196 | DialogBits8 197 | 198 | Bits 199 | 200 | 201 | 202 | Hex 203 | 204 | 205 | 206 | Signed 207 | 208 | 209 | 210 | Unsigned 211 | 212 | 213 | 214 | Cancel 215 | 216 | 217 | 218 | OK 219 | 220 | 221 | 222 | 223 | DialogBookmarks 224 | 225 | Bookmarks 226 | 227 | 228 | 229 | OK 230 | 231 | 232 | 233 | 234 | DialogDIEScanDirectory 235 | 236 | Directory scan 237 | 238 | 239 | 240 | Directory 241 | 242 | 243 | 244 | Subdirectories 245 | 246 | 247 | 248 | Scan 249 | 250 | 251 | 252 | Clear 253 | 254 | 255 | 256 | Save 257 | 258 | 259 | 260 | OK 261 | 262 | 263 | 264 | 265 | DialogDIESignatures 266 | 267 | Signatures 268 | 269 | 270 | 271 | Save 272 | 273 | 274 | 275 | Readonly 276 | 277 | 278 | 279 | Run 280 | 281 | 282 | 283 | Debug 284 | 285 | 286 | 287 | Recursive scan 288 | 289 | 290 | 291 | Deep scan 292 | 293 | 294 | 295 | Verbose 296 | 297 | 298 | 299 | Heuristic scan 300 | 301 | 302 | 303 | Profiling 304 | 305 | 306 | 307 | Find 308 | 309 | 310 | 311 | Next 312 | 313 | 314 | 315 | Detect 316 | 317 | 318 | 319 | Show type 320 | 321 | 322 | 323 | Show version 324 | 325 | 326 | 327 | Show info 328 | 329 | 330 | 331 | Clear result 332 | 333 | 334 | 335 | Close 336 | 337 | 338 | 339 | 340 | DialogDIESignaturesElapsed 341 | 342 | Elapsed 343 | 344 | 345 | 346 | OK 347 | 348 | 349 | 350 | 351 | DialogDataInspector 352 | 353 | Inspector 354 | 355 | 356 | 357 | Readonly 358 | 359 | 360 | 361 | Close 362 | 363 | 364 | 365 | 366 | DialogDemangle 367 | 368 | Demangle 369 | 370 | 371 | 372 | OK 373 | 374 | 375 | 376 | 377 | DialogDieHexViewer 378 | 379 | Scripts 380 | 381 | 382 | 383 | OK 384 | 385 | 386 | 387 | 388 | DialogEditString 389 | 390 | String 391 | 392 | 393 | 394 | Keep size 395 | 396 | 397 | 398 | Null-terminated 399 | 400 | 401 | 402 | OK 403 | 404 | 405 | 406 | Cancel 407 | 408 | 409 | 410 | 411 | DialogEntropy 412 | 413 | Entropy 414 | 415 | 416 | 417 | Close 418 | 419 | 420 | 421 | 422 | DialogFindText 423 | 424 | Find 425 | 426 | 427 | 428 | Match case 429 | 430 | 431 | 432 | OK 433 | 434 | 435 | 436 | Cancel 437 | 438 | 439 | 440 | 441 | DialogGoToAddress 442 | 443 | Go to address 444 | 445 | 446 | 447 | Address 448 | 449 | 450 | 451 | Hex 452 | 453 | 454 | 455 | OK 456 | 457 | 458 | 459 | Cancel 460 | 461 | 462 | 463 | 464 | DialogHash 465 | 466 | Hash 467 | 468 | 469 | 470 | Close 471 | 472 | 473 | 474 | 475 | DialogHexEdit 476 | 477 | Edit 478 | 479 | 480 | 481 | Close 482 | 483 | 484 | 485 | 486 | DialogHexSignature 487 | 488 | Signature 489 | 490 | 491 | 492 | Spaces 493 | 494 | 495 | 496 | Upper 497 | 498 | 499 | 500 | Wildcard 501 | 502 | 503 | 504 | Scan 505 | 506 | 507 | 508 | Copy 509 | 510 | 511 | 512 | OK 513 | 514 | 515 | 516 | 517 | DialogHexView 518 | 519 | Close 520 | 521 | 522 | 523 | 524 | DialogMemoryMap 525 | 526 | Memory map 527 | 528 | 529 | 530 | Close 531 | 532 | 533 | 534 | 535 | DialogModelInfo 536 | 537 | Save 538 | 539 | 540 | 541 | OK 542 | 543 | 544 | 545 | 546 | DialogMultiDisasm 547 | 548 | Disasm 549 | 550 | 551 | 552 | Close 553 | 554 | 555 | 556 | 557 | DialogMultiDisasmSignature 558 | 559 | Signature 560 | 561 | 562 | 563 | Spaces 564 | 565 | 566 | 567 | Upper 568 | 569 | 570 | 571 | Wildcard 572 | 573 | 574 | 575 | Scan 576 | 577 | 578 | 579 | Copy 580 | 581 | 582 | 583 | OK 584 | 585 | 586 | 587 | 588 | DialogNFDScan 589 | 590 | Scan 591 | 592 | 593 | 594 | Close 595 | 596 | 597 | 598 | 599 | DialogNFDScanDirectory 600 | 601 | Directory scan 602 | 603 | 604 | 605 | Directory 606 | 607 | 608 | 609 | Subdirectories 610 | 611 | 612 | 613 | Scan 614 | 615 | 616 | 617 | Clear 618 | 619 | 620 | 621 | Save 622 | 623 | 624 | 625 | OK 626 | 627 | 628 | 629 | 630 | DialogNFDWidgetAdvanced 631 | 632 | Close 633 | 634 | 635 | 636 | 637 | DialogOptions 638 | 639 | Options 640 | 641 | 642 | 643 | 644 | DialogRemove 645 | 646 | Remove 647 | 648 | 649 | 650 | Offset 651 | 652 | 653 | 654 | Size 655 | 656 | 657 | 658 | Hex 659 | 660 | 661 | 662 | OK 663 | 664 | 665 | 666 | Cancel 667 | 668 | 669 | 670 | 671 | DialogResize 672 | 673 | Resize 674 | 675 | 676 | 677 | Size 678 | 679 | 680 | 681 | Hex 682 | 683 | 684 | 685 | OK 686 | 687 | 688 | 689 | Cancel 690 | 691 | 692 | 693 | 694 | DialogSearch 695 | 696 | Search 697 | 698 | 699 | 700 | Match case 701 | 702 | 703 | 704 | String 705 | 706 | 707 | 708 | Signature 709 | 710 | 711 | 712 | Value 713 | 714 | 715 | 716 | OK 717 | 718 | 719 | 720 | Cancel 721 | 722 | 723 | 724 | 725 | DialogSearchSignatures 726 | 727 | Signatures 728 | 729 | 730 | 731 | Close 732 | 733 | 734 | 735 | 736 | DialogSearchStrings 737 | 738 | Strings 739 | 740 | 741 | 742 | Close 743 | 744 | 745 | 746 | 747 | DialogSearchValues 748 | 749 | Search 750 | 751 | 752 | 753 | Close 754 | 755 | 756 | 757 | 758 | DialogSectionHeader 759 | 760 | Section 761 | 762 | 763 | 764 | 765 | DialogSetGenericWidget 766 | 767 | Structs 768 | 769 | 770 | 771 | Cancel 772 | 773 | 774 | 775 | OK 776 | 777 | 778 | 779 | 780 | DialogShortcuts 781 | 782 | Shortcuts 783 | 784 | 785 | 786 | Filter 787 | 788 | 789 | 790 | Clear 791 | 792 | 793 | 794 | Default 795 | 796 | 797 | 798 | Close 799 | 800 | 801 | 802 | 803 | DialogShowData 804 | 805 | Data 806 | 807 | 808 | 809 | Group 810 | 811 | 812 | 813 | Copy 814 | 815 | 816 | 817 | OK 818 | 819 | 820 | 821 | 822 | DialogShowImage 823 | 824 | Image 825 | 826 | 827 | 828 | Close 829 | 830 | 831 | 832 | 833 | DialogTextInfo 834 | 835 | Info 836 | 837 | 838 | 839 | Save 840 | 841 | 842 | 843 | Close 844 | 845 | 846 | 847 | 848 | DialogViewColors 849 | 850 | Colors 851 | 852 | 853 | 854 | OK 855 | 856 | 857 | 858 | Cancel 859 | 860 | 861 | 862 | 863 | DialogVisualization 864 | 865 | Visualization 866 | 867 | 868 | 869 | Close 870 | 871 | 872 | 873 | 874 | DialogWidget 875 | 876 | Info 877 | 878 | 879 | 880 | Close 881 | 882 | 883 | 884 | 885 | DialogXDataConvertor 886 | 887 | Data convertor 888 | 889 | 890 | 891 | OK 892 | 893 | 894 | 895 | 896 | DialogXExtractor 897 | 898 | Extractor 899 | 900 | 901 | 902 | Close 903 | 904 | 905 | 906 | 907 | DialogXFileInfo 908 | 909 | Info 910 | 911 | 912 | 913 | Close 914 | 915 | 916 | 917 | 918 | DialogXMainWidget 919 | 920 | Dialog 921 | 922 | 923 | 924 | OK 925 | 926 | 927 | 928 | 929 | DialogXSymbols 930 | 931 | Symbols 932 | 933 | 934 | 935 | Close 936 | 937 | 938 | 939 | 940 | DialogXVirusTotal 941 | 942 | Close 943 | 944 | 945 | 946 | 947 | DialogYARAWidgetAdvanced 948 | 949 | Close 950 | 951 | 952 | 953 | 954 | ELFSectionHeaderWidget 955 | 956 | Readonly 957 | 958 | 959 | 960 | Save 961 | 962 | 963 | 964 | 965 | ELFWidget 966 | 967 | Reload 968 | 969 | 970 | 971 | Readonly 972 | 973 | 974 | 975 | Save 976 | 977 | 978 | 979 | 980 | LESectionHeaderWidget 981 | 982 | Readonly 983 | 984 | 985 | 986 | 987 | LEWidget 988 | 989 | Reload 990 | 991 | 992 | 993 | Readonly 994 | 995 | 996 | 997 | 998 | MACHOFATWidget 999 | 1000 | Form 1001 | 1002 | 1003 | 1004 | 1005 | MACHSectionHeaderWidget 1006 | 1007 | Readonly 1008 | 1009 | 1010 | 1011 | 1012 | MACHWidget 1013 | 1014 | Reload 1015 | 1016 | 1017 | 1018 | Readonly 1019 | 1020 | 1021 | 1022 | 1023 | MSDOSWidget 1024 | 1025 | Reload 1026 | 1027 | 1028 | 1029 | Readonly 1030 | 1031 | 1032 | 1033 | Dump 1034 | 1035 | 1036 | 1037 | 1038 | NESectionHeaderWidget 1039 | 1040 | Readonly 1041 | 1042 | 1043 | 1044 | 1045 | NEWidget 1046 | 1047 | Reload 1048 | 1049 | 1050 | 1051 | Readonly 1052 | 1053 | 1054 | 1055 | 1056 | NFDOptionsWidget 1057 | 1058 | Scan after open 1059 | 1060 | 1061 | 1062 | Recursive scan 1063 | 1064 | 1065 | 1066 | Deep scan 1067 | 1068 | 1069 | 1070 | Heuristic scan 1071 | 1072 | 1073 | 1074 | Verbose 1075 | 1076 | 1077 | 1078 | All types 1079 | 1080 | 1081 | 1082 | Highlight 1083 | 1084 | 1085 | 1086 | Buffer size 1087 | 1088 | 1089 | 1090 | Format result 1091 | 1092 | 1093 | 1094 | 1095 | NFDWidgetAdvanced 1096 | 1097 | Save 1098 | 1099 | 1100 | 1101 | Scan 1102 | 1103 | 1104 | 1105 | Heuristic 1106 | 1107 | 1108 | 1109 | 1110 | NFD_Widget 1111 | 1112 | Info 1113 | 1114 | 1115 | 1116 | Directory 1117 | 1118 | 1119 | 1120 | Scan 1121 | 1122 | 1123 | 1124 | Stop 1125 | 1126 | 1127 | 1128 | 1129 | PESectionHeaderWidget 1130 | 1131 | Readonly 1132 | 1133 | 1134 | 1135 | 1136 | PEToolsWidget 1137 | 1138 | Tools 1139 | 1140 | 1141 | 1142 | Add 1143 | 1144 | 1145 | 1146 | Remove 1147 | 1148 | 1149 | 1150 | Dump 1151 | 1152 | 1153 | 1154 | Overlay 1155 | 1156 | 1157 | 1158 | 1159 | PEWidget 1160 | 1161 | Reload 1162 | 1163 | 1164 | 1165 | Readonly 1166 | 1167 | 1168 | 1169 | Save 1170 | 1171 | 1172 | 1173 | Dump 1174 | 1175 | 1176 | 1177 | String table 1178 | 1179 | 1180 | 1181 | Dump all 1182 | 1183 | 1184 | 1185 | Show valid 1186 | 1187 | 1188 | 1189 | Extract all icons 1190 | 1191 | 1192 | 1193 | Extract all cursors 1194 | 1195 | 1196 | 1197 | Table 1198 | 1199 | 1200 | 1201 | Tree 1202 | 1203 | 1204 | 1205 | Format 1206 | 1207 | 1208 | 1209 | Check 1210 | 1211 | 1212 | 1213 | 1214 | SearchSignaturesOptionsWidget 1215 | 1216 | Form 1217 | 1218 | 1219 | 1220 | Search signatures 1221 | 1222 | 1223 | 1224 | 1225 | SearchSignaturesWidget 1226 | 1227 | Save 1228 | 1229 | 1230 | 1231 | Search 1232 | 1233 | 1234 | 1235 | Patch 1236 | 1237 | 1238 | 1239 | 1240 | SearchStringsWidget 1241 | 1242 | Null-terminated 1243 | 1244 | 1245 | 1246 | Links 1247 | 1248 | 1249 | 1250 | Save 1251 | 1252 | 1253 | 1254 | Search 1255 | 1256 | 1257 | 1258 | 1259 | SearchValuesWidget 1260 | 1261 | String 1262 | 1263 | 1264 | 1265 | Signature 1266 | 1267 | 1268 | 1269 | Value 1270 | 1271 | 1272 | 1273 | Save 1274 | 1275 | 1276 | 1277 | Search 1278 | 1279 | 1280 | 1281 | 1282 | ToolsWidget 1283 | 1284 | Strings 1285 | 1286 | 1287 | 1288 | 1289 | XAboutWidget 1290 | 1291 | Follow me 1292 | 1293 | 1294 | 1295 | Thanks 1296 | 1297 | 1298 | 1299 | Check updates 1300 | 1301 | 1302 | 1303 | Info 1304 | 1305 | 1306 | 1307 | Libraries 1308 | 1309 | 1310 | 1311 | 1312 | XDataConvertorWidget 1313 | 1314 | Form 1315 | 1316 | 1317 | 1318 | Method 1319 | 1320 | 1321 | 1322 | Encode 1323 | 1324 | 1325 | 1326 | Decode 1327 | 1328 | 1329 | 1330 | Input 1331 | 1332 | 1333 | 1334 | Size 1335 | 1336 | 1337 | 1338 | Entropy 1339 | 1340 | 1341 | 1342 | Dump 1343 | 1344 | 1345 | 1346 | Output 1347 | 1348 | 1349 | 1350 | 1351 | XDemangleWidget 1352 | 1353 | Mode 1354 | 1355 | 1356 | 1357 | 1358 | XDialogProcess 1359 | 1360 | Process 1361 | 1362 | 1363 | 1364 | Advanced 1365 | 1366 | 1367 | 1368 | Cancel 1369 | 1370 | 1371 | 1372 | 1373 | XDisasmViewOptionsWidget 1374 | 1375 | Syntax 1376 | 1377 | 1378 | 1379 | Uppercase 1380 | 1381 | 1382 | 1383 | Show colons in addresses 1384 | 1385 | 1386 | 1387 | Highlight 1388 | 1389 | 1390 | 1391 | Colors 1392 | 1393 | 1394 | 1395 | 1396 | XEntropyWidget 1397 | 1398 | Reload 1399 | 1400 | 1401 | 1402 | Save 1403 | 1404 | 1405 | 1406 | Save diagram 1407 | 1408 | 1409 | 1410 | Regions 1411 | 1412 | 1413 | 1414 | Diagram 1415 | 1416 | 1417 | 1418 | Grid 1419 | 1420 | 1421 | 1422 | Entropy 1423 | 1424 | 1425 | 1426 | Bytes 1427 | 1428 | 1429 | 1430 | 1431 | XExtractorWidget 1432 | 1433 | Extract 1434 | 1435 | 1436 | 1437 | Dump all 1438 | 1439 | 1440 | 1441 | Save 1442 | 1443 | 1444 | 1445 | Scan 1446 | 1447 | 1448 | 1449 | Deep scan 1450 | 1451 | 1452 | 1453 | Heuristic scan 1454 | 1455 | 1456 | 1457 | 1458 | XFileInfoWidget 1459 | 1460 | Form 1461 | 1462 | 1463 | 1464 | Comment 1465 | 1466 | 1467 | 1468 | Reload 1469 | 1470 | 1471 | 1472 | Save 1473 | 1474 | 1475 | 1476 | 1477 | XGenericDisasmWidget 1478 | 1479 | Form 1480 | 1481 | 1482 | 1483 | Reload 1484 | 1485 | 1486 | 1487 | Size 1488 | 1489 | 1490 | 1491 | 1492 | XGenericHeaderWidget 1493 | 1494 | Form 1495 | 1496 | 1497 | 1498 | Reload 1499 | 1500 | 1501 | 1502 | Size 1503 | 1504 | 1505 | 1506 | Save 1507 | 1508 | 1509 | 1510 | 1511 | XGenericHexWidget 1512 | 1513 | Form 1514 | 1515 | 1516 | 1517 | Reload 1518 | 1519 | 1520 | 1521 | Size 1522 | 1523 | 1524 | 1525 | 1526 | XGenericTableWidget 1527 | 1528 | Form 1529 | 1530 | 1531 | 1532 | Reload 1533 | 1534 | 1535 | 1536 | Size 1537 | 1538 | 1539 | 1540 | Save 1541 | 1542 | 1543 | 1544 | 1545 | XHashWidget 1546 | 1547 | Save 1548 | 1549 | 1550 | 1551 | Reload 1552 | 1553 | 1554 | 1555 | 1556 | XHexViewOptionsWidget 1557 | 1558 | Show colons in addresses 1559 | 1560 | 1561 | 1562 | 1563 | XHexViewWidget 1564 | 1565 | Form 1566 | 1567 | 1568 | 1569 | Inspector 1570 | 1571 | 1572 | 1573 | Strings 1574 | 1575 | 1576 | 1577 | Readonly 1578 | 1579 | 1580 | 1581 | 1582 | XInfoDBOptionsWidget 1583 | 1584 | Info 1585 | 1586 | 1587 | 1588 | 1589 | XMainWidget 1590 | 1591 | Form 1592 | 1593 | 1594 | 1595 | Reload 1596 | 1597 | 1598 | 1599 | Hex 1600 | 1601 | 1602 | 1603 | Sync 1604 | 1605 | 1606 | 1607 | Readonly 1608 | 1609 | 1610 | 1611 | 1612 | XMemoryMapWidget 1613 | 1614 | Save 1615 | 1616 | 1617 | 1618 | Dump all 1619 | 1620 | 1621 | 1622 | Show all 1623 | 1624 | 1625 | 1626 | File offset 1627 | 1628 | 1629 | 1630 | Virtual address 1631 | 1632 | 1633 | 1634 | Relative virtual address 1635 | 1636 | 1637 | 1638 | Mode 1639 | 1640 | 1641 | 1642 | Endianness 1643 | 1644 | 1645 | 1646 | Architecture 1647 | 1648 | 1649 | 1650 | 1651 | XMultiDisasmWidget 1652 | 1653 | Form 1654 | 1655 | 1656 | 1657 | Readonly 1658 | 1659 | 1660 | 1661 | 1662 | XOnlineToolsOptionsWidget 1663 | 1664 | Form 1665 | 1666 | 1667 | 1668 | Get 1669 | 1670 | 1671 | 1672 | 1673 | XOptionsWidget 1674 | 1675 | Stay on top 1676 | 1677 | 1678 | 1679 | Single application 1680 | 1681 | 1682 | 1683 | Style 1684 | 1685 | 1686 | 1687 | Language 1688 | 1689 | 1690 | 1691 | Show logo 1692 | 1693 | 1694 | 1695 | Save last directory 1696 | 1697 | 1698 | 1699 | Save backup 1700 | 1701 | 1702 | 1703 | Save history 1704 | 1705 | 1706 | 1707 | Add to context menu 1708 | 1709 | 1710 | 1711 | Controls 1712 | 1713 | 1714 | 1715 | Table views 1716 | 1717 | 1718 | 1719 | Tree views 1720 | 1721 | 1722 | 1723 | Hex 1724 | 1725 | 1726 | 1727 | Disasm 1728 | 1729 | 1730 | 1731 | Text editors 1732 | 1733 | 1734 | 1735 | Default 1736 | 1737 | 1738 | 1739 | OK 1740 | 1741 | 1742 | 1743 | Cancel 1744 | 1745 | 1746 | 1747 | 1748 | XRegionsWidget 1749 | 1750 | Form 1751 | 1752 | 1753 | 1754 | Reload 1755 | 1756 | 1757 | 1758 | Save 1759 | 1760 | 1761 | 1762 | 1763 | XSymbolsWidget 1764 | 1765 | Form 1766 | 1767 | 1768 | 1769 | Save 1770 | 1771 | 1772 | 1773 | Reload 1774 | 1775 | 1776 | 1777 | 1778 | XVirusTotalWidget 1779 | 1780 | Form 1781 | 1782 | 1783 | 1784 | Website 1785 | 1786 | 1787 | 1788 | Rescan 1789 | 1790 | 1791 | 1792 | Show detects 1793 | 1794 | 1795 | 1796 | Save 1797 | 1798 | 1799 | 1800 | Reload 1801 | 1802 | 1803 | 1804 | 1805 | XVisualizationWidget 1806 | 1807 | Form 1808 | 1809 | 1810 | 1811 | Save 1812 | 1813 | 1814 | 1815 | Reload 1816 | 1817 | 1818 | 1819 | Image 1820 | 1821 | 1822 | 1823 | Schema 1824 | 1825 | 1826 | 1827 | 1828 | YARAWidgetAdvanced 1829 | 1830 | Rules 1831 | 1832 | 1833 | 1834 | Save 1835 | 1836 | 1837 | 1838 | Scan 1839 | 1840 | 1841 | 1842 | 1843 | YARA_Widget 1844 | 1845 | Info 1846 | 1847 | 1848 | 1849 | Rules 1850 | 1851 | 1852 | 1853 | Scan 1854 | 1855 | 1856 | 1857 | 1858 | --------------------------------------------------------------------------------