GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu v handleru SIGILL přeskočit problematickou instrukci?

Je to velmi hackerské a NEPŘENOSNÉ, ale:

void sighandler (int signo, siginfo_t si, void *data) {
    ucontext_t *uc = (ucontext_t *)data;

    int instruction_length = /* the length of the "instruction" to skip */

    uc->uc_mcontext.gregs[REG_RIP] += instruction_length;
}

nainstalujte sighandler takhle:

struct sigaction sa, osa;
sa.sa_flags = SA_ONSTACK | SA_RESTART | SA_SIGINFO;
sa.sa_sigaction = sighandler;
sigaction(SIGILL, &sa, &osa);

To mohlo fungovat, pokud víte, jak daleko přeskočit (a je to Intel proc) :-)


Linux
  1. Jak mohu najít verzi Fedory, kterou používám?

  2. Jak můžete určit nainstalované verze knihoven glibc?

  3. Jak mohu nastavit 'backend' v matplotlib v Pythonu?

  1. Jak mohu spustit kód PHP z příkazového řádku?

  2. Jak mohu vidět velikost souborů a adresářů v linuxu?

  3. Jak mohu spočítat počet znaků v proměnné Bash

  1. Jak mohu trvale skrýt panel nástrojů v Emacsu?

  2. Jak mohu najít nejstarší soubor ve stromu adresářů

  3. Jak mohu rastrovat veškerý text v PDF?