Распаковка файла - Assembler
Формулировка задачи:
Доброго времени суток.
у меня возникла необходимость распаковать файл "exe"
из у всей инфы, которую удалось найти в инете, я понял. что сделать это с помощью какого бы то ни было распаковщика
мне не удастся, единственный способ - это распаковать в ручную.
как оказалось я не в состоянии сделать этого сам . поэтому прошу вашей помощи.
сразу скажу во избежание лишних вопросов: этот файл уже был у меня в не запакованном виде, но был утрачен пару лет назад. сейчас на просторах инета я не смог найти его. у друга оказалась эта программа, но в запакованном варианте.
эта программа представляет из себя (эмулятор) игрового автомата Coldfire2 Gaminator
прилагаю сам EXE
Аваст на него ругается(не знаю, на что)
там например в комплекте еще идет DLL так в ней построено управление клавишами по принципу клавиатурного перехватчика, а здесь не знаю почему. может так упакован.
Решение задачи: «Распаковка файла»
textual
Листинг программы
.adata:00883025 .adata:00883025 public start .adata:00883025 start proc near .adata:00883025 pusha .adata:00883026 pushf .adata:00883027 push offset ModuleName ; "kernel32.dll" .adata:0088302C call GetModuleHandleA .adata:00883032 push offset ProcName ; "OutputDebugStringA" .adata:00883037 push eax ; hModule .adata:00883038 call GetProcAddress .adata:0088303E mov ds:dword_883046, eax .adata:00883044 jmp short loc_88304A .adata:00883044 ; --------------------------------------------------------------------------- .adata:00883046 dword_883046 dd 0 ; DATA XREF: start+19w .adata:00883046 ; start:loc_883060r ... .adata:0088304A ; --------------------------------------------------------------------------- .adata:0088304A .adata:0088304A loc_88304A: ; CODE XREF: start+1Fj .adata:0088304A push offset flOldProtect ; lpflOldProtect .adata:0088304F push 40h ; flNewProtect .adata:00883051 push 10h ; dwSize .adata:00883053 push eax ; lpAddress .adata:00883054 call VirtualProtect .adata:0088305A jmp short loc_883060 .adata:0088305A ; --------------------------------------------------------------------------- .adata:0088305C ; DWORD flOldProtect .adata:0088305C flOldProtect dd 0 ; DATA XREF: start:loc_88304Ao .adata:00883060 ; --------------------------------------------------------------------------- .adata:00883060 .adata:00883060 loc_883060: ; CODE XREF: start+35j .adata:00883060 mov eax, ds:dword_883046 .adata:00883065 mov byte ptr [eax], 68h .adata:00883068 mov dword ptr [eax+1], offset loc_88307A .adata:0088306F mov byte ptr [eax+5], 0C3h .adata:00883073 popf .adata:00883074 popa .adata:00883075 jmp short loc_8830CF .adata:00883075 ; --------------------------------------------------------------------------- .adata:00883077 align 4 .adata:00883078 db 2 dup(0) .adata:0088307A ; --------------------------------------------------------------------------- .adata:0088307A .adata:0088307A loc_88307A: ; DATA XREF: start+43o .adata:0088307A jmp short loc_88307D .adata:0088307A ; --------------------------------------------------------------------------- .adata:0088307C byte_88307C db 0 ; DATA XREF: start:loc_88307Dr .adata:0088307C ; start:loc_8830BDw .adata:0088307D ; --------------------------------------------------------------------------- .adata:0088307D .adata:0088307D loc_88307D: ; CODE XREF: start:loc_88307Aj .adata:0088307D cmp ds:byte_88307C, 1 .adata:00883084 jnz short loc_8830BD .adata:00883086 mov ss:(dword_869000+0DFF6h - 877006h)[ebp], 0C3727D79h .adata:0088308D mov ss:(dword_869000+0DFE2h - 877006h)[ebp], 0FC9CAB28h .adata:00883094 mov ss:(dword_869000+0DFE6h - 877006h)[ebp], 58C21AD9h .adata:0088309B mov ss:(dword_869000+0DFEAh - 877006h)[ebp], 7FDAEAFAh .adata:008830A2 mov ss:(dword_869000+0DFEEh - 877006h)[ebp], 0D6C5EB09h .adata:008830A9 pusha .adata:008830AA mov eax, ds:dword_883046 .adata:008830AF mov dword ptr [eax], 1B8h .adata:008830B5 mov dword ptr [eax+4], 4C200h .adata:008830BC popa .adata:008830BD .adata:008830BD loc_8830BD: ; CODE XREF: start+5Fj .adata:008830BD inc ds:byte_88307C .adata:008830C3 mov eax, 1 .adata:008830C8 retn 4 .adata:008830C8 ; --------------------------------------------------------------------------- .adata:008830CB dword_8830CB dd 0 ; DATA XREF: start+B1w .adata:008830CB ; sub_8830ED+2r .adata:008830CF ; --------------------------------------------------------------------------- .adata:008830CF .adata:008830CF loc_8830CF: ; CODE XREF: start+50j .adata:008830CF pusha .adata:008830D0 pushf .adata:008830D1 mov eax, VirtualProtect .adata:008830D6 mov ds:dword_8830CB, eax .adata:008830DB mov VirtualProtect, offset sub_8830ED .adata:008830E5 popf .adata:008830E6 popa .adata:008830E7 push offset sub_877000 .adata:008830EC retn .adata:008830EC start endp .adata:008830EC .adata:008830ED .adata:008830ED ; =============== S U B R O U T I N E ======================================= .adata:008830ED .adata:008830ED .adata:008830ED sub_8830ED proc near ; DATA XREF: start+B6o .adata:008830ED pusha .adata:008830EE pushf .adata:008830EF mov ebx, ds:dword_8830CB .adata:008830F5 mov VirtualProtect, ebx .adata:008830FB mov byte ptr [eax+4E6A4h], 68h .adata:00883102 mov byte ptr [eax+4E6A9h], 0C3h .adata:00883109 mov dword ptr [eax+4E6A5h], offset sub_883141 .adata:00883113 nop .adata:00883114 nop .adata:00883115 nop .adata:00883116 nop .adata:00883117 nop .adata:00883118 nop .adata:00883119 nop .adata:0088311A nop .adata:0088311B nop .adata:0088311C nop .adata:0088311D nop .adata:0088311E nop .adata:0088311F nop .adata:00883120 nop .adata:00883121 nop .adata:00883122 nop .adata:00883123 nop .adata:00883124 nop .adata:00883125 nop .adata:00883126 nop .adata:00883127 nop .adata:00883128 nop .adata:00883129 nop .adata:0088312A nop .adata:0088312B nop .adata:0088312C nop .adata:0088312D nop .adata:0088312E nop .adata:0088312F nop .adata:00883130 nop .adata:00883131 nop .adata:00883132 nop .adata:00883133 nop .adata:00883134 nop .adata:00883135 nop .adata:00883136 nop .adata:00883137 nop .adata:00883138 nop .adata:00883139 popf .adata:0088313A popa .adata:0088313B jmp VirtualProtect .adata:0088313B sub_8830ED endp .adata:0088313B .adata:00883141 .adata:00883141 ; =============== S U B R O U T I N E ======================================= .adata:00883141 .adata:00883141 .adata:00883141 sub_883141 proc near ; DATA XREF: sub_8830ED+1Co .adata:00883141 mov dword ptr [ebp-4], 0EC09EB1Ch .adata:00883148 mov eax, [ebp-4] .adata:0088314B pop esi .adata:0088314C mov esp, ebp .adata:0088314E pop ebp .adata:0088314F retn 8 .adata:0088314F sub_883141 endp ; sp-analysis failed .adata:0088314F .adata:0088314F ; --------------------------------------------------------------------------- .adata:00883152 align 1000h .adata:00884000 dd offset dword_401000+9A56Eh .adata:00884004 dd offset dword_401000+9A564h .adata:00884008 dd offset dword_401000+9A554h .adata:0088400C dd offset dword_401000+9A544h .adata:00884010 dd offset dword_401000+9A538h .adata:00884014 dd offset dword_401000+9A528h .adata:00884018 dd offset dword_401000+9A516h .adata:0088401C dd offset dword_401000+9A504h .adata:00884020 dd offset dword_401000+9A4F8h .adata:00884024 dd offset dword_401000+9A57Eh .adata:00884028 dd 0 .adata:0088402C dd offset dword_401000+99D90h .adata:00884030 dd offset dword_401000+99DA0h .adata:00884034 dd offset dword_401000+99DB0h .adata:00884038 dd offset dword_401000+99DBEh .adata:0088403C dd offset dword_401000+99DCCh .adata:00884040 dd offset dword_401000+99DDCh .adata:00884044 dd offset dword_401000+99DF2h......
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д