Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Скрытие

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 09.03.2013, 11:41   #1
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Скрытие

Надо перевести функции на _asm_ с С++ на Delphi.
Сама функция на С++
Код:
void ModuleProtect::AntiHeaders(HINSTANCE hModule)
{
	DWORD dwPEB_LDR_DATA = 0;
	_asm
	{
		pushad;
		pushfd;
		mov eax, fs:[30h]		   // PEB
		mov eax, [eax+0Ch]		  // PEB->ProcessModuleInfo
		mov dwPEB_LDR_DATA, eax	 // Save ProcessModuleInfo

InLoadOrderModuleList:
		mov esi, [eax+0Ch]					  // ProcessModuleInfo->InLoadOrderModuleList[FORWARD]
		mov edx, [eax+10h]					  //  ProcessModuleInfo->InLoadOrderModuleList[BACKWARD]

		LoopInLoadOrderModuleList: 
		    lodsd							   //  Load First Module
			mov esi, eax		    			//  ESI points to Next Module
			mov ecx, [eax+18h]		    		//  LDR_MODULE->BaseAddress
			cmp ecx, hModule		    		//  Is it Our Module ?
			jne SkipA		    		    	//  If Not, Next Please (@f jumps to nearest Unamed Lable @@:)
		    	mov ebx, [eax]				  //  [FORWARD] Module 
		    	mov ecx, [eax+4]    		    	//  [BACKWARD] Module
		    	mov [ecx], ebx				  //  Previous Module's [FORWARD] Notation, Points to us, Replace it with, Module++
		    	mov [ebx+4], ecx			    //  Next Modules, [BACKWARD] Notation, Points to us, Replace it with, Module--
			jmp InMemoryOrderModuleList		//  Hidden, so Move onto Next Set
		SkipA:
			cmp edx, esi					    //  Reached End of Modules ?
			jne LoopInLoadOrderModuleList		//  If Not, Re Loop

InMemoryOrderModuleList:
		mov eax, dwPEB_LDR_DATA		  //  PEB->ProcessModuleInfo
		mov esi, [eax+14h]			   //  ProcessModuleInfo->InMemoryOrderModuleList[START]
		mov edx, [eax+18h]			   //  ProcessModuleInfo->InMemoryOrderModuleList[FINISH]

		LoopInMemoryOrderModuleList: 
			lodsd
			mov esi, eax
			mov ecx, [eax+10h]
			cmp ecx, hModule
			jne SkipB
				mov ebx, [eax] 
				mov ecx, [eax+4]
				mov [ecx], ebx
				mov [ebx+4], ecx
				jmp InInitializationOrderModuleList
		SkipB:
			cmp edx, esi
			jne LoopInMemoryOrderModuleList

InInitializationOrderModuleList:
		mov eax, dwPEB_LDR_DATA				    //  PEB->ProcessModuleInfo
		mov esi, [eax+1Ch]						 //  ProcessModuleInfo->InInitializationOrderModuleList[START]
		mov edx, [eax+20h]						 //  ProcessModuleInfo->InInitializationOrderModuleList[FINISH]

		LoopInInitializationOrderModuleList: 
			lodsd
			mov esi, eax		
			mov ecx, [eax+08h]
			cmp ecx, hModule		
			jne SkipC
				mov ebx, [eax] 
				mov ecx, [eax+4]
				mov [ecx], ebx
				mov [ebx+4], ecx
				jmp Finished
		SkipC:
			cmp edx, esi
			jne LoopInInitializationOrderModuleList

		Finished:
			popfd;
			popad;
	}
}
А вот так я написал на Delphi
Код:
unit hide;

interface
function Hiding():integer;

implementation



function Hiding():integer;
var
 	 dwPEB_LDR_DATA: integer;
begin

	asm

		pushad;
		pushfd;
		mov eax, fs:[30h]		   // PEB
		mov eax, [eax+0Ch]		  // PEB->ProcessModuleInfo
		mov dwPEB_LDR_DATA, eax	 // Save ProcessModuleInfo

InLoadOrderModuleList:
		mov esi, [eax+0Ch]					  // ProcessModuleInfo->InLoadOrderModuleList[FORWARD]
		mov edx, [eax+10h]					  //  ProcessModuleInfo->InLoadOrderModuleList[BACKWARD]

		LoopInLoadOrderModuleList:
		    lodsd							   //  Load First Module
			mov esi, eax		    			//  ESI points to Next Module
			mov ecx, [eax+18h]		    		//  LDR_MODULE->BaseAddress
			cmp ecx, hModule		    		//  Is it Our Module ?
			jne SkipA		    		    	//  If Not, Next Please (@f jumps to nearest Unamed Lable @@:)
		    	mov ebx, [eax]				  //  [FORWARD] Module 
		    	mov ecx, [eax+4]    		    	//  [BACKWARD] Module
		    	mov [ecx], ebx				  //  Previous Module's [FORWARD] Notation, Points to us, Replace it with, Module++
		    	mov [ebx+4], ecx			    //  Next Modules, [BACKWARD] Notation, Points to us, Replace it with, Module--
			jmp InMemoryOrderModuleList		//  Hidden, so Move onto Next Set
		SkipA:
			cmp edx, esi					    //  Reached End of Modules ?
			jne LoopInLoadOrderModuleList		//  If Not, Re Loop

InMemoryOrderModuleList:
		mov eax, dwPEB_LDR_DATA		  //  PEB->ProcessModuleInfo
		mov esi, [eax+14h]			   //  ProcessModuleInfo->InMemoryOrderModuleList[START]
		mov edx, [eax+18h]			   //  ProcessModuleInfo->InMemoryOrderModuleList[FINISH]

		LoopInMemoryOrderModuleList: 
			lodsd
			mov esi, eax
			mov ecx, [eax+10h]
			cmp ecx, hModule
			jne SkipB
				mov ebx, [eax] 
				mov ecx, [eax+4]
				mov [ecx], ebx
				mov [ebx+4], ecx
				jmp InInitializationOrderModuleList
		SkipB:
			cmp edx, esi
			jne LoopInMemoryOrderModuleList

InInitializationOrderModuleList:
		mov eax, dwPEB_LDR_DATA				    //  PEB->ProcessModuleInfo
		mov esi, [eax+1Ch]						 //  ProcessModuleInfo->InInitializationOrderModuleList[START]
		mov edx, [eax+20h]						 //  ProcessModuleInfo->InInitializationOrderModuleList[FINISH]

		LoopInInitializationOrderModuleList: 
			lodsd
			mov esi, eax		
			mov ecx, [eax+08h]
			cmp ecx, hModule		
			jne SkipC
				mov ebx, [eax] 
				mov ecx, [eax+4]
				mov [ecx], ebx
				mov [ebx+4], ecx
				jmp Finished
		SkipC:
			cmp edx, esi
			jne LoopInInitializationOrderModuleList

		Finished:
			popfd;
			popad;

end;
end;
end.
1.Я не знаю как и что определять в названии функции.
2.Возможно нужно подклоючать дополнительные модули.
3.Лог ошибок:
Код:
[Error] hide.pas(23): Undeclared identifier: 'InLoadOrderModuleList'
[Error] hide.pas(27): Undeclared identifier: 'LoopInLoadOrderModuleList'
[Error] hide.pas(32): Undeclared identifier: 'SkipA'
[Error] hide.pas(37): Undeclared identifier: 'InMemoryOrderModuleList'
[Error] hide.pas(38): Label expected
[Error] hide.pas(40): Invalid combination of opcode and operands
[Error] hide.pas(42): Label expected
[Error] hide.pas(47): Undeclared identifier: 'LoopInMemoryOrderModuleList'
[Error] hide.pas(52): Undeclared identifier: 'SkipB'
[Error] hide.pas(57): Undeclared identifier: 'InInitializationOrderModuleList'
[Error] hide.pas(58): Label expected
[Error] hide.pas(60): Invalid combination of opcode and operands
[Error] hide.pas(62): Label expected
[Error] hide.pas(67): Undeclared identifier: 'LoopInInitializationOrderModuleList'
[Error] hide.pas(72): Undeclared identifier: 'SkipC'
[Error] hide.pas(77): Undeclared identifier: 'Finished'
[Error] hide.pas(78): Label expected
[Error] hide.pas(80): Invalid combination of opcode and operands
[Error] hide.pas(82): Label expected
[Fatal Error] allochook.dpr(17): Could not compile used unit 'hide.pas'
Знающие люди, помогите.
  Ответить с цитированием
Старый 09.03.2013, 15:12   #2
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Скрытие

Тебе нужно переписать еще несколько библиотек (модулей), в которых содержатся переменные/константы/метки указанные в логе ошибок.

Или же объявить метки. Не особо вчитывался в код.



Добавлено.
Вчитался, потратил 20 секунд, объяви метки.
procedure name
var
label
//тут метки
begin
end;

Последний раз редактировалось Dinmaite; 09.03.2013 в 15:14.
  Ответить с цитированием
Пользователь сказал cпасибо:
Dimedrol1536 (10.03.2013)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] скрытие длл. a_kolyan Общение разработчиков 11 02.01.2013 22:22
скрытие BLACK_DEAD Общение разработчиков 5 05.04.2012 00:11
[Информация] скрытие CrismO Общение разработчиков 16 22.02.2012 17:11

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 17:27.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net