1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46

Ресурсы

11.11.2011, 16:36. Показов 5489. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно в ресурсах находится зашифрованный бинарник (exe который будет сверять ключ указанный в key.ini с тем что получается в результате энкодинга HWID жесткого ('C:\') и все верно то он качает все необходимые либы для работы)
Я помещаю файл в String
Delphi
1
2
3
4
5
  hBinary:=FindResource(0,'BIN','BINARY');
  hLoad:=LoadResource(HINSTANCE,hBinary);
  hLock:=LockResource(hLoad);
  hLength:=SizeOfResource(HINSTANCE,hBinary);
  SetString(sBuff,PChar(hLock),hLength);
Далее sBuff расшифровывается.
А дальше начинается самое интересное, я пишу этот sBuff в файл RESULT.exe но вот трабла, вес 1 в 1 в байтах все сходится, распакованный и оригинальный файл одинаковы, но вот запускаться он отказывается, точнее запускается консоль и закрывается! Пропал даже значок калькулятора (именно его я использую для проверки).

Может я записываю неправильно?
Delphi
1
2
3
  HF:=CreateFile('RESULT.exe',Generic_WRITE,0,nil ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
  WriteFile(HF,sBuff,Length(sBuff),wr,nil);
  FileClose(HF);
Сомневаюсь насчет правильности параметров WriteFile, параметр wr это Cardinal, он не имеет никакого значения, просто объявлен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2011, 16:36
Ответы с готовыми решениями:

WebBrowser ресурсы
Вот создал ресурс ResLib.RES. Как разместить его в WebBrowse? Пробовал вот так "WebBrowser1.Navigate('res:\\ResLib.RES', Flags, ...

Ресурсы по Дельфи
Дайте пожалуйста ресурсы по дельфи книжки и т.д. хочу уверенно говорить знаю дельфи ибо умею только интерфейс+переменный с математикой

Текстовый файл и ресурсы
Есть некий текстовый файл, я его загрузил в ресурсы Раньше файл загружал так if FileExists('Sudoku\table.txt') then begin ...

18
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
11.11.2011, 16:49
О_о а зачем добавлять бинарник в ресурсы, шифровать, что бы потом его расшифровать и положить рядом тёпленьким?
1
1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46
12.11.2011, 23:45  [ТС]
Цитата Сообщение от БогДелфей Посмотреть сообщение
О_о а зачем добавлять бинарник в ресурсы, шифровать, что бы потом его расшифровать и положить рядом тёпленьким?
Он дропается в TEMP (врядли полезут туда искать), и создает Mutex, чтобы нельзя было запустить повторно, после отработки основной софт его удаляет.
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
13.11.2011, 07:04
Цитата Сообщение от HeHyA4o Посмотреть сообщение
распакованный и оригинальный файл одинаковы
Точно? Как ты это проверял?

Добавлено через 3 минуты
Цитата Сообщение от HeHyA4o Посмотреть сообщение
Сомневаюсь насчет правильности параметров WriteFile, параметр wr это Cardinal, он не имеет никакого значения, просто объявлен.
По-моему в этот параметр возвращается кол-во записанного
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
13.11.2011, 07:20
HeHyA4o, Какая версия Delphi?
0
1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46
15.11.2011, 19:23  [ТС]
Цитата Сообщение от deathNC Посмотреть сообщение
Точно? Как ты это проверял?
Вес в байтах одинаковый у оригинального калькулятора и у того что получается в результате распаковки.

Цитата Сообщение от Vovan-VE Посмотреть сообщение
HeHyA4o, Какая версия Delphi?
Delphi 7

Ну или как запустить exe'шник из памяти не извлекая его? Идеи отсутствуют =_=
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
15.11.2011, 19:36
Цитата Сообщение от HeHyA4o Посмотреть сообщение
Вес в байтах одинаковый у оригинального калькулятора и у того что получается в результате распаковки.
Вы уверены, что вообще в ресурсы засунулся правильно?
1
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
15.11.2011, 20:35
Цитата Сообщение от HeHyA4o Посмотреть сообщение
Вес в байтах одинаковый у оригинального калькулятора и у того что получается в результате распаковки.
Ладно, уговорил - вес одинаковый. А содержимое?
Вот тебе два примера содержимого файла:
0123456789
9876543210
Вес в байтах одинаковый, однако содержимое-то не совсем
0
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
16.11.2011, 13:10
Вложения
Тип файла: zip calc.zip (53.5 Кб, 229 просмотров)
1
1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46
18.11.2011, 15:51  [ТС]
Цитата Сообщение от БогДелфей Посмотреть сообщение
Интересный сорец, в процедуру MemoryExecute нужно передать поинтер ресурса, а он у меня зашифрован, сначало его надо расшифровать, а потом передавать в MemoryExecute поинтер на расшифрованный файл, как мне это осуществить?..
0
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
18.11.2011, 16:30
а как зашыфровал то?
Delphi
1
2
3
GetModuleFileName(0, pch, MAX_PATH);
ResourcePointer := PChar(функция расшифровки(ResourcePointer));
MemoryExecute(ResourcePointer, @pch, '');
1
1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46
18.11.2011, 18:19  [ТС]
Цитата Сообщение от БогДелфей Посмотреть сообщение
а как зашыфровал то?
Delphi
1
2
3
GetModuleFileName(0, pch, MAX_PATH);
ResourcePointer := PChar(функция расшифровки(ResourcePointer));
MemoryExecute(ResourcePointer, @pch, '');
Спасибо! Экспеременальный шифр это ReverseString )

Добавлено через 26 минут
Что то не получается (

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure StartSoft;
var
  ResourcePointer: PChar;
  ResDataHandle, ResourceLocation: Cardinal;
  pch: array [0..MAX_PATH] of char;
begin
  ResourceLocation := FindResource(0, 'BIN', 'BINARY');
  ResDataHandle := LoadResource(0, ResourceLocation);
  ResourcePointer := LockResource(ResDataHandle);
  ResourcePointer := PChar(Reverse(ResourcePointer)); // функция Reverse ниже
  GetModuleFileName(0, pch, MAX_PATH);
  MemoryExecute(ResourcePointer, @pch, '');
  FreeResource(ResDataHandle);
end;
 
function Reverse(s:PAnsiChar):String;
var
  i :Integer;
begin
  for i:=Length(s) downto 1 do
  begin
    Result:=Result+s[i];
  end;
end;
Но код не отрабатывает... Если убрать функцию Reverse и в ресурсы залить нормальный (не перевернутый файл) то отработает нормально.
0
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
18.11.2011, 19:39
мда... действительно какае то херня получается
1
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
18.11.2011, 20:12
В d7 это конечно глупо, но, попробуй так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function Reverse(s:PAnsiChar): PAnsiChar;
var
  i :Integer;
  str, str2: String;
begin
  str := StrPas(s);
  str2 := '';
  for i:=Length(str) downto 1 do
  begin
    str2 := str2 + str[i];
  end;
  Result := PAnsiChar(str2);
end;
1
1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46
21.11.2011, 23:28  [ТС]
Все также... Софт вылетает с ошибкой, на других версиях Delphi не вылетает? Может мне стоит перейти например на Delphi 2010?
0
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
21.11.2011, 23:38
попробуй как то так
Delphi
1
2
3
4
5
6
7
8
  GetWindowThreadProcessId(Application.Handle, @PID);
  Proc := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  Buf := AllocMem(115268);
  ReadProcessMemory(Proc, ResourcePointer, Buf, 115268, NumberRead);
  Buf := PChar(XORcrypt(Buf, '0123456789'));
  WriteProcessMemory(Proc, ResourcePointer, Buf, 115268, NumberWrite);
  ResourcePointer := @Buf;
  CloseHandle(Proc);
1
1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46
22.11.2011, 21:48  [ТС]
Цитата Сообщение от БогДелфей Посмотреть сообщение
попробуй как то так
Delphi
1
2
3
4
5
6
7
8
  GetWindowThreadProcessId(Application.Handle, @PID);
  Proc := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  Buf := AllocMem(115268);
  ReadProcessMemory(Proc, ResourcePointer, Buf, 115268, NumberRead);
  Buf := PChar(XORcrypt(Buf, '0123456789'));
  WriteProcessMemory(Proc, ResourcePointer, Buf, 115268, NumberWrite);
  ResourcePointer := @Buf;
  CloseHandle(Proc);
Софт консольный, Application.Handle там нет...
И скинь пожалуйста где объявление переменных, у меня получилось так:
Delphi
1
2
3
4
5
6
var
  PID:LongWord;
  Proc:THandle;
  Buf:Pointer;
  NumberRead:LongWord;
  NumberWrite:LongWord;
Но орет на
Delphi
1
WriteProcessMemory(Proc, ResourcePointer, Buf, 115268, NumberWrite);
С ошибкой:
[Error] CheckerAndInstaller.dpr(230): Types of actual and formal var parameters must be identical
0
 Аватар для БогДелфей
474 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,164
22.11.2011, 22:22
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
procedure TForm1.Button1Click(Sender: TObject);
var
  NumberWrite: integer;
  Proc, PID: dword;
  Buf, ResourcePointer: PChar;
  NumberRead, ResDataHandle, ResourceLocation: Cardinal;
  pch: array [0..MAX_PATH] of char;
begin
  ResourceLocation := FindResource(0, 'EXE', RT_RCDATA);
  ResDataHandle := LoadResource(0, ResourceLocation);
  ResourcePointer := LockResource(ResDataHandle);
 
  GetWindowThreadProcessId(Application.Handle, @PID);
  Proc := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  Buf := AllocMem(115268);
  ReadProcessMemory(Proc, ResourcePointer, Buf, 115268, NumberRead);
  Buf := PChar(XORcrypt(Buf, '0123456789'));
  WriteProcessMemory(Proc, ResourcePointer, Buf, 115268, NumberWrite);
  ResourcePointer := @Buf;
  CloseHandle(Proc);
 
  GetModuleFileName(0, pch, MAX_PATH);
  MemoryExecute(ResourcePointer, @pch, '');
  FreeResource(ResDataHandle);
end;
 
function TForm1.XORcrypt(Text, Key: string): string;
var
  i: integer;
  LongKey: string;
  b: char;
begin
  for i := 0 to (Length(Text) div Length(Key)) do
    LongKey := LongKey + Key;
      for i := 1 to Length(Text) do
        begin
          b := chr((ord(Text[i]) xor ord(LongKey[i])));
          Result := Result + b;
        end;
end;
0
1 / 1 / 1
Регистрация: 17.10.2011
Сообщений: 46
26.11.2011, 19:42  [ТС]
Может я файл энкриптю неправильно, почему то не запускается =\

Delphi
1
2
3
4
5
6
7
8
  FileStream:=TFileStream.Create('calc.exe',fmOpenRead);
  SetLength(SBuff,FileStream.Size);
  FileStream.Read(sBuff[1],FileStream.Size);
  FileStream.Free;
  sBuff:=Reverse(sBuff);
  FileResourceHandle:=BeginUpdateResource('Soft.exe',False);
  UpdateResource(FileResourceHandle,'binary','bin',0,PChar(sBuff),Length(sBuff));
  EndUpdateResource(FileResourceHandle,False);
Файл упорно не хочет запускаться, даже не знаю что не так...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2011, 19:42
Помогаю со студенческими работами здесь

Запись строки в ресурсы
Здравствуйте! Собственно, имеется программа, нужно при запуске этой программы записывать в ресурсы какую-либо строку, и сохранять её (даже...

Ресурсы Dll библиотек
Какие ресурсы может предоставлять Dll библиотека?

Анимация кнопки через ресурсы
Здравствуйте. Я хочу сделать так чтобы в image была анимация какая-нибудь. Анимацию сделал следующим образом: разобрал анимацию на файлы и...

Музыка в форме через ресурсы
Вопрос один: почему не воспроизводится по нажатию кнопки звук? uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Интерфейс программы и ресурсы DELPHI XE
Помнится мне лазил я в инете... И наткнулся на статью, где писалось о том, что в новой версии Делфы (там была XE 2) появилась возможность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

Новые блоги и статьи
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru