Comments 13
Я жажду еще!
P. S. Спасибо за перевод.
P. S. Спасибо за перевод.
0
Советую еще обратить внимание на дизассемблер/декомпилятор/отладик Hopper.
И вместо возни с поиском файлового смещения можно:
1)Отредактировать файл в самой IDA
2)Скопировать часть байт в окрестности прыжка, и искать сразу их. Если последовательность уникальна, то остановитесь как раз в нужном месте.
И вместо возни с поиском файлового смещения можно:
1)Отредактировать файл в самой IDA
2)Скопировать часть байт в окрестности прыжка, и искать сразу их. Если последовательность уникальна, то остановитесь как раз в нужном месте.
0
Пробовал Hopper (являюсь обладателем и IDA и Hopper), но он совершенно неудобен, имхо.
Я бы порекомендовал попробовать radare2. Да, в командной строке, но реверсера/ресёрчера это не должно пугать. Причем в radare2 есть весь инструментарий для инъекции кода — и отладчик (r2 -d), и ассемблер (rasm2 — для сборки шеллкода). Вот пример последовательности действий для простого crackme для x86 c помощью radare2.
А для GDB рекомендую этот патч от osxreverser — reverse.put.as/2013/11/08/one-small-patch-for-gdb-one-giant-leap-for-reversers/ — позволяет удобно отлаживать ASLR код на Mac OS X.
Я бы порекомендовал попробовать radare2. Да, в командной строке, но реверсера/ресёрчера это не должно пугать. Причем в radare2 есть весь инструментарий для инъекции кода — и отладчик (r2 -d), и ассемблер (rasm2 — для сборки шеллкода). Вот пример последовательности действий для простого crackme для x86 c помощью radare2.
А для GDB рекомендую этот патч от osxreverser — reverse.put.as/2013/11/08/one-small-patch-for-gdb-one-giant-leap-for-reversers/ — позволяет удобно отлаживать ASLR код на Mac OS X.
0
Спасибо за перевод, эта часть уже гораздо интереснее. Хотя, конечно, лучше было бы (это уже к автору оригинала) показывать всё на девайсе — с симулятором всё слишком просто.
Заодно можно было бы затронуть тему с переподписыванием программы после модификации.
Заодно можно было бы затронуть тему с переподписыванием программы после модификации.
0
Дык программа не переподписывается после. Ну точнее переподписывается, но своим, левым сертификатом. Её можно будет только на джелбрейкнутом девайсе запустить, с модифицированным инсталлером.
0
Ну так я о том и говорю: в статье не указано, что после модификации реальной программы её требуется подписать, чтобы запустить на jb-девайсе. Без jb весь взлом методом модификации бинарника (да и содержимого бандла) не имеет смысла. Если нет jb, уповать стоит только на модификацию содержимого /Documents и user defaults.
0
«Какая обфускация кода?» говорили они. «твои исходники никто не увидет, кроме тебя» говорили они. «Это же Apple, там все секьюрно»!
+1
Вы дочитали до этого коммента? Сюрприз!
Далее в функцию
И, наконец, обфусцировать константу
#include <sys/ptrace.h>
не работает на реальном устройстве. Решение:#import <dlfcn.h>
#import <sys/types.h>
typedef int (* ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif // !defined(PT_DENY_ATTACH)
void disable_gdb() {
void * handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
dlclose(handle);
}
Далее в функцию
main()
добавить:#ifndef DEBUG
disable_gdb();
#endif
И, наконец, обфусцировать константу
"ptrace"
(домашнее задание). Всю эту инфу прислал автор одной статьи, которая лежит в песочнице и очень ждёт инвайта. +1
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Sign up to leave a comment.
Ломаем iOS-приложение! Часть 2