1 (изменено: Botsy, 2020-11-08 01:46:02)

Тема: AHK: Получение SID, переименование всех имен связанных с ahk

- Можно ли изменить как-то номер SID через реестр, чтобы код не работал ? (ну если бы там была проверка на первоначальный SID).
- Еще можно получить этот SID через cmd/powershell -> whoami /user . Если окажется, что можно изменять SID через реестр, то можно ли в коде получать этот SID через cmd ?


#NoEnv 

F10::

regSID := rgtSID() 
msgbox, %regSID%

rgtSID()
{
	loop,HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList,1,1
	{
		if(a_loopRegName="ProfileImagePath")
		{
        regRead,rProf
        if(inStr(rProf,a_userName))
		stringReplace,SID,a_loopRegSubKey,SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\,,
		}
	}
	return % SID
}

return

Подумал не создавать две темы, а написать в одну. Всё таки это относиться к недавнему обсуждению про сохранение информации.
- Как можно переименовать все, что связано с AHK ? Например имя процесса, иконку и остальное, чем можно связать программу с AHK.

Вроде логично это переименовать, чтобы затормозить определение, на чем именно была написана программа. Когда запускаешь другое ПО, там же не написаны инициалы языка или софта, благодаря которому, она была сделана.
Нашел на этом форуме одну тему http://forum.script-coding.com/viewtopic.php?id=7472, но это немного не то, прятать же ничего не надо.

Если уже есть где-то эта информация, буду благодарен за ссылку или наводку.

GD

2

Re: AHK: Получение SID, переименование всех имен связанных с ahk

Проблема решена:


F11::

strComputer := "."
strNamespace := "\root\cimv2"
strClass := "Win32_Process"
strHandle := DllCall("GetCurrentProcessId")    

objSWbemServices := ComObjGet("winmgmts:\\"  strComputer  strNamespace)
objService := objSWbemServices.Get("Win32_Process.Handle='" strHandle "'")
Sid := ComVar()
Result := objService.GetOwnerSid(Sid.ref)
if !Result
  MsgBox, % sid[]

ComVar(Type=0xC)
{
    static base := { __Get: "ComVarGet", __Set: "ComVarSet", __Delete: "ComVarDel" }
    ; Create an array of 1 VARIANT.  This method allows built-in code to take
    ; care of all conversions between VARIANT and AutoHotkey internal types.
    arr := ComObjArray(Type, 1)
    ; Lock the array and retrieve a pointer to the VARIANT.
    DllCall("oleaut32\SafeArrayAccessData", "ptr", ComObjValue(arr), "ptr*", arr_data)
    ; Store the array and an object which can be used to pass the VARIANT ByRef.
    return { ref: ComObjParameter(0x4000|Type, arr_data), _: arr, base: base }
}
ComVarGet(cv, p*) { ; Called when script accesses an unknown field.
    if p.MaxIndex() = "" ; No name/parameters, i.e. cv[]
        return cv._[0]
}
ComVarSet(cv, v, p*) { ; Called when script sets an unknown field.
    if p.MaxIndex() = "" ; No name/parameters, i.e. cv[]:=v
        return cv._[0] := v
}
ComVarDel(cv) { ; Called when the object is being freed.
    ; This must be done to allow the internal array to be freed.
    DllCall("oleaut32\SafeArrayUnaccessData", "ptr", ComObjValue(cv._))
}

return

F12::exitApp
GD

3

Re: AHK: Получение SID, переименование всех имен связанных с ahk

Т.е. ты как-то должен себе сначала сид клиента запросить? Чтобы он тебе его сам дал? Или ты через сайт будешь передавать?

4

Re: AHK: Получение SID, переименование всех имен связанных с ahk

AlexPidor Можно получать SID и заносить его в базу на сайте, а потом ограничивать использование на копию скрипта. Ну это в теории, сейчас есть пару способов получения SID, а вот дальше пока не знаю как реализовать.

GD

5

Re: AHK: Получение SID, переименование всех имен связанных с ahk

В таком случае должно быть официальное согласие что ты со своим ПО собираешь некую информацию у клиента, в противном случае это ничем не лучше обычного воровства. А в таком случае согласятся ли они его приобретать, если оно не будет столь уж уникальным, чтобы другие не смогли его повторить.