Да, вы правильно разобрались!
У нас супергаджет такой:
LDMIA R6!, {R2-R5,R7}
BX R7
Соответственно, переходы от него происходят по регистру r7. Эти адреса — это адреса других гаджетов, которые я использовал в цепочке вместе с супергаджетом.
Тут еще надо учитывать, что в архитектуре ARM исполнение может происходить в режимах ARM и Thumb, поэтому надо не забывать инкрементировать адрес в инструкциях прыжков при переходе на Thumb. В ROPGadget, кстати, есть опция, чтобы искать гаджеты либо в одном, либо в другом режимах.
Такой цепочкой при правильно настроенных регистрах, мы можем прочитать канарейку и записать ее в расшаренную память. Как вы правильно сказали, mapInfo3.sVirtualAddr это ее адрес на стороне Normal World.
А для Hello, world! нужен гаджет, который загрузит аргумент в r0 и прыгнет на tlApiLogPrintf. Например, такой :) :
Бинарь, конечно, есть. Могу дать)
Да, вы правильно разобрались!
У нас супергаджет такой:
Соответственно, переходы от него происходят по регистру
r7
. Эти адреса — это адреса других гаджетов, которые я использовал в цепочке вместе с супергаджетом.Тут еще надо учитывать, что в архитектуре ARM исполнение может происходить в режимах ARM и Thumb, поэтому надо не забывать инкрементировать адрес в инструкциях прыжков при переходе на Thumb. В ROPGadget, кстати, есть опция, чтобы искать гаджеты либо в одном, либо в другом режимах.
Такой цепочкой при правильно настроенных регистрах, мы можем прочитать канарейку и записать ее в расшаренную память. Как вы правильно сказали,
mapInfo3.sVirtualAddr
это ее адрес на стороне Normal World.А для Hello, world! нужен гаджет, который загрузит аргумент в
r0
и прыгнет на tlApiLogPrintf. Например, такой :) :Верно. Все трастлеты подписаны.
github.com/msoos/sha256-sat-bitcoin.