Вверх ↑
Этот топик читают: Гость
Ответов: 192
Рейтинг: 2
#1: 2024-08-13 07:59:53 ЛС | профиль | цитата
Привет народ, скажу честно еще ничего не делал пока только узнаю.
У меня есть программа к которой хочу дать удалённый доступ неограниченному кругу пользователей, НО!
Она имеет ключ защиты и соответственно серийный номер и всякие там идентификации.
Ну и конечно же ограничения в лицензии с запретом на использование в удалённом режиме и черевато блокировкой.
Какими средствами hiasm можно было бы отслеживать и скрывать вот эти конкретные данные в этой программе.
Можно ли открыть окно в окне?, можно ли запрещать выполнение окна о программе? Можно ли запрещать изменения размеров окна ну и соответственно замыливание сокрытие данных в главном окне сторонней программы. Ну это пока набросок мыслей.
Или всё-таки это от лукавого и не стоит этим заниматься?

Редактировалось 1 раз(а), последний 2024-08-13 08:00:55
карма: 0

0
Ответов: 759
Рейтинг: 165
#2: 2024-08-20 06:27:42 ЛС | профиль | цитата
Возникло несколько вопросов
zhorik5 писал(а):
У меня есть программа

На чём написана программа?
zhorik5 писал(а):
к которой хочу дать удалённый доступ неограниченному кругу пользователей

Как будет организован удалённый доступ? (rdp, anydesk, teamviewer, vnc или что-то другое)
zhorik5 писал(а):
Можно ли открыть окно в окне?

Можно
zhorik5 писал(а):
можно ли запрещать выполнение окна о программе?

Трудно, но можно.
zhorik5 писал(а):
Можно ли запрещать изменения размеров окна ну и соответственно замыливание сокрытие данных в главном окне сторонней программы.

Можно.

Сразу оговорюсь. "Плохому" учить не буду.

Add(MainForm,2953706,56,119)
{
Point(Width)
Point(Height)
Point(Handle)
link(onCreate,4710989:doExec,[])
}
Add(WinTools,10766705,168,49)
{
}
Add(WinExec,4710989,112,133)
{
FileName="notepad"
link(onExec,5919204:doDeferredEvent,[])
}
Add(DeferredEvent,5919204,168,133)
{
Delay=200
InData=0
Data=Integer(0)
link(onDeferredEvent,14050507:doEvent1,[])
}
Add(FindWindow,103464,273,133)
{
ClassName="Notepad"
SkipParam=1
link(onFind,2003020:doEvent1,[])
}
Add(FindWindow,3846865,112,70)
{
ClassName="#32770"
Caption="Блокнот: сведения"
Point(ChildHandle)
link(onFind,10766705:doClose,[])
}
Add(Timer,12041410,56,70)
{
Interval=33
link(onTimer,3846865:doFind,[])
}
Add(PosWindow,15576889,273,196)
{
link(Handle,11570385:Var2,[])
}
Add(SetParent,1432327,385,133)
{
link(NewParent,3315338:Handle,[])
}
Add(SizeWindow,2894384,315,231)
{
link(Handle,11570385:Var3,[(321,173)])
link(Width,3315338:Width,[(328,96)(384,96)])
link(Height,3315338:Height,[(335,103)(391,103)])
}
Add(Hub,14050507,217,133)
{
OutCount=5
link(onEvent1,103464:doFind,[])
link(onEvent2,15576889:doLeft,[(263,146)(263,202)])
link(onEvent3,15576889:doTop,[(256,153)(256,209)])
link(onEvent4,2894384:doWidth,[(249,160)(249,237)])
link(onEvent5,2894384:doHeight,[(242,167)(242,244)])
}
Add(GetDataEx,11570385,273,168)
{
link(Data,103464:Handle,[])
}
Add(WinBorders,9248978,385,182)
{
BorderStyle=0
}
Add(Hub,2003020,343,133)
{
OutCount=3
link(onEvent1,1432327:doSetParent,[])
link(onEvent2,9248978:doSetBorderStyle,[(375,146)(375,188)])
link(onEvent3,9248978:doSetWinStyle,[(368,153)(368,195)])
}
Add(Label,3315338,371,56)
{
Left=325
Top=40
Align=5
Caption=""
AutoSize=1
Point(Width)
Point(Height)
Point(Handle)
}
Add(Label,4467744,266,56)
{
Left=95
Width=100
Height=20
Caption=""
AutoSize=1
}

Для русской версии Windows

Редактировалось 2 раз(а), последний 2024-08-21 07:01:38
карма: 15

1
Голосовали:zhorik5
Ответов: 192
Рейтинг: 2
#3: 2024-08-23 13:46:03 ЛС | профиль | цитата
Сразу оговорюсь. "Плохому" учить не буду.

Ну вот так всегда,на самом интересном месте!

Gunta писал(а):
На чём написана программа?

Да черт его знает на чем она написана, вероятно RAD Studio либо какой нибудь не сильно старый делфи.

Gunta писал(а):
Как будет организован удалённый доступ? (rdp, anydesk, teamviewer, vnc или что-то другое)

планировал rdp, так как можно сразу грузить рабочую оболочку(среду,программу,окно) при подключении.

пример отличный
схема


Add(MainForm,12345724,203,224)
{
Width=1103
Height=712
Point(Width)
Point(Height)
Point(Handle)
Point(onClose)
link(onCreate,4710989:doExec,[])
link(onClose,16747618:doEvent1,[(254,251)(254,370)])
}
Add(WinExec,4710989,301,238)
{
FileName="C:\Program Files (x86)\HxD\HxD.exe"
Mode=6
link(onExec,5919204:doDeferredEvent,[])
}
Add(DeferredEvent,5919204,357,238)
{
Delay=200
InData=0
Data=Integer(0)
link(onDeferredEvent,14050507:doEvent1,[])
}
Add(FindWindow,103464,462,238)
{
ClassName="TFormMain.UnicodeClass"
SkipParam=1
link(onFind,2003020:doEvent1,[])
}
Add(PosWindow,15576889,462,301)
{
link(Handle,11570385:Var2,[])
}
Add(SetParent,1432327,574,238)
{
link(NewParent,3315338:Handle,[])
}
Add(SizeWindow,2894384,504,336)
{
link(Handle,11570385:Var3,[(510,278)])
link(Width,3315338:Width,[(517,201)(573,201)])
link(Height,3315338:Height,[(524,208)(580,208)])
}
Add(Hub,14050507,406,238)
{
OutCount=5
link(onEvent1,103464:doFind,[])
link(onEvent2,15576889:doLeft,[(452,251)(452,307)])
link(onEvent3,15576889:doTop,[(445,258)(445,314)])
link(onEvent4,2894384:doWidth,[(438,265)(438,342)])
link(onEvent5,2894384:doHeight,[(431,272)(431,349)])
}
Add(GetDataEx,11570385,462,273)
{
link(Data,103464:Handle,[])
}
Add(WinBorders,9248978,574,287)
{
BorderStyle=0
}
Add(Hub,2003020,532,238)
{
OutCount=3
link(onEvent1,1432327:doSetParent,[])
link(onEvent2,9248978:doSetBorderStyle,[(564,251)(564,293)])
link(onEvent3,9248978:doSetWinStyle,[(557,258)(557,300)])
}
Add(Label,3315338,560,161)
{
Width=1087
Height=674
Align=5
Caption=""
AutoSize=1
Point(Width)
Point(Height)
Point(Handle)
}
Add(Label,4467744,455,161)
{
Left=95
Width=100
Height=20
Caption=""
AutoSize=1
}
Add(WinExec,2256668,301,350)
{
FileName="Taskkill"
Param="/IM hxd.exe /F"
Point(doConsoleExec)
Point(doConsoleInput)
Point(onErrorExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleError,5275440:doCharset,[])
}
Add(Hub,16747618,273,364)
{
link(onEvent1,2256668:doConsoleExec,[])
}
Add(Message,9596092,399,378)
{
}
Add(Charset,5275440,357,378)
{
link(onCharset,9596092:doMessage,[])
}


А то я справку в хиасме по компонентам окон тыкал тыкал нихрена не понял как это работает.

Спустя какое то время экспериментов потихоньку начал догонять. Вот что значит "пинок животворящий" в правильном направлении!

Теперь самое интересное как запретить выполнение окна "О ПРОГРАММЕ"
У меня родился такой вариант

Add(MainForm,12345724,203,224)
{
Width=1103
Height=712
Point(Width)
Point(Height)
Point(Handle)
Point(onClose)
link(onCreate,4710989:doExec,[])
link(onClose,16747618:doEvent1,[(254,251)(254,370)])
}
Add(WinExec,4710989,301,238)
{
FileName="C:\Program Files (x86)\HxD\HxD.exe"
Mode=6
link(onExec,5919204:doDeferredEvent,[])
}
Add(DeferredEvent,5919204,357,238)
{
Delay=200
InData=0
Data=Integer(0)
link(onDeferredEvent,14050507:doEvent1,[])
}
Add(FindWindow,103464,462,238)
{
ClassName="TFormMain.UnicodeClass"
SkipParam=1
link(onFind,2003020:doEvent1,[])
}
Add(PosWindow,15576889,462,301)
{
link(Handle,11570385:Var2,[])
}
Add(SetParent,1432327,574,238)
{
link(NewParent,3315338:Handle,[])
}
Add(SizeWindow,2894384,504,336)
{
link(Handle,11570385:Var3,[(510,278)])
link(Width,3315338:Width,[(517,201)(573,201)])
link(Height,3315338:Height,[(524,208)(580,208)])
}
Add(Hub,14050507,406,238)
{
OutCount=6
link(onEvent1,103464:doFind,[])
link(onEvent2,15576889:doLeft,[(452,251)(452,307)])
link(onEvent3,15576889:doTop,[(445,258)(445,314)])
link(onEvent4,2894384:doWidth,[(438,265)(438,342)])
link(onEvent5,2894384:doHeight,[(431,272)(431,349)])
}
Add(GetDataEx,11570385,462,273)
{
link(Data,103464:Handle,[])
}
Add(WinBorders,9248978,574,287)
{
BorderStyle=0
}
Add(Hub,2003020,532,238)
{
OutCount=3
link(onEvent1,1432327:doSetParent,[])
link(onEvent2,9248978:doSetBorderStyle,[(564,251)(564,293)])
link(onEvent3,9248978:doSetWinStyle,[(557,258)(557,300)])
}
Add(Label,3315338,560,161)
{
Width=1087
Height=674
Align=5
Caption=""
AutoSize=1
Point(Width)
Point(Height)
Point(Handle)
}
Add(Label,4467744,455,161)
{
Left=95
Width=100
Height=20
Caption=""
AutoSize=1
}
Add(WinExec,2256668,301,350)
{
FileName="Taskkill"
Param="/IM hxd.exe /F"
Point(doConsoleExec)
Point(doConsoleInput)
Point(onErrorExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleError,5275440:doCharset,[])
}
Add(Hub,16747618,273,364)
{
link(onEvent1,2256668:doConsoleExec,[])
}
Add(Message,9596092,399,378)
{
}
Add(Charset,5275440,357,378)
{
link(onCharset,9596092:doMessage,[])
}
Add(FindWindow,4301125,553,406)
{
ClassName="TXmInfoForm.UnicodeClass"
SkipParam=1
link(onFind,8345231:doClose,[])
}
Add(WinTools,8345231,609,385)
{
}
Add(Timer,7888541,497,406)
{
Interval=1
link(onTimer,4301125:doFind,[])
}



Данный пример к сожалению будет работать только с программой hxd
просто с блокнотом сильно банально а тут сразу куча подводных камней вылезло.
Например приложение не закрывалось после закрытия основной формы. И повторный запуск приложения был невозможен. Возникала ошибка неверный дескриптор окна. Поэтому пришлось организовать схему убийства процесса после закрытия окна.

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

Add(MainForm,2953706,21,105)
{
Width=1028
Height=544
link(onCreate,2329171:doEnum,[])
}
Add(WinEnum,2329171,112,119)
{
Point(doEnumChildWindows)
Point(onEnumChildWindows)
Point(ParentHandle)
Point(ClassName)
Point(GetActiveWindow)
link(onFindWindow,9698407:doEvent1,[(163,125)(163,132)])
}
Add(FormatStr,7744462,119,196)
{
DataCount=4
Mask="%1 HANDEL %2 CLASSNAME %3 GETACTIVE %4"
link(onFString,14928013:doAdd,[(181,202)(181,209)])
link(Str1,9121130:GetData,[(125,188)(237,188)])
link(Str2,2329171:Handle,[(132,174)(118,174)])
link(Str3,2329171:ClassName,[(139,174)(125,174)])
link(Str4,2329171:GetActiveWindow,[(146,174)(132,174)])
}
Add(Hub,9698407,182,126)
{
link(onEvent1,9121130:doData,[(214,132)(214,153)])
link(onEvent2,7744462:doString,[(208,139)(208,171)(107,171)(107,202)])
}
Add(EventFromData,9121130,231,147)
{
}
Add(Memo,14928013,210,203)
{
Top=10
Width=990
Height=480
}


Редактировалось 5 раз(а), последний 2024-08-23 22:23:09
карма: 0

0
Ответов: 759
Рейтинг: 165
#4: 2024-08-24 05:18:32 ЛС | профиль | цитата
zhorik5 писал(а):
просто с блокнотом сильно банально

Блокнот использую в примерах, потому что он есть практически у всех в отличии от программы – hxd.exe
zhorik5 писал(а):
Теперь самое интересное как запретить выполнение окна "О ПРОГРАММЕ"

Самый простой способ – это периодически проверять появление этого окна и тут же его закрывать. Сложнее скрыть в главном меню пункт вызова "О ПРОГРАММЕ".
Совет – никогда не применяй компонент EventFromData
Если твоя программа не секретная дай ссылку(можно в личку) я скачаю и посмотрю что можно сделать.

Редактировалось 1 раз(а), последний 2024-08-24 05:27:15
карма: 15

0
Ответов: 192
Рейтинг: 2
#5: 2024-08-24 21:29:09 ЛС | профиль | цитата
Gunta писал(а):
Если твоя программа не секретная дай ссылку(можно в личку) я скачаю и посмотрю что можно сделать.

в примере участвует вот эта https://cloud.mail.ru/public/t1o3/WJJrATg6P
А это ссылка на оф сайт
https://mh-nexus.de/en/hxd/

Gunta писал(а):
Самый простой способ – это периодически проверять появление этого окна и тут же его закрывать. Сложнее скрыть в главном меню пункт вызова "О ПРОГРАММЕ".

я так и сделал в схема выше есть пример. но есть недостаток данного решения. время от времени окно появляется на очень короткий миг и закрывается что собственно не есть хорошо если записать покадровую запись экрана то легко можно увидеть содержимое данного окна.
Короче работает но не достаточно хорошо.

Gunta писал(а):
Совет – никогда не применяй компонент EventFromData

С чем связано?

Редактировалось 1 раз(а), последний 2024-08-24 21:31:17
карма: 0

0
Ответов: 759
Рейтинг: 165
#6: 2024-08-25 07:49:54 ЛС | профиль | цитата
zhorik5 писал(а):
я так и сделал в схема выше есть пример. но есть недостаток данного решения. время от времени окно появляется на очень короткий миг и закрывается что собственно не есть хорошо если записать покадровую запись экрана то легко можно увидеть содержимое данного окна.
Короче работает но не достаточно хорошо.

Полностью удалил пункт "Справка" и всё что с ним связано.
https://disk.yandex.ru/d/PbqmK0SGvIsrcQ
Разархивируй всё в одну папку и оттуда запусти схему.


zhorik5 писал(а):
Совет – никогда не применяй компонент EventFromData

С чем связано?

Ты его используешь неправильно, даже название компонента говорит об этом.
Вместо него используй Memory

Редактировалось 1 раз(а), последний 2024-08-25 08:00:48
карма: 15

0
Ответов: 192
Рейтинг: 2
#7: 2024-08-25 17:32:04 ЛС | профиль | цитата
Gunta писал(а):
Полностью удалил пункт "Справка" и всё что с ним связано.

я не знаю как тебе это удалось но мне нужно знать!!!! это волшебство!))) потому что hxd это пример для понимания, а там где я хочу это применять без электроного usb ключа senselock не запустится.
блин, даже если я тебе в личку скажу название программы ты ее не запустишь. да как так то((( дистрибутив то ты скачаешь, установишь. Но на этом в общем то и всё!(((( если захочешь я чуть позже смогу показать как это работает если у меня хоть что-то получится, но у меня еще пока не готово. Пока с виртуалкой вожусь.
карма: 0

0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)