Я пытаюсь научиться обращать приложения, играющие с вызовами CTF.
Я нашел этот вызов , который представляет собой APK, требующий имя пользователя и пароль (которые соответствуют флаг). После разборки приложения легко найти имя пользователя, спрятанное в ресурсах. Чтобы проверить правильность пароля, вместо этого источник java вызывает функцию, которая определена в общей библиотеке, также включенной в приложение.
Теперь, после проверки этой .so
(общей библиотеки) с помощью Ghidra Легко сказать, что для проверки правильности пароля код сначала «расшифровывает» некоторые данные в его памяти, чтобы определить реальный пароль, а затем вызывает strcmp
как для моего прохода, так и для правильного прохода.
Наивный подход к решению этой проблемы состоит в том, чтобы попытаться понять и затем повторить «деобфускацию», которую .so
делает на правильном проходе, и все. Но это только одно решение. Я хотел бы отладить приложение, используя gdb
(я почти полностью выполнил это руководство и оно, похоже, работает), а затем поместить breakpoint
в библиотеку перед strcmp
и осмотрите стопку, чтобы напечатать правильный пароль.
Однако я, похоже, не могу найти какое-либо соответствующее местоположение (разделы кода) или установить какую-либо точку останова. Есть ли способ архивировать то, что я пытаюсь сделать? или я живу только в своих собственных фантазиях?
Спасибо за потраченное время.