FrenchYeti / dexcalibur

[Official] Android reverse engineering tool focused on dynamic instrumentation automation leveraging Frida. It disassembles dex, analyzes it statically, generates hooks, discovers reflected methods, stores intercepted data and does new things from it. Its aim is to be an all-in-one Android reverse engineering platform.
Apache License 2.0
1.06k stars 126 forks source link

doc: clarify that scanners are scanners and not inspectors #20

Closed monperrus closed 4 years ago

FrenchYeti commented 4 years ago

Differences between "hook set / scanner" and "inspector" are following :

A hook set is a collection of prebuilt hook - no more - which can be load/unload during analysis. Each hook set has its purpose such as "bypass root detection". It was previously used to import hook redacted by community.

An inspector is a plugin able to:

"Scanner" or "Hook set" are probably not the better words. I created it before inspector concept. The idea is to make something close to Frida's "CodeShare" accessible directly from Dexcalibur's UI.

monperrus commented 4 years ago

Thanks for the explanation.

What puzzles me is that we have hooks both on the Dashboard page and on the Hook-set pages, while they seem to be the same.

The only differences I see are:

What's the conceptual difference between inspector/hook of page Dashboard and hook-sets/scanners of page Hook Set?

Would it make sense to have them on the same page?

FrenchYeti commented 4 years ago

Short anwser : Hooks defined into src/scanners should be moved into inspectors disabled by default, and Dashboard page should includes a tab panel with a tab for : built-in hook, not loaded hooksets, custom hooks.

An Inspector is an HookSet and several others things deployed at startup. An HookSet has been primarly created for offering "one-click security mechanism bypass" and Inspector concept as a plugin system. But it is not still true.

Long answer: In fact, when you select a method and you click "probe", when you define a hook into an inspector, or when you define a list of hooks into a "hook set", Dexcalibur creates HookPrimitive object. It is like a hook template. When you "deploy" a hook set or an inspector, you ask to HookManager to generate the source code of each hook for the current context. The results is the editable source code displayed into Dashboard.

Dashboard page is the UI of the HookManager component, and display only editable hook.