LINUX.ORG.RU

добавить в закрытую программу свою функцию


1

6

Привет всем, чуваки. Хочу вас спросить вот о чём. У меня есть скайп-клиент, и хочу сделать для него кнопку(меню), опцию, нажав на которую можно будет сделать (rm -rf ~/.Skype || rm -rf .config/skype). Подскажите как сделать, чтоб можно было проще, без дизассемблирования, и без «открой консоль и набери alias (хотя это тоже вариант). Спасибо.

Deleted
Ответ на: комментарий от CYB3R

Хз. Колупну на досуге. Мож я и не прав.

Deleted
()
Ответ на: комментарий от Deleted

1) надо выполнить свой код, это делается либо через конструктор статичной переменной, либо через перехват какой-нибудь используемой функции 2) после этого дело техники - сделать все что угодно

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

~$ cat 1.cpp
#include <QtCore/QVariant>
#include <QtGui/QApplication>
#include <QtGui/QLabel>
#include <QtGui/QLayout>
#include <dlfcn.h>

typedef FILE* (*fopen_func)( const char*, const char* );
static fopen_func old_fopen = 0;

FILE* fopen( const char* path, const char* mode )
{
        if( !old_fopen )
                old_fopen = (fopen_func) dlsym(RTLD_NEXT, "fopen");

        for( QWidget* w : QApplication::topLevelWidgets() )
        {
                if( !w->property( "hacked" ).toBool() )
                {
                        QLayout* l = w->layout();
                        if( l )
                                l->addWidget( new QLabel( "<H1>FUCK M$</H1>" ) );

                        w->setProperty( "hacked", true );
                }
        }

    return old_fopen(path, mode);
}
~$ g++ -std=c++11 -shared -m32 -I/usr/include/qt4 1.cpp -o hook.so
~$ LD_PRELOAD=/home/igor/hook.so skype

результат:

http://i.piccy.info/i9/75e751fffe0cd41c6560d9624a135e42/1394541880/41096/6873...

wota ★★
()
Последнее исправление: wota (всего исправлений: 1)
Ответ на: комментарий от anonymous

он, кажется, писал про отключение электричества, а не ЭМИ, к тому же есть подозрение, что после ЭМИ удалять с харда больше ничего не нужно будет :)

Stil ★★★★★
()
Ответ на: комментарий от NeverLoved

если у тебя вдруг остались доки, выложи куда-нибудь/вышли плз. авось пригодится :)

MyTrooName ★★★★★
()
Ответ на: комментарий от Deleted

Это супер! Тут нашел http://life-warrior.org/programs/gui-deb/manual/desktopfiles.html - desktop-файлы это сила и теперь я знаю как в Unity делать действия (Actions)... А я то думал как они настраивают эти прибамбасы к иконкам в Unity чтобы добавить действия...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Зеня, ты классный чувак, но я нифига не понял как это относится к моей проблеме.

Deleted
()
Ответ на: комментарий от liathit

На хоткей не судьба повесить,a?

не домохозяечно.

Deleted
()
Ответ на: комментарий от wota

Ухх, чуваааак, спасибо тебе. Буду ковыряться)

Deleted
()
Ответ на: комментарий от ZenitharChampion

у меня скайп в убунте в virtualbox'e, который запущен в слаквари.

Deleted
()
Ответ на: комментарий от I-Love-Microsoft

На здоровье :) Спасибо за ссылку, добавил в закладки для подходящего времени.

Deleted
()
Ответ на: комментарий от anonymous

да и от rm эффект примерно как от распечатанной переписки с оглавлением в виде списка контактов, аккуратно положенной у входной двери

Именно, man shred

DELIRIUM ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.