Сейчас на форуме: (+4 невидимых)

 eXeL@B —› Программирование —› Формат для передачи данных между потоками
<< . 1 . 2 . 3 .
Посл.ответ Сообщение

Ранг: 28.5 (посетитель), 8thx
Активность: 0.070.15
Статус: Участник

Создано: 02 января 2020 21:54
· Личное сообщение · #1

Хочу реализовать передачу данных между потоками через CreateThread

Вопрос состоит в том, как именно обернуть параметры функции.

Пример функции

Code:
  1.  bool Encrypt(const char* x1, const size_t x2, const unsigned char* x3, const unsigned char* x4, unsigned char* x5, size_t& x5)


Посоветуете что-то?



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 07 января 2020 00:18
· Личное сообщение · #2

difexacaw
data-flow граф разрушить и раскидать ноды по разным потокам.



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 07 января 2020 00:30
· Личное сообщение · #3

galenkane пишет:
Защита в том, что данные будут в разных местах

Не бывает абстрактных данных, их все равно придется использовать и да, подобная "защита" безусловно может кому-то затруднить задачу их нахождения и считывания но на тех этапах которые в принципе никому не будут интересны, поэтому писать такое может и имеет смысл, но использовать, имхо нет...



Ранг: 28.5 (посетитель), 8thx
Активность: 0.070.15
Статус: Участник

Создано: 07 января 2020 00:56
· Личное сообщение · #4

VOLKOFF предложите, что лучше.




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 07 января 2020 01:27
· Личное сообщение · #5

difexacaw пишет:
Я всё равно не понял какая задача.

Честно, я не погружаюсь в то, что надо тс в конечном итоге. Я лишь даю советы, руководствуясь только тем, что ему надо конкретно сейчас )

rmn пишет:
data-flow граф разрушить и раскидать ноды по разным потокам

Защита ещё круче, если раскидать ноды по разным процессам Но сначала предстоит точно долгий путь нахождения способа, как правильно это сделать в разных потоках...

-----
IZ.RU




Ранг: 28.5 (посетитель), 8thx
Активность: 0.070.15
Статус: Участник

Создано: 07 января 2020 05:44
· Личное сообщение · #6

Разные процессы не нужны.



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 07 января 2020 11:45
· Личное сообщение · #7

galenkane пишет:
предложите, что лучше

Здесь никто в создании любого рода защит всерьез помогать не станет

| Сообщение посчитали полезным: Orlyonok

Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 07 января 2020 11:46
· Личное сообщение · #8

galenkane пишет:
предложите, что лучше.

Примени UPX.




Ранг: 324.3 (мудрец), 221thx
Активность: 0.480.37
Статус: Участник

Создано: 07 января 2020 15:36
· Личное сообщение · #9

VOLKOFF пишет:
Здесь никто в создании любого рода защит всерьез помогать не станет

Да, что странно - официально форум по ИССЛЕДОВАНИЮ защиты

-----
IZ.RU





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 07 января 2020 21:38
· Личное сообщение · #10

Ну как я и писал выше - тс занимался хернёй по "хранению на стеке" *уй пойми чего. Для этой задачи делается диспетчер, который управляет выполнением базовых блоков, т.к. в общем случае они не являются независимыми, а выполняются строго в определённом порядке. Потому делается объект (по паттерну синглтона Мейерса), доступный из любого потока. Вызывается его GetInstance, и выполняется базовый блок. Код базовых блоков должен быть предварительно преобразован, чтобы в контексте разных потоков диспетчер мог работать с локальными переменными. С глобальными он будет работать без модификаций. В общем, как-то так, ну а дальше - детали реализации.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 28.5 (посетитель), 8thx
Активность: 0.070.15
Статус: Участник

Создано: 08 января 2020 13:09
· Личное сообщение · #11

ARCHANGEL о каком преобразовании речь?




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 08 января 2020 13:22
· Личное сообщение · #12

galenkane
Если в вашем коде есть обращение к локальной переменной, то она лежит на стеке, и адресуется через esp/rsp - смещение. (или плюс отрицательное - как вам удобнее), но при переключении контекстов разные потоки будут иметь разное значение для этого самого esp/rsp. Вот это и нужно учитывать после нахождения кода базового блока. Т.е. нашли границы блока, дизассемблировали блок, преобразовали, стёрли оригинал.

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 января 2020 16:30
· Личное сообщение · #13

Как напишете готовый продукт, не забудьте выложить. А пока закрыто, с защитами сами разбирайтесь.

| Сообщение посчитали полезным: Orlyonok
<< . 1 . 2 . 3 .
 eXeL@B —› Программирование —› Формат для передачи данных между потоками
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати