Сейчас на форуме: Rio, johnniewalker, vsv1 (+6 невидимых)

 eXeL@B —› Крэки, обсуждения —› Взлом приложений для iOS
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 06 марта 2011 12:45 · Поправил: karim
· Личное сообщение · #1

Добрый день!
не подскажете где посмотреть/ почитать как ломаются программы для iphone?

нужно для превращения триальных в полнофункциональные
с отвязкой от аккаунта appstore разобрался

Сcылки
How to decrypt iPhone IPA file
How to decrypt iPhone IPA file

iPhone iapd Reverse Engineering ( интересно но блин на итальянском)
http://www.suondmao.altervista.org/articles/prj/iPhoneiapdReverseEngineering.php



Tutorials

Primer on Reversing Jailbroken iPhone Native Applications v1.0
http://depositfiles.com/files/wn5a147xi

Patching Applications from Apple’s AppStore with additional protection
http://depositfiles.com/files/77krqkzop

| Сообщение посчитали полезным: FilGrand


Ранг: 282.8 (наставник), 24thx
Активность: 0.260
Статус: Участник
win32.org.ru

Создано: 06 марта 2011 15:20 · Поправил: Guru_eXe
· Личное сообщение · #2

ida?
Reverse Engineering iPhone AppStore Binaries
http://dvlabs.tippingpoint.com/pub/chotchkies/Under%20the%20iHood%20-%20REcon%202008.pdf
http://pwnhome.wordpress.com/2009/04/14/basic-reverse-engineering/
http://www.cocoanetics.com/2010/03/stuff-you-learn-from-reverse-engineering-notes-app/
в общем и целом — гугль должен помочь

даже видео есть по реверсу.

-----
may all your PUSHes be POPed!




Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 07 марта 2011 02:50
· Личное сообщение · #3

спасибо за ссылки
поисковико по большей части выдают не то....

вот полезная ссылка
http://www.gaw.ru/html.cgi/txt/doc/micros/arm/asm/arm_thumb/index.htm

видео так и не нашел, может у кого еще есть интересные ссылк?




Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 07 марта 2011 08:10
· Личное сообщение · #4

karim
Если не влом, можешь по ходу собирать ссылки в шапку, плюс свои по декриптингу бинарника добавь.
Время от времени эта тема тут поднимается, а так все будет в одном месте.

-----
Get busy living or get busy dying ©




Ранг: 23.2 (новичок), 8thx
Активность: 0.020
Статус: Участник

Создано: 07 марта 2011 09:33
· Личное сообщение · #5

вот тут прошлая тема:
http://exelab.ru/f/action=vthread&forum=1&topic=16858

как я понимаю там полная автоматизация. распаковка в один клик (тап): запуск -> дамп -> fix



Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 07 марта 2011 21:32
· Личное сообщение · #6

ни как ни могу найти опкоды под арм7 ?



Ранг: 3.7 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 07 марта 2011 21:40
· Личное сообщение · #7

karim пишет:
ни могу найти опкоды

такое --> ARM Instruction Set <-- ?




Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 08 марта 2011 03:33 · Поправил: Getorix
· Личное сообщение · #8

rr222 пишет:
такое --> ARM Instruction Set <-- ?

Нет, я думаю он имеет ввиду вот это ARM Architecture Reference Manual ARMv7-AR

-----
Get busy living or get busy dying ©




Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 08 марта 2011 21:14 · Поправил: karim
· Личное сообщение · #9

Спасибо Getorix, это похоже то что нужно.

я что то туплю похоже...

имеется
CMP R0, #2 ; Set cond. codes on Op1 - Op2
BLE loc_84E8 ; Branch

нужно BLE заменить на NOP, но вместо NOP рекомендуют использовать MOV R1,R1 (не понял зачем)
1) как все таки выглядит nop или mov в hex двие?
2) похоже нурецая адресов на странице дизасма IDAы отличается от hex адресов, похоже есть какое то смещение, как его найти / вычислить?



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 08 марта 2011 22:23
· Личное сообщение · #10

karim пишет:
нужно BLE заменить на NOP, но вместо NOP рекомендуют использовать MOV R1,R1 (не понял зачем)

NOP оно и есть в ARM MOV rx, rx? но чаще всего пользуют MOV R0, R0.
1. MOV R0, R0 in HEX = 0000A0E1
2. Смещения в ИДА от Ofset в файле найти просто. Выберите строку в ИДА с определенным адресом и найдите эту строку в файле. Получим смещение. Если память не изменяет, то в большинстве это 10С00 !



Ранг: 3.7 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 08 марта 2011 23:55 · Поправил: rr222
· Личное сообщение · #11

karim пишет: заменить на NOP .. рекомендуют
MOV R1,R1 пустышка, ничего не делает, разве что время тратит
можно команду тупо занулить, чтоб с кодами NOP, MOV R1,R1 и тп не возится, все будет ок.
(00000000 = ANDEQ R0, R0, R0 = ничто).
Tyra пишет: 2. Смещения найти просто +1

вот две удобные проги для вычисления смещений ...

4ca9_08.03.2011_CRACKLAB.rU.tgz - offset_calc.rar
upd/ заметил счас - на одной проге made by Getorix)))))
спасибо, в свое время часто пользовался!

| Сообщение посчитали полезным: LinXP

Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 10 марта 2011 10:29
· Личное сообщение · #12

Спасибо за советы и проги

хочу уточнить правильно ли я искал оффсет
1) в иде на листе дизасма выбрал интересующую меня строку
2) переключился на лист HEX (тк стоит галочка синхронизировать с...) подсветилась интересующая меня строка
3) скопировл ее и в winhex шнаел ее местонахождение в исходном файле
4) разница между адресами и есть смещение?

если так, то похоже этот файлик без смещения...
ps ковыряю программку из cydia


Судя по HEX BLE loc_84E8 = 31 DD
а nop нзаимает 8 символов, как быть?



Ранг: 3.7 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 10 марта 2011 10:55
· Личное сообщение · #13

karim
В меню настроек ida
"Options - General - Number of opcode bytes [ 0 ]" поставь [ 4 ]
так удобнее работать будет в твоем случае.
для удобства копирования создай файлик в папке \IDA\cfg\idauserg.cfg
с этим:
Code:
  1. DISPLAY_PATCH_SUBMENU    = YES           // Display the Edit,Patch submenu
  2. "PatchByte"             =       "Alt-O"

появится меню патчинга во вкладке "edit - patch programm", и в листе если жать Alt+O на команде какой нибудь, появится окошко с hex, можешь там сразу нулить и смотреть результат в листинге, еще на старых ida можно было сохранить патченный бинарник "File - produce file - create exe file..." на ida5.5 это почему-то не работает уже, незнаю как на более новых.. но можно сохранить твои изменения в том же меню "create DIF file...", далее по ним легко в хексе патчить..

BLE и тп забивай нулями, не нужно парится с NOP, разве что для красоты, а ее врядли кто оценит)))
31 DD = 00 00



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 10 марта 2011 11:19 · Поправил: Tyra
· Личное сообщение · #14

karim пишет:
4) разница между адресами и есть смещение?

Так и Есть !
karim пишет:
Судя по HEX BLE loc_84E8 = 31 DD

Не Похоже на ARM т.к. Все команды АРМ Имеют 4-е байта.
rr222 пишет:
BLE и тп забивай нулями, не нужно парится с NOP, разве что для красоты, а ее врядли кто оценит)))

Я рекомендую использовать NOP (MOV R0, R0) 0000A0E1. Неуверен, что он хуже зануления.

karim
Покажи пациента.



Ранг: 3.7 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 10 марта 2011 11:50
· Личное сообщение · #15

Tyra пишет:
1.Не Похоже на ARM
2.использовать NOP

1.--> тумба <--
2.смысл возится с нажатием нескольких циферок и буковок с кодом Nop\Mov, который еще и запомнить нужно, если можно одним пальцем нажать 4 раза "0" и получить тот же результат - спорить не будем, все варианты одинаковы по результату, кому как нравится, я вообще последнее время мышкой копирую предыдущую команду CMP на место BL = ни одного нажатия на клавиатуре

по поводу смещений верно, но если там используют динамическое распределение памяти, то там могут быть разные смещения в разных кусках программы.



Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 10 марта 2011 21:23
· Личное сообщение · #16

спасибо за совет
ida еуж оттюнена, только в другом файле idagui.cfg

так действительно удобнее, ищу место для патчинга уже в winhex



Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 10 марта 2011 21:50
· Личное сообщение · #17

вот файлик


c2ef_10.03.2011_CRACKLAB.rU.tgz - roqyBT4.zip



Ранг: 3.7 (гость), 2thx
Активность: 0=0
Статус: Участник

Создано: 11 марта 2011 01:47 · Поправил: rr222
· Личное сообщение · #18

karim пишет:
файлик
открывал то не как простой binary его случаем?
karim пишет: 4) разница между адресами и есть смещение? смещение в разных местах разное, так как тут куча сегментов:
output window
Code:
  1.   0. Creating a new segment  (00002A8C-0000ACB4) ... ... OK
  2.   1. Creating a new segment  (0000ACB4-0000C5A4) ... ... OK
  3.    .............
  4.  27. Creating a new segment  (00015C00-00015D4C) ... ... OK

хранить настройки ида в idauserg.cfg удобнее тем, что при переходе на новую версию этот файлик копируется в папку cfg новой ида и все дела.

"00 00" в тумбе как раз и есть mov r0,r0



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 31 марта 2011 02:49
· Личное сообщение · #19

Не очень понял, зачем нужны оффсет калькуляторы, если ида может продуцировать .dif файл, кроме того, в статус-строке кажет и смещение в файле, и смещение от начала сегмента(?).

Я пытаюсь попатчить игрушку одну, Dungeon Raid, и пока не получается.

Не понимаю, например такого вот аспекта.
В бинарнике дважды встречаются одни и те же структуры, скажем, скиллы игрока (что именно - не суть важно для целей моего вопроса).
Например, некие заклинания со сроками действия. Пять заклинаний, скажем, со сроками 10, 20, 15, 20, 10 ходов.
В IDA я нашел место, где они так и прописаны прямо: 0x0a, 0x14, 0x0f, 0x14, 0x0a
и, что интересно, ида обозначила этот массив как _gSkill_param

ок, умница ИДА, спасибо, патчим.
Запускаем игру на телефоне - ничего не поменялось. Удивляемся. Внимательно смотрим на кросс-ссылки на этот массив. Есть парочка, в том числе из функции SkillInitialize, то есть, вроде, инит по этим параметрам функцией, которая и называется красиво.
Только вот ссылка странная, не просто на _gSkill_param, а _gSkill_param - 0xYYYYY
То есть, с вычитанием некоего смещения. Что странно.
ВинХексом поискал в файле этот массив - нашел два(!!) совпадения. Одно, которое патчил, другое - раньше. То, которое раньше в IDA почему-то не попадает, бинарный поиск не находит его.
Если же в файле пропатчить этот более ранний массив, игра перестает работать - вылетает на заставке, как это часто делают криво сломанные игры.

Вопрос - как это все заставить работать? Где и что разглядывать на предмет самопроверки игры? Почему ИДА не находит в листинге этот первый массив?
Как поменять оффсет, который ссылается на первый массив, чтобы он указывал на второй (который можно безопасно патчить).
Я, к сожалению, не читаю "на глаз ARM-овские инструкции, для меня эти MOV, LDR с тремя операндами - темный лес. Стандартный интеловский АСМ привычнее
прошу ногами не пинать, а подмочь со справочной литературой.
А то гугл на запросы по взлому iPhone либо разлочки предлагает, либо отвязку аппликаций от аппстора скриптами с хакулуса (тоже кряк, конечно, но не то, что мне надо).



Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 15 апреля 2011 22:22
· Личное сообщение · #20

решил в очередной раз сделать попытку ковырнуть ios

вопрос сводится к одному... как сделать дамп приложения?

исходя из рецептов в сети (актуальность на 8-9 год, свежее не нашел)
нужен:
1) root доступ к устройству через ssh
2) при помощи otool определить адреса для дампа
3) при помощи gdb выгрузить программу из памяти



1) не могу понять как поставить otool (gdb стоит), или можно это сделать какой нибудь другой программой.
2) почему то через ssh не работает команда ps (список процессов) как побороть?
3) нужен наставник=))



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 16 апреля 2011 00:18
· Личное сообщение · #21

karim пишет:
3) при помощи gdb выгрузить программу из памяти

http://www.delorie.com/gnu/docs/gdb/gdb_69.html

Я не знаю какой там gdb. GDB - это вообще такая же спекуляция как ОС с открытым кодом. То что для чего-то там есть gdb, означает только то что формат команд будет похожим + какой-то абсолютный минимум команд будет совпадать с каноничным gdb с i386 никсов.

Так что очень может быть что нужной команды
Code:
  1. dump binary memory filename start_addr end_addr

в gdb для iOs и не окажется. И придется тупо через http://www.delorie.com/gnu/docs/gdb/gdb_56.html тупо тексом гнать всю память а потом конвертить в бинарь.

p.s. Я надеюсь ты знаешь что такое удаленная отладка?

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 16 апреля 2011 00:46
· Личное сообщение · #22

тогда как лучше поступить?
опыта работы с реверсом iphone нет,
удаленную отладку представляю только в теории

в кратце, есть программа из итюнс, можно скачать триал на 30 дней (триал можно сбросить)
активация происходит через интернет (даже триала),
в программе используется ключевой файл, ключ довольно сложный, предположительно с цифровой подписью...

имею root доступ к iphone (стоит Cydia openSSH)

подскажите пожалуйста что надо делать по пунктам
инструкций в интернете мало, буду признателен любой помощи



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 16 апреля 2011 16:06 · Поправил: Hexxx
· Личное сообщение · #23

karim пишет:
инструкций в интернете мало

Зато яблочко, и зато красивый понт.

karim пишет:
удаленную отладку представляю только в теории

Вот так это происходит если атачиться с мака: http://iphonedevwiki.net/index.php/Debugserver

В двух словах: на ифоне запускается серверная часть отладчика, на компе клиентская. По wifi ты конектишься по IP ифона на порт, который открыла серверная часть, из клиента. Ну и дальше уже командами отладчика атачишься к процессу и дампишь.

Если с винды, то придется искать какой-то gdb для винды чтобы приконектиться.

p.s. никогда так не делал

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 апреля 2011 16:29
· Личное сообщение · #24

Вроде как IDA умеет удаленно отлаживать процессы на иФоне.
Но у меня не особо-то получилось.

ЗЫ. А зачем дампить, если можно исполняемый бинарник в ИДА засунуть?




Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 16 апреля 2011 18:14
· Личное сообщение · #25

karim пишет:
не могу понять как поставить otool

Установи Xcode, otool в составе

-----
EnJoy!




Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 16 апреля 2011 18:15
· Личное сообщение · #26

разве можно использовать бинарник исходный использовать?
он же зашифрованный, или я ошибаюсь?



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 апреля 2011 21:53
· Личное сообщение · #27

Я брал расшифрованные poEdCrack-ом.
Зачем лишние движения, когда за тебя уже все расшифровали?



Ранг: 2.6 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 18 апреля 2011 00:46
· Личное сообщение · #28

poedcrack зависает намертво...
какие еще существуют варианты получения бинарника для ковыряния?



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 20 апреля 2011 03:23
· Личное сообщение · #29

на хакулусе много производных от поедкрака есть. Например, вроде как самый продвинутый - poedcrackMod. Так его вроде кличут.
Точно, так.
http://hackulo.us/forums//topic/62268-release-pcm-poedcrackmod-script/

Если для тренировки, то можно что-то уже "взломанное" (отвязанное от девайса) взять и посмотреть (вынув бинарник из ipa)
Но я в своих разглядках уперся в непатчимый сегмент, который ИДА не грузит

Еще хотел посмотреть, куда игры свои сейвы пишут, видимо, в sqlite какой-то. Но где смотреть базу - хз.




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 12 августа 2011 16:25
· Личное сообщение · #30

А реально отлаживать нэтив на эмуляторе ифона запущенном под Mac OS? То есть когда нет железного устройства.

-----
Следуй за белым кроликом



. 1 . 2 . >>
 eXeL@B —› Крэки, обсуждения —› Взлом приложений для iOS
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати