diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2014-12-30 08:25:05 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2014-12-30 08:25:05 (GMT) |
commit | 57d7eff57c20e75aaa4ccd34f1d9d733e12bb232 (patch) | |
tree | a60199f7323a31e0bf22b8f8747fdf402f2c481d /src/arch/vmpa.c | |
parent | 19e1a97fafb1b73d0efcd995b31951daf1a5c661 (diff) |
Tracked each binary area during the disassembling process and tried to follow the execution flow.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@445 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/vmpa.c')
-rw-r--r-- | src/arch/vmpa.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c index 024161c..7d57909 100644 --- a/src/arch/vmpa.c +++ b/src/arch/vmpa.c @@ -626,6 +626,37 @@ int cmp_mrange(const mrange_t *a, const mrange_t *b) /****************************************************************************** * * * Paramètres : range = zone mémoire à consulter. * +* sub = éventuelle sous-région à valider. * +* * +* Description : Indique si une zone en contient une autre ou non. * +* * +* Retour : Bilan de la consultation. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool mrange_contains_mrange(const mrange_t *range, const mrange_t *sub) +{ + bool result; /* Bilan à retourner */ + phys_t start; /* Point de départ */ + + result = mrange_contains_addr(range, get_mrange_addr(sub)); + + if (result) + { + start = compute_vmpa_diff(get_mrange_addr(range), get_mrange_addr(sub)); + result = (start + get_mrange_length(sub) <= get_mrange_length(range)); + } + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : range = zone mémoire à consulter. * * addr = localisation mémoire à analyser. * * * * Description : Indique si une localisation est incluse dans une zone ou non.* |