  | 
	
		
	
	
		Нужна помощь. - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок | 
	 
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            29.11.2012, 00:21
            
            
         | 
        
             
            #1
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 14.01.2011  
                
                
                
                 Сообщений: 19
                   
 Популярность: 12  
                  
	 Сказал(а) спасибо: 2  
	
		
			
				Поблагодарили 14 раз(а) в 6 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Нужна помощь.
             
             
            
        
        
        
            
               
    Нужна информация и помощь в разборке кода, от и до, если возможно с пояснением ошибок. Прошу без лишнего флуда. 
Примерно половину кода понял, от Google'л, но остались белые пятна. 
Вот код, созданный по примерам из интернета и разных тем...
 
	Код: 
	unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
  PParams = ^TParams;
  TParams = packed record
    Packet: array [0..100] of byte;
    Param1,Param2,Param3: DWord;
    Param4: array [1..100] of widechar;
  end;
const
  PW_BASE_ADDRESS = $00A591E0;
  PW_GAMERUN_ADDR = $00A59ACC;
  PC_ADDR = $0063F890;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer;
  aParamsSize: DWord);
var
  hThread: THandle;
  lpNumberOfBytes: DWord;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID<>0 then
  begin
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);
    ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
    hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
    VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
  end
end;
Непонятна данная функция...
procedure SkillCall(aPParams:PParams); stdcall;
var CallAddress:pointer;
    P1:DWord;
begin
CallAddress:=Pointer(PC_ADDR);
P1:=aPParams^.Param1;
 asm
  pushad
  mov ecx, dword ptr [PW_BASE_ADDRESS]
  mov ecx, dword ptr [ecx+$1C]
  mov ecx, dword ptr [ecx+$20]
  push $FFFFFFFF
  push $00
  push $00
  mov edx, P1
  push edx
  call CallAddress
  popad
 end;
end;
Зачем это и нужно ли оно вообще если есть код ниже...
//procedure Skill(SkillID:DWord);
//begin
//  aParam.Param1:=SkillID;
//  InjectFunc(ProcessID,@SkillCall,@aParam,SizeOf(aParam));
//end;
В данном коде Delphi7 ругается на PID, прошу поясните что это, пишет неверный идентификатор...
procedure TForm1.Button1Click(Sender: TObject);
var
aParams: TParams;
PID, hProcess: DWord;
begin
GetWindowThreadProcessId(FindWindow('Perfect World Window',nil)PID);
hProcess:= OpenProcess(PROCESS_ALL_ACCESS, False, PID);
aParam.Param1:= Edit1.text; <== можно ли написать так вместо skillid.
InjectFunc(hproess,@SkillCall,@aparams,sizeof(aParam));
end;
end.
 Прошу помогите, пытаюсь разобраться да голова не варит =/ руки вроде не из зада ...
  
     
         
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
        
            
                 
                
                    
                        Последний раз редактировалось mistik1; 29.11.2012 в 00:23.
                    
                    
                        Причина: Исправление опечаток, добавление небольшого участка кода.
                    
                
             
        
        
      | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Ваши права в разделе
	 | 
 
	
		
		Вы не можете создавать новые темы 
		Вы не можете отвечать в темах 
		Вы не можете прикреплять вложения 
		Вы не можете редактировать свои сообщения 
		 
		
		
		
		
		HTML код Выкл. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
 
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 15:37. 
		 
	 
 
 | 
  |