herm1t LIVE!ng room - Post a comment [entries|archive|friends|userinfo]
herm1t

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

Будни извращенцев-2 Jun. 9th, 2009|01:24 pm

herm1t
Иногда просто зарубает на абсолютно дурацких пустяках. А компилятор между тем противиться насилию над собой, с 4.1, эта фича вылилась в вот такой код:
 80483c0:       81 ff ef be ad de       cmp    $0xdeadbeef,%edi
 80483c6:       74 18                   je     80483e0
 80483c8:       b8 e0 83 04 08          mov    $0x80483e0,%eax
 80483cd:       83 ec 0c                sub   $0xc,%esp
 80483d0:       2d 74 80 04 08          sub    $0x8048074,%eax
 80483d5:       01 f8                   add    %edi,%eax
 80483d7:       50                      push   %eax
 80483d8:       e8 8a 00 00 00          call   8048467 <jmp.2859>
 80483dd:       83 c4 0c                add   $0xc,%esp
 80483e0:
Решение для 4.1 (ключевого слова asm не избежать Ж-):
void __attribute__((noinline,stdcall)) jmp(uint32_t addr) {
  *(volatile uint32_t*)(&addr - 1) = addr;
}
extern void L;
jmp(nloc + (uint32_t)&L - (uint32_t)&virus_start); asm ("L:");
Link Read Comments

Reply:
From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs IP addresses of anonymous posters.