Поиск:

Ответ в темуСоздание новой темы Создание опроса
> loader 
:(
    Опции темы
_hunter
  Дата 12.12.2004, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



добрый день.

Нужен код, запускающий exe, идущий следом за кодом.
( извините за формулировку )

Памагите чем не жалка


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
oleg1973
Дата 12.12.2004, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 7
Всего: 34



в темп сохрани и запускай


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
_hunter
Дата 12.12.2004, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



низзя smile
именно таким раком нужно


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
_hunter
Дата 14.12.2004, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



народ, ну хоть это помогите перевести:

Код
;  l_w32pe.asm -- loader & decompressor for the w32/pe format
%define         UPX102  1
%define         jmps    jmp short
%define         jmpn    jmp near
%define         jnzn    jnz near
%define         jbn     jb near
%include        "macros.ash"

               BITS    32
               SECTION .text
               ORG     0
               CPU     386

; =============
; ============= ENTRY POINT
; =============

%ifdef  __PEISDLL1__
               cmp     byte [esp + 8], 1
               jnzn    reloc_end_jmp
%endif; __PEMAIN01__
               pushad
               mov     esi, 'ESI0'    ; relocated
               lea     edi, [esi + 'EDI0']
%ifdef  __PEICONS1__
               inc     word [edi + 'ICON']
%else;  __PEICONS2__
               add     word [edi + 'ICON'],'DR'
%endif; __PEICONSZ__
%ifdef  __PETLSHAK__
               mov     dword [edi + 'TLSA'],'TLSV'
%endif; __PEMAIN02__
               push    edi
mpass:
               or      ebp, byte -1

; =============
; ============= DECOMPRESSION
; =============

%include      "n2b_d32.ash"
%include      "n2d_d32.ash"
%include      "n2e_d32.ash"

; =============

%ifdef  __PEMULTIP__
               lodsd
               add     edi, eax
               jbn     mpass
%endif; __PEMAIN10__

; =============
               pop     esi            ; load vaddr

; =============
; ============= CALLTRICK
; =============

%ifdef  __PECALLTR__
%ifdef  __PECTTPOS__
               lea     edi, [esi + 'TEXV']
%else;  __PECTTNUL__
               mov     edi, esi
%endif; __PEDUMMY0__
               cjt32   esi
%endif; __PEDUMMY1__

; =============
; ============= IMPORTS
; =============

%ifdef  __PEIMPORT__
               lea     edi, [esi + 'BIMP']
next_dll:
               mov     eax, [edi]
               or      eax, eax
               jz      imports_done
               mov     ebx, [edi+4]   ; iat
               lea     eax, [eax + esi + 'IMPS']
               add     ebx, esi
               push    eax
               add     edi, byte 8
               call    [esi + 'LOAD'] ; LoadLibraryA
               xchg    eax, ebp
next_func:
               mov     al, [edi]
               inc     edi
               or      al, al
               jz      next_dll
               mov     ecx, edi       ; something > 0
%ifdef  __PEIBYORD__
               jns     byname
%ifdef  __PEK32ORD__
               jpe     not_kernel32
               mov     eax, [edi]
               add     edi, byte 4
               mov     eax, [eax + esi + 'K32O']
               jmps    next_imp
not_kernel32:
%endif; __PEIMORD1__
               movzx   eax, word [edi]
               inc     edi
               push    eax
               inc     edi
               db      0xb9           ; mov ecx,xxxx
byname:
%endif; __PEIMPOR2__
               push    edi
               dec     eax
               repne
               scasb

               push    ebp
               call    [esi + 'GETP'] ; GetProcAddr
               or      eax, eax
               jz      imp_failed
next_imp:
               mov     [ebx], eax
               add     ebx, byte 4
               jmps    next_func
imp_failed:
%ifdef  __PEIERDLL__
               popad
               xor     eax, eax
               retn    0x0c
%else;  __PEIEREXE__
               call    [esi + 'EXIT'] ; ExitProcess
%endif; __PEIMDONE__
imports_done:
%endif; __PEIMPOR9__

; =============
; ============= RELOCATION
; =============

%ifdef  __PERELOC1__
               lea     edi, [esi + 'BREL']
;       __PERELOC2__
               add     edi, byte 4
;       __PERELOC3__
               lea     ebx, [esi - 4]
               reloc32 edi, ebx, esi
%endif; __PERELOC9__

; =============

; FIXME: depends on that in PERELOC1 edi is set!!
%ifdef  __PERLOHI0__
               xchg    edi, esi
               lea     ecx, [edi + 'DELT']
%endif; __PERLOHIZ__

%ifdef  __PERELLO0__
               db      0xA9
rello0:
               add     [edi + eax], cx
               lodsd
               or      eax, eax
               jnz     rello0
%endif; __PERELLOZ__

; =============

%ifdef  __PERELHI0__
               shr     ecx, 16
               db      0xA9
relhi0:
               add     [edi + eax], cx
               lodsd
               or      eax, eax
               jnz     relhi0
%endif; __PERELHIZ__

; =============

;       __PEMAIN20__
               popad
reloc_end_jmp:
%ifdef  __PERETURN__
               xor     eax, eax
               inc     eax
               retn    0x0C
%else;  __PEDOJUMP__
               jmpn    .1+'JMPO'
.1:
%endif; __PEDUMMY3__

; =============
; ============= CUT HERE
; =============

%include        "header.ash"

eof:
;       __PETHEEND__
               section .data
               dd      -1
               dw      eof


Код
;  macros.ash
; =============
; ============= 16-BIT CALLTRICK & JUMPTRICK
; =============


%macro          cjt16   1
%ifdef  __CALLTR16__
               pop     si
               mov     cx, 'CT'
cjt16_L1:
               lodsb
               sub     al, 0xe8
               cmp     al, 1
               ja      cjt16_L1

%ifdef  __CT16I286__
               rol     word [si], 8
;       __CT16SUB0__
               sub     [si], si
%else;  __CT16I086__
               mov     bx, [si]
               xchg    bl, bh
               sub     bx, si
               mov     [si], bx
%endif; __CALLTRI2__
               lodsw
               loop    cjt16_L1
%endif; __CT16DUM1__

; =============

%ifdef  __CT16E800__
               mov     al, 0xe8
%else;  __CT16E900__
               mov     al, 0xe9
%endif; __CALLTRI5__
               pop     di
               mov     cx, 'CT'
cjt16_L11:
               repne
               scasb
%ifdef  __CT16JEND__
               jnz     %1             ; FIXME: this doesn't get relocated
%else;  __CT16JUL2__
               jnz     cjt16_L2
%endif; __CT16DUM2__

%ifdef  __CT16I287__
               rol     word [di], 8
;       __CT16SUB1__
               sub     [di], di
%else;  __CT16I087__
               mov     bx, [di]
               xchg    bl, bh
               sub     bx, di
               mov     [di], bx
%endif; __CALLTRI6__
               scasw
               jmps    cjt16_L11
cjt16_L2:
;       __CT16DUMM3__
%endmacro



;; =============
;; ============= 32-BIT CALLTRICK & JUMPTRICK
;; =============

;;  call & jump trick : 2 in 1
%macro          cjt32   1
%ifdef  __CALLTR00__
               mov     ecx, 'TEXL'
calltrickloop:
               mov     al, [edi]
               inc     edi
               sub     al, 0xE8
ct1:
               cmp     al, 1
               ja      calltrickloop
%ifdef  __CTCLEVE1__
               cmp     byte [edi], '?'
               jnz     calltrickloop
%endif; __CALLTR01__
               mov     eax, [edi]
               mov     bl, [edi + 4]
%ifdef  __CTDUMMY1__
%ifdef  __CTBSHR01__
               shr     ax, 8
%else;  __CTBROR01__
               xchg    al, ah
%endif; __CTBSWA01__
               rol     eax, 16
               xchg    al, ah
%endif; __CALLTR02__
               sub     eax, edi
               sub     bl, 0xE8
%ifnidn %1,0
               add     eax, %1
%endif
               mov     [edi], eax
               add     edi, byte 5
               mov     eax, ebx
               loop    ct1
%else;  __CALLTR10__
;; 32-bit call XOR jump trick
               mov     ecx, 'TEXL'
ctloop1:
%ifdef  __CALLTRE8__
               mov     al,0xE8
%else;  __CALLTRE9__
               mov     al,0xE9
%endif; __CALLTR11__
ctloop2:
               repnz
               scasb
               jnz     ctend
%ifdef  __CTCLEVE2__
               cmp     byte [edi], '?'
               jnz     ctloop2
%endif; __CALLTR12__
               mov     eax, [edi]
%ifdef  __CTDUMMY2__
%ifdef  __CTBSHR11__
               shr     ax, 8
%else;  __CTBROR11__
               xchg    al, ah
%endif; __CTBSWA11__
               rol     eax, 16
               xchg    al, ah
%endif; __CALLTR13__
               sub     eax, edi
%ifnidn %1,0
               add     eax, %1
%endif
               stosd
               jmps    ctloop1
ctend:
%endif; __CTTHEEND__
%endmacro



;; =============
;; ============= 32-BIT RELOCATIONS
;; =============

%macro          reloc32 3
;       __RELOC320__
reloc_main:
               xor     eax, eax
               mov     al, [%1]
               inc     %1
               or      eax, eax
               jz      reloc_endx
               cmp     al, 0xEF
               ja      reloc_fx
reloc_add:
               add     %2, eax
%if 1
               mov     eax, [%2]
               xchg    al, ah
               rol     eax, 16
               xchg    al, ah
               add     eax, %3
               mov     [%2], eax
%else
               add     [%2], %3
%endif
               jmps    reloc_main
reloc_fx:
               and     al, 0x0F
               shl     eax, 16
               mov     ax, [%1]
               add     %1, byte 2
%ifdef  __REL32BIG__
               or      eax, eax
               jnz     reloc_add
               mov     eax, [%1]
               add     %1, byte 4
%endif; __RELOC32J__
               jmps    reloc_add
reloc_endx:
;       __REL32END__
%endmacro



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
oleg1973
Дата 14.12.2004, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 7
Всего: 34



какой ужас
и так в 2х словах как надо делать:
1) создать свой ехе с image base как у оригинального!
2) сделать НЕИНИЦИАЛИЗИРОВАННУЮ секцию по размеру равную сумме всех секций оригинального ехе
3) перекинуть туда секции оригинала с нужным offset
4) заполнить import table
5) передать управление на EP

все
p.s.
и еще вот это нада будет
Цитата
Peering Inside the PE: A Tour of the Win32 Portable Executable File Format
Matt Pietrek
March 1994




--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
_hunter
Дата 14.12.2004, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



а можно это в коде ( я в асме не особо... )...
( ОЧЕНЬ нужно )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
oleg1973
Дата 15.12.2004, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 7
Всего: 34



а в чем силен?
в данном случае язык роли не играет


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
_hunter
Дата 15.12.2004, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



в с, но как там передать управление -- хз.
пробывал на winmain -- но косяки какое-то лезут...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
_hunter
Дата 15.12.2004, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



можеш код глянуть ( я его на мыло кинул ) что там не так?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1109 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.