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

09.12.2009, 16:46
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме: 140714
Репутация:
29
|
|
В принципе можно и в текстовых файлах (хотя зависит от типа информации, картинку в текст не впихнешь  ), но по-моему, гораздо удобнее использовать базу данных.
А если хранишь текст в константах, то чтобы отредактировать какой либо текст, придется заново открыть исходник, внести изменения и откомпилировать программу. Долго и неудобно.
Последний раз редактировалось StealthMaster; 09.12.2009 в 16:48..
Причина: поставил смайлик)
|
|
|

09.12.2009, 16:48
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
возник вопрос как получить список всех модулей в системе (загруженных) через NtQuerySystemInformation немогу понять какую ей структуру надо
Код:
Procedure GetSystemInformation;
var
Temp: PSYSTEM_MODULE_INFORMATION;
modin:PSYSTEM_MODULE_INFORMATION;
ReturnLength: DWORD;
I: integer;
ou:integer;
begin
ou:=0;
try
ReturnLength := 0;
if NtQuerySystemInformation(SystemModuleInformation,nil, 0, ReturnLength) <> STATUS_INFO_LENGTH_MISMATCH then
Exit;
if ReturnLength > 0 then
begin
GetMem(modin, ReturnLength);
try
if NtQuerySystemInformation(SystemModuleInformation,modin, ReturnLength, ReturnLength) = 0 then
begin
Temp := modin;
repeat
Form2.ListBox1.Items.Add(Temp^.aSysM.ImageName);
Temp := Pointer(DWORD(Temp) + Temp^.aSysM.ModuleNameOffset);
if Temp^.aSysM.ModuleNameOffset=0 then
inc(ou);
until ou=2;
end;
finally
FreeMem(modin);
end;
end;
finally
end;
end;
SYSTEM_MODULE= ^_SYSTEM_MODULE;
_SYSTEM_MODULE= packed record
Reserved:array[0..1] of ULONG;
Base:ULONG;
Size:ULONG;
Flags:ULONG;
Index:ULONG;
Unknown:ULONG;
ModuleNameOffset:SHORT;
ImageName:Array[0..256] of Char;
end;
PSYSTEM_MODULE_INFORMATION = ^SYSTEM_MODULE_INFORMATION;
SYSTEM_MODULE_INFORMATION = packed record
uCount:ULONG;
aSysM:SYSTEM_MODULE;
end;
уже начался брутвфорс по перебору вариантов но это не дело...
|
|
|

09.12.2009, 16:51
|
|
Участник форума
Регистрация: 23.10.2009
Сообщений: 103
Провел на форуме: 289669
Репутация:
7
|
|
StealthMaster, сэнк, вот если хранить в тхт, можно как - то спрятать тхт чтобы программа была одним файлом? просто прогу хочу на школьный конкурс, и какбе прога которая берет все из тхт файлов....ну неочень проффесионально\опрятно чтоли....
|
|
|

09.12.2009, 18:04
|
|
Участник форума
Регистрация: 03.07.2009
Сообщений: 151
Провел на форуме: 638378
Репутация:
41
|
|
Сообщение от DiHWO
StealthMaster, сэнк, вот если хранить в тхт, можно как - то спрятать тхт чтобы программа была одним файлом? просто прогу хочу на школьный конкурс, и какбе прога которая берет все из тхт файлов....ну неочень проффесионально\опрятно чтоли....
Почему неопрятно? Очень даже опрятно. Используй обычные текстовые файлы с собственным расширением. Я бы сделал так - исполнимый файл и рядом папку с базой этих самых файлов. Так будет удобнее и для расширения, и для реализации.
Хотя самое красивое решение - это с базой данных, ИМХО.
|
|
|

09.12.2009, 18:12
|
|
Участник форума
Регистрация: 23.10.2009
Сообщений: 103
Провел на форуме: 289669
Репутация:
7
|
|
всем спасибо, буду делать с текстовыми файлами.
|
|
|

09.12.2009, 18:21
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
хм... исправил ошибку.... но заметил что ели делать через тул хелп модуль то выводит только модули своего процесса а не все что загруженный в системе.... с нт квери тож такая же трабла но оноа еще и драйвера.. но если выкинуть дрова то снова модули моего процесса так как получить модлуи DLL которые в данный момент загруженны в системе?
Код:
Procedure GetSystemInformation;
var
Temp: PSYSTEM_MODULE_INFORMATION;
modin:PSYSTEM_MODULE_INFORMATION;
ReturnLength: DWORD;
I: integer;
ou:integer;
begin
ou:=0;
try
ReturnLength := 0;
if NtQuerySystemInformation(SystemModuleInformation,nil, 0, ReturnLength) <> STATUS_INFO_LENGTH_MISMATCH then
Exit;
if ReturnLength > 0 then
begin
GetMem(modin, ReturnLength);
try
if NtQuerySystemInformation(SystemModuleInformation,modin, ReturnLength, ReturnLength) = 0 then
begin
Temp := modin;
for I := 0 to Temp^.uCount do
// if pos('.dll',String(Temp^.aSysM[i].ImageName))>0 then
Form2.ListBox1.Items.Add(ExtractFileName(Temp^.aSysM[i].ImageName));
end;
finally
FreeMem(modin);
end;
end;
finally
end;
end;
|
|
|

09.12.2009, 19:02
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
Pr0mo не мне список драйверов ненужен мне надо именно списко загруженных длл в системе =)
|
|
|

10.12.2009, 00:43
|
|
Новичок
Регистрация: 26.11.2009
Сообщений: 20
Провел на форуме: 88440
Репутация:
60
|
|
Сообщение от transserg
Pr0mo не мне список драйверов ненужен мне надо именно списко загруженных длл в системе =)
Извиняюсь, не заметил сначала. Тогда есть вариант обратиться к каждому объекту, вызывающющему dll через его PID и на основе этого построить список загруженных библиотек в системе:
Код:
procedure GetAllDLL(var DLLList:TStringList);
var
i:integer;
tList:TStringList;
ArrInfo:TLpModuleInfoArray;
begin
tList:=TStringList.Create;
ArrInfo:=GetAllProcessesInfo(false);
for i:=0 to Length(ArrInfo)-1 do
begin
GetLoadedDLLList(tList,ArrInfo[i].ModulePID,[moIncludeHandle]);
DLLList.AddStrings(tList);
end;
tList.Free;
end;
// пример использования:
procedure TForm1.Button1Click(Sender: TObject);
var
ntDLLList:TStringList;
begin
ntDLLList:=TStringList.Create;
GetAllDLL(ntDLLList);
ListBox1.Items:=ntDLLList;
ntDLLList.Free;
end;
Однако для компиляции тебе понадобиться отдельный модуль : ProcUtilz (скачать)
Последний раз редактировалось Pr0mo; 10.12.2009 в 00:45..
|
|
|

09.12.2009, 19:16
|
|
Участник форума
Регистрация: 14.12.2008
Сообщений: 140
Провел на форуме: 186812
Репутация:
14
|
|
всем привет, помогите решить тупую задачу...
вывести 2 натуральных числа дробь каких наближает число Пи(3.14) с найбольшей точностью на Pascal...
|
|
|

09.12.2009, 22:17
|
|
Новичок
Регистрация: 09.12.2009
Сообщений: 2
Провел на форуме: 1928
Репутация:
0
|
|
А как можно перевести эту прогу в графический режим с использованием СтрингГрида?
Код:
{$APPTYPE CONSOLE}
type
TMatrix =
record
size: integer;
data: array of array of integer;
end;
var
m: TMatrix;
function Minor(matrix: TMatrix; i,j: integer): TMatrix;
var
a,b,a1,b1: integer;
begin
a1 := -1;
b1 := -1;
result.size := matrix.size - 1;
setlength(result.data, result.size, result.size);
for a := 0 to result.size do
begin
if a=i then
continue
else
inc(a1);
for b := 0 to result.size do
begin
if b = j then
continue
else
if b - b1 > 1 then
inc(b1)
else
b1 := 0;
result.data[a1,b1] := matrix.data[a,b];
end;
end;
end;
function Determ(matrix: TMatrix): integer;
var
i: integer;
begin
result := 0;
if matrix.size = 2 then
result := (matrix.data[0,0]*matrix.data[1,1]) - (matrix.data[0,1]*matrix.data[1,0])
else
begin
for i := 0 to matrix.size - 1 do
if odd(i+1) then
result := result + matrix.data[i,0]*Determ(Minor(matrix,i,0))
else
result := result - matrix.data[i,0]*Determ(Minor(matrix,i,0));
end;
end;
begin
m.size := 3;
setlength(m.data,3,3);
m.data[0,0] := 2;
m.data[0,1] := 4;
m.data[0,2] := -1;
m.data[1,0] := -1;
m.data[1,1] := 3;
m.data[1,2] := 2;
m.data[2,0] := 3;
m.data[2,1] := 2;
m.data[2,2] := -2;
writeln(Determ(m));
readln;
end.
Просто у самого не получается никак 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|