Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Мой первый pe-дампер (ассемблер) |

03.06.2007, 16:36
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Мой первый pe-дампер (ассемблер)
Весь код вместе с gui частью очень большой, привожу основной код.
Код:
Create_Dump proc
mov dword ptr lpofn.lStructSize,SIZEOF OPENFILENAME
push hInstance
pop lpofn.hInstance
mov dword ptr lpofn.lpstrFilter,offset filter_
mov dword ptr lpofn.Flags,1800h
mov dword ptr lpofn.lpstrFile,offset file_buf
mov dword ptr lpofn.lpstrTitle,offset title__
mov dword ptr lpofn.hwndOwner,0
mov dword ptr lpofn.nMaxFile,100h
invoke GetSaveFileName,offset lpofn
test eax,eax
je exit_
invoke CreateFileA,offset file_buf,GENERIC_ALL,FILE_SHARE_READ or FILE_SHARE_WRITE,0,2,0,0
.if eax!=-1
mov h_cd,eax
.endif
exit_:
ret
Create_Dump endp
dump__ proc par__:dword
local procEntry:PROCESSENTRY32
local buffertool:dword
local bufferfirst:dword
local hProcess:dword
LOCAL pNumberOfBytesRead:dword
local written_:dword
local szModulePath[256]:byte
local lpflOldProtect:dword
local pr_id:dword
local mEntry:MODULEENTRY32
local snap_:dword
local addr_module:dword
local h_dump_file:dword
local s_size:dword
local lpNumberOfBytesRead:dword
local _address_:dword
local size_headers:dword
local lpNumberOfBytesWritten:dword
local opt_size:dword
local first_sect:dword
invoke CreateToolhelp32Snapshot,2,0
mov buffertool, eax
mov procEntry.dwSize,500
invoke Process32First,buffertool, addr procEntry
mov bufferfirst, eax
.if eax!=INVALID_HANDLE_VALUE
xor edi,edi
.while eax!=0
invoke Process32Next,buffertool,addr procEntry
lea esi,procEntry
pushad
invoke lstrcmpiA,addr procEntry.szExeFile,par__
.if eax==0
mov esi,procEntry.th32ProcessID
mov pr_id,esi
invoke OpenProcess,PROCESS_ALL_ACCESS,0,esi
.if eax!=0
mov hProcess,eax
invoke CreateToolhelp32Snapshot, TH32CS_SNAPMODULE,pr_id
mov snap_,eax
mov mEntry.dwSize,SIZEOF mEntry
invoke Module32First,snap_,addr mEntry
mov edi,mEntry.modBaseAddr
mov addr_module,edi
invoke lstrcat,offset module_text,offset ct1
invoke lstrcat,offset module_text,addr mEntry.szModule
invoke lstrcat,offset module_text,addr ct2
invoke MessageBoxA,0,offset module_text,offset title_,0
invoke CreateFile,addr mEntry.szExePath,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0
.if eax!=-1
mov h_dump_file,eax
invoke GetFileSize,h_dump_file,0
mov s_size,eax
.if eax!=0
invoke VirtualAlloc,0,s_size,MEM_COMMIT,PAGE_READWRITE
mov _address_,eax
invoke ReadFile,h_dump_file,_address_,s_size,addr lpNumberOfBytesRead,0
mov edi,lpNumberOfBytesRead
.if edi==s_size
mov eax,_address_
cmp word ptr[eax],IMAGE_DOS_SIGNATURE ; ïðîâåðÿåì èñïîëíÿåìûé ëè ýòî ôàéë
jnz ext
add eax, 03ch
mov esi, dword ptr [eax]
sub esi, 03ch
add eax, esi
cmp dword ptr [eax],IMAGE_NT_SIGNATURE ; åñëè íå PE, òî âûõîäèì
jnz ext
assume eax:ptr IMAGE_NT_HEADERS
mov esi,[eax].OptionalHeader.SizeOfHeaders
mov size_headers,esi
mov esi,[eax].OptionalHeader.SizeOfImage
sub esi, size_headers
xor edx,edx
mov dx,[eax].FileHeader.NumberOfSections
xor ebx,ebx
mov bx,[eax].FileHeader.SizeOfOptionalHeader
mov num_of_sect,edx
mov opt_size,ebx
mov edx,18h
add edx,opt_size
mov first_sect,edx
add first_sect,eax
pushad
call Create_Dump
popad
pushad
invoke WriteFile,h_cd,_address_,size_headers,addr lpNumberOfBytesWritten,0
popad
mov edi,first_sect
looo_:
assume edi:ptr IMAGE_SECTION_HEADER
mov esi,[edi].VirtualAddress
mov edx,addr_module
add edx,esi
pushad
invoke VirtualAlloc,0,dword ptr [edi+8],MEM_COMMIT,PAGE_READWRITE
mov REGION_,eax
popad
pushad
invoke ReadProcessMemory,hProcess,edx,REGION_,dword ptr [edi+8],addr lpNumberOfBytesRead
popad
pushad
invoke WriteFile,h_cd,REGION_,[edi].SizeOfRawData,addr lpNumberOfBytesWritten,0
popad
pushad
invoke VirtualFree,REGION_,dword ptr [edi+8],MEM_DECOMMIT
popad
add first_sect, SIZEOF IMAGE_SECTION_HEADER
mov edi,first_sect
dec num_of_sect
jnz looo_
ext:
invoke VirtualFree,_address_,s_size,MEM_DECOMMIT
invoke CloseHandle,hProcess
invoke CloseHandle,h_cd
jmp ret_
.endif
.endif
.endif
.endif
.endif
popad
.endw
.endif
ret_:
leave
ret
dump__ endp
Сам дампер можно скачать тут
http://slil.ru/24458259
P.S. Дабл клик по процессу чтобы сдампить
Последний раз редактировалось 0x0c0de; 03.06.2007 в 19:30..
|
|
|

03.06.2007, 19:02
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Кто протестил отпишитесь. Что подправить, где какие баги
|
|
|

03.06.2007, 19:13
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
енто не тот, который на васме валялся?
|
|
|

03.06.2007, 19:19
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Нет. Это плод моей трехдневной работы и чтения документации по pe- формату
Последний раз редактировалось 0x0c0de; 03.06.2007 в 19:22..
|
|
|

03.06.2007, 19:29
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
кстати, допиши, что это Pe дампер. А то сразу и не врубишь, что именно он дампит то и куда.
|
|
|

03.06.2007, 19:35
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Заголовок с диска беру, так как его имеют привычку калечить в памяти (но это на перспективу разработки)
|
|
|

03.06.2007, 23:47
|
|
Постоянный
Регистрация: 29.04.2007
Сообщений: 496
Провел на форуме: 2715445
Репутация:
588
|
|
а смысл? если чисто для себя, тогда понятно, но зачем выкладывать?
лучше б как плагин к Ольге накодил, поинтереснее будит...
з.ы. заголовок надо брать из секций, и из памяти и при несовпадении уже думать,
где правда (истЕна рядом)
+ DumpFix прикрути... а то и потестить сложновато =(
|
|
|

26.12.2007, 03:13
|
|
Участник форума
Регистрация: 30.09.2006
Сообщений: 134
Провел на форуме: 352963
Репутация:
197
|
|
Это для того чтобы новички могли на его основе накодить свой дампер. Вот в чём смысл уважаемый hellspawn 
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Мой первый криптор
|
antiXaker |
Защита ОС: вирусы, антивирусы, файрволы. |
29 |
06.06.2007 23:00 |
|
Мой первый сайт
|
7ion |
Обсуждение Ваших сайтов |
37 |
01.01.2007 19:16 |
|
Мой первый скан
|
LeverOne |
Защита ОС: вирусы, антивирусы, файрволы. |
5 |
03.05.2006 07:26 |
|
МОЙ ПЕРВЫЙ ДЕФЕЙС =)))
|
Xalegi |
Болталка |
36 |
15.12.2005 13:21 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|