| eXeL@B —› Основной форум —› дамп динамически аллокированных блоков памяти процесса ? | 
| << . 1 . 2 . | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 19 октября 2005 17:11  · Личное сообщение · #1  | 
| 
 | 
Создано: 20 октября 2005 14:45  · Личное сообщение · #2 Barakuda пишет: Так. У меня экстрасенсорные возможности плохо развиты. Это наживное  . Главное - тренировка.
Barakuda пишет: Если хочешь сам это сделать то давай ссылку на прогу, а там видно будет. Если нет, то пишы в запросы на взлом. Да ладно, бог с ним - сам уж как-нибудь разгребусь   (F11 так F11 - не боги горшки обжигают). В любом случае - спасибо за участие - ну и если исходничек через денек подкинешь, то отдельное.
![]()  | 
| 
 | 
Создано: 20 октября 2005 18:16  · Личное сообщение · #3  | 
| 
 | 
Создано: 21 октября 2005 00:54 · Поправил: intty  · Личное сообщение · #4 меня что-то заинтересовал сабж. почитал тему. 80% оффтоп. короче. по поводу "дампить включая динамически аллокированные им блоки памяти с данными (либо только их)" я сделал так: пишем простенький код(у меня под рукой оказался масм): 
.DATA
	teststring	db "yeah i'm here",0
...
.DATA?
	tmp		DWORD ?
...
.CODE
...
			push	PAGE_READWRITE
			push	MEM_COMMIT
			push	010h
			push	NULL
			call	VirtualAlloc
			mov	tmp,eax
			cld				; Work upwards
			mov	esi, offset teststring	; Source address
			mov	edi, tmp		; Destination address
			mov	ecx, 0Fh		; Get size in bytes
			shr	ecx, 1			; Convert to words   
			rep	movsw			; repeat copy util all done
далее брякаемся после VirtualAlloc. в eax будет указатель на аллокированный кусок памяти размером 16 байт. следующий за ф-ией код копирует строку teststring в выделенный нами диапазон. пройдя его, открываем PETools, и дампим по выделенному адресу(тот, который в tmp) 16 байт. думаю гадать не нужно, что окажется в сдампленном файле (Dump_00950000_0000000F.dmp) 79 65 61 68 20 69 27 6D 20 68 65 72 65 00 00 || yeah i'm here какие трудности? ![]()  | 
| 
 | 
Создано: 21 октября 2005 10:31  · Личное сообщение · #5 intty пишет: какие трудности? Да собственно никаких  . Вопрос мой на самом-то деле был не в том, как написать утилиту для дампа, а нет ли в природе уже написанной - такой чтобы позволяла для выделенного процесса получить дамп примерно в виде:
Block 1 Address 0x00020000 Size 12312 Read/Write 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22... Block 2 Address 0x00030000 Size 32123 Read/Write/Execute 33 33 33 33 33 33 33 33 33 .... и т.д. То-есть вопрос носил не теоретический (как написать), а сугубо практический (где найти) характер  . А написать-то не проблема - времени только жалко: вероятно 3-5 дней потребуется на написание и отладку с нуля.
![]()  | 
| 
 | 
Создано: 21 октября 2005 10:41  · Личное сообщение · #6 agent Cooper Вот тебе исходник Рихтера для определения выделенных диапазонов памяти в адресном пространстве процесса.   d7af_04_ProcessInfo.zip
![]()  | 
| 
 | 
Создано: 21 октября 2005 11:12  · Личное сообщение · #7  | 
| 
 | 
Создано: 21 октября 2005 13:22  · Личное сообщение · #8 agent Cooper В догонку: pmdump.exe is a tool that dumps memory for a specified process to a file (as opposed to tools like memdump and dd which dump all of the RAM at once). It is useful for auditing things that might store passwords in memory (for example, VPN clients, email clients, and instant-messaging applications). Дампер всей памяти процеса: packetstorm.linuxsecurity.com/Win2k/pmdump.exe Может когда-то пригодится. ![]()  | 
| 
 | 
Создано: 21 октября 2005 15:48  · Личное сообщение · #9  | 
| << . 1 . 2 . | 
| eXeL@B —› Основной форум —› дамп динамически аллокированных блоков памяти процесса ? | 


. Главное - тренировка.
 (F11 так F11 - не боги горшки обжигают). В любом случае - спасибо за участие - ну и если исходничек через денек подкинешь, то отдельное.





 
 Для печати