herm1t LIVE!ng room [entries|archive|friends|userinfo]
herm1t

[ website | twilight corner in the herm1t's cave ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Вливаем немного кода и медленно перемешиваем [Jan. 5th, 2013|02:47 pm]
[Tags|, , , , , , , , , , ]

Я уже, как-то пользовался подобной фичей, а тут умница Indy (я ведь не ошибаюсь, Danilova на васме - это он?), напомнил. В результате получился вот такой кодик: ... )
L1:     mov     edx, 0xc88cffff
        db      0x66, 0xea
        dd      L2
        jae     L2
... )
format  db      "EAX=%08x EDX=%08x", 10, 0
EAX=7 EDX=FFFF Для тех, кто в танке, можно и подробнее: ... ) Ага? P.S. Привет дизассемблерам и кривоэмуляторам. Indy - respect.

UPD. Чтобы жизнь медом не казалась, переходим на x64: ... )

Link6 comments|Leave a comment

.dynamic [Oct. 9th, 2008|07:27 pm]
[Tags|, , ]

К 32-м нулям в .dynamic зарезервированым для prelink можно ещё добавить DT_INIT/DT_FINI (в экзешках линкер игнорирует эти таги, а в библиотеках их можно использовать, как точку входа). А можно не убивать, а заменить на DT_FLAGS со значением DF_BIND_NOW, после чего можно грохнуть команды (push .../jmp _plt) в .plt и получить 16 + <number of .plt entries>*10 байт. Можно связать освобождённое таким образом место при помощи «EB 06». И следить за тем, чтобы в собственном коде не было инструкций длинее 8 байт. Где-то так... )
LinkLeave a comment

Расширение сегмента кода [Oct. 9th, 2008|02:36 pm]
[Tags|, , , ]

Принцип «Работает — не трогай!» называют иногда «золотым правилом». Только вот беда, это «золотое» правило возвращает нас в бронзовый век. Если метод прост, надёжен и используется десяток лет, то никто и не пытается его улучшить. Пока не придёт кто-нибудь с непрокомпостированными мозгами, например Якуб Желинек. В начале сам допёр, разглядывая бинари, а потом сообразил, что именно так и работает prelink.

Как? )
LinkLeave a comment

navigation
[ viewing | most recent entries ]