ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

13.06.2009, 18:52
|
|
Новичок
Регистрация: 17.02.2009
Сообщений: 13
Провел на форуме: 72422
Репутация:
8
|
|
Как определить размер массива в который я буду складывать куски,вот в чем вопрос.
Пока у меня одна идея,считать кол-во элементов файла.Может быть у вас есть другие идеи?
|
|
|

13.06.2009, 19:01
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Ну есть же прекрасный vector, чем он тебе не подходит? считал данные из файла загнал в вектор, потом обрабатываешь, зачем еще над чем то заморачиватся )
|
|
|

13.06.2009, 19:03
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
PHP код:
int SizeOfFile(FILE * file)
{
int size;
fseek(file,0,SEEK_END);
size = ftell(file);
rewind(file);
return size;
}
|
|
|

13.06.2009, 19:16
|
|
Новичок
Регистрация: 17.02.2009
Сообщений: 13
Провел на форуме: 72422
Репутация:
8
|
|
Chaak,мою идею реализовал?
|
|
|

13.06.2009, 19:22
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Это извращение, зачем упрямо обходить преимущества языка. Смотри в сторону векторов.
|
|
|

13.06.2009, 19:44
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Сообщение от h01der
Ну вообще,все немного сложнее.Файл делится на несколько кусков,программа берет кусок из файла,записывает его в массив,потом я должен считать этот массив,в итоге я должен собрать все эти массивы в один.
у тебя что, отделены эти функции, и к первой ты не имеешь отношения? Т.е. ктото за тебя считывает кусок и грузит, а ты должен загруженный переформировать в массив? Если да, то задача уебищна по определению. Если нет - то перепиши все более логично, чтобы считывание делалось в массив или вектор, как уже отмечали. Работа с массивом, заданным чистым указателем все таки минное поле, которого лучше избегать.
|
|
|

13.06.2009, 19:59
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме: 298300
Репутация:
128
|
|
Сообщение от h01der
Программа считывает матрицу из файла и записывает все данные в динамический массив.У кого нибудь есть ли идеи как получить эти данные(матрицу считанную из файла) из оперативной памяти?
Если ты это пишешь на С, то ты можеш обойтись стандартным размером буффера(заранее заданным),а, если твои данные в него не влезут, то сделать realloc твоего буффера и будет тебе счастье... Не понимаю, зачем создавать дл ятаких вопросов отдельные темы?
|
|
|

13.06.2009, 20:13
|
|
Новичок
Регистрация: 17.02.2009
Сообщений: 13
Провел на форуме: 72422
Репутация:
8
|
|
Обрати внимание на название темы и не ленись читать полностью тему,раз решил отписаться
|
|
|

14.06.2009, 14:39
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
2 Irdis
Чтение из памяти процесса.
Код:
#pragma comment(linker,"/MERGE:.rdata=.data")
#pragma comment( linker, "/MERGE:.text=.data" )
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWR /IGNORE:4078")
#pragma comment(linker,"/ENTRY:New_WinMain")
#pragma comment(linker,"/NODEFAULTLIB") // раскоменть в релизе
#pragma comment(linker, "/SUBSYSTEM:WINDOWS" )
#pragma comment(linker, "/INCREMENTAL:NO" ) // раскоменть в релизе
#pragma optimize( "gsy", on )
#pragma comment(linker, "/opt:nowin98")
#include <windows.h>
#include <Tlhelp32.h>
//#include <stdio.h>
char szExE[]="magent.exe";
DWORD thPID=-1;
//DWORD BaseSize=0;
//DWORD BaseAddr;
// пишем функцию ищущую процесс по его имени
DWORD GetPIDbyNameExe(char *lpExe)
{
HANDLE hSH;
PROCESSENTRY32 pe32;
hSH=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
// закоменть потом после отладки
if(hSH==INVALID_HANDLE_VALUE)
{
MessageBox(0, "CreateToolhelp32Snapshot", NULL, MB_OK|MB_SETFOREGROUND);
return -1;
}
pe32.dwSize=sizeof(PROCESSENTRY32);
if( !Process32First( hSH, &pe32 ) )
{
MessageBox(0, "Process32First", NULL, MB_OK|MB_SETFOREGROUND);
goto closesh;
}
do{
if(!strcmp(pe32.szExeFile,lpExe))
{
CloseHandle(hSH);
return pe32.th32ProcessID;
}
}while(Process32Next(hSH,&pe32));
closesh:
CloseHandle(hSH);
return -1;
}
/* получает базовый адрес памяти экзешника и размер в памяти
BOOL SetImageBase( DWORD dwPID )
{
HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
MODULEENTRY32 me32;
hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
if( hModuleSnap == INVALID_HANDLE_VALUE ) { return( FALSE ); }
me32.dwSize = sizeof( MODULEENTRY32 );
if( !Module32First( hModuleSnap, &me32 ) )
{
CloseHandle( hModuleSnap );
return( FALSE );
}
BaseAddr=(DWORD)me32.modBaseAddr;
BaseSize=me32.modBaseSize;
CloseHandle( hModuleSnap );
return( TRUE );
}
*/
void New_WinMain(void)
{
unsigned char *mem;
DWORD st_addr=0x011B2000;
HANDLE hProcess;
HFILE f;
if((thPID=GetPIDbyNameExe((char *)&szExE))==-1){ExitProcess(1); }
hProcess=OpenProcess(PROCESS_VM_READ,FALSE,thPID);
mem=(unsigned char *)LocalAlloc(LPTR,4096);
ReadProcessMemory(hProcess,(LPCVOID)st_addr,mem,4096,NULL);
f=_lcreat("d.txt", 0);
_lwrite(f,(LPCCH)mem,4096);
_lclose(f);
LocalFree(mem);
CloseHandle(hProcess);
ExitProcess(0);
}
|
|
|

18.06.2009, 09:27
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Говнокод детектед!
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|