Aha, znaczy kolega z TlenTeam?
A poważnie - akurat debugger Visuala podaje informacje zwykle niedostępne reverse engineerowi podczas analizy. Mimo wszystko zwracany interface można przedebugować, na spokojnie pod disassemblerem obejrzeć i ustalić co jest co, za co odpowiada itd.
http://4programmers.net/Forum/viewtopic.php?id=149972 - mały przykład, jak łatwo się wtyczki itd. rozkłada. Różnica jest taka, że u Ciebie nazwy metod z vtable nie będą znane, ale wierz mi, to nic nie zmienia w praktyce.
Zabezpieczenie to bardzo trudna sprawa - w końcu ten kod musi się wykonać, musi także zostać wywołany, prawda? Napisz co dokładnie chcesz osiągnąć w tej kwestii, i jak wiele pracy/dodatkowych narzędzi byłbyś gotów w to włożyć. Jak widać po grach - nawet najlepsze i najbardziej zaawansowane zabezpieczenia gwarancji nie dają.
Generalnie to tak:
- utrudnić użycie debuggera (wykrywanie, blokowanie itd.) - trudniej grzebać;
- obfuskacja kodu - przestanie być czytelny (czytelny dla tej nienormalnej części ludzkości przynajmniej);
- podpisywanie plików - trudniej podmienić;
- sumy kontrolne itd. - trudniej zmodyfikować (także w pamięci)
...a każdy element ma słabe punkty.
@dzejo, to nie importy - część z nich to elementy wlinkowane w binarkę bezpośrednio, poza tym calle do importów są grupowane w podobny sposób jak elementy IAT. Trudno powiedzieć co to bez dokładniejszego obejrzenia binarki. Poza tym to, że autor tego znaleźć nie potrafi...