1 (изменено: powercat, 2017-11-23 14:45:53)

Тема: AHK: создание окна со своим классом

https://i.imgur.com/z6Z2oks.png
Здравствуйте. Пытаюсь затереть все данные о том, что екзешник ахкшный, компилирую скрипты через ahk_h, чищу манифест через ресурс-хакер, но как быть с этим? (см. скрин)  Через процесс хакер, олю, даже залив файл на вирустотал можно увидеть, что остается класс autohotkey. Прошу помощи, чтобы произвести замену класса на свой/рандомный. Нашел скрипт на аутоите, но без понятия, как его переписать на ахк ( да и в винапи я нуб). Спасибо.

#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>

Global Const $IDC_ARROW = 32512

Global Const $toWNDCLASSEX = 'uint Size;uint Style;ptr hWndProc;int ClsExtra;int WndExtra;ptr hInstance;ptr hIcon;ptr hCursor;ptr hBackground;ptr MenuName;ptr ClassName;ptr hIconSm'
Global Const $sClass = 'Window_class'
Global Const $sName = 'Моя программа'

$tWndClassEx = DllStructCreate($toWNDCLASSEX)
$hWndProc = DllCallbackRegister('_MyWndProc', 'lresult', 'hwnd;uint;wparam;lparam')
$hInstance = _WinAPI_GetModuleHandle(0)
$hCursor = _WinAPI_LoadCursor(0, $IDC_ARROW)
$tIcon = DllStructCreate('ptr;ptr')
_WinAPI_ExtractIconEx('shell32.dll', 130, DllStructGetPtr($tIcon, 1), DllStructGetPtr($tIcon, 2), 1)
$hBrush = _WinAPI_CreateSolidBrush(_WinAPI_GetSysColor($COLOR_3DFACE))
$tClass = DllStructCreate('wchar[' & StringLen($sClass) + 1 & ']')
DllStructSetData($tClass, 1, $sClass)

DllStructSetData($tWndClassEx, 'Size', DllStructGetSize($tWndClassEx))
DllStructSetData($tWndClassEx, 'Style', 0)
DllStructSetData($tWndClassEx, 'hWndProc', DllCallbackGetPtr($hWndProc))
DllStructSetData($tWndClassEx, 'ClsExtra', 0)
DllStructSetData($tWndClassEx, 'WndExtra', 0)
DllStructSetData($tWndClassEx, 'hInstance', $hInstance)
DllStructSetData($tWndClassEx, 'hIcon', DllStructGetData($tIcon, 1))
DllStructSetData($tWndClassEx, 'hCursor', $hCursor)
DllStructSetData($tWndClassEx, 'hBackground', $hBrush)
DllStructSetData($tWndClassEx, 'MenuName', 0)
DllStructSetData($tWndClassEx, 'ClassName', DllStructGetPtr($tClass))
DllStructSetData($tWndClassEx, 'hIconSm', DllStructGetData($tIcon, 2))

DllCall('user32.dll', 'dword', 'RegisterClassExW', 'ptr', DllStructGetPtr($tWndClassEx))
$hWnd = DllCall('user32.dll', 'hwnd', 'CreateWindowExW', 'dword', 0, 'wstr', $sClass, 'str', $sName, 'dword', BitOR($WS_CAPTION, $WS_POPUPWINDOW, $WS_VISIBLE), 'int', 200, 'int', 200, 'int', 400, 'int', 400, 'hwnd', 0, 'hwnd', 0, 'hwnd', $hInstance, 'ptr', 0)
$hWnd = $hWnd[0]

$Exit = 0

While 1
    Sleep(100)
    If $Exit Then
        ExitLoop
    EndIf
WEnd

DllCall('user32.dll', 'dword', 'UnregisterClassW', 'wstr', $sClass, 'ptr', $hInstance)
DllCallbackFree($hWndProc)

_WinAPI_DestroyCursor($hCursor)
For $i = 1 To 2
    _WinAPI_DestroyIcon(DllStructGetData($tIcon, $i))
Next

Func _MyWndProc($hWnd, $iMsg, $wParam, $lParam)
    Switch $iMsg
        Case $WM_CLOSE
            $Exit = 1
    EndSwitch
    Return _WinAPI_DefWindowProc($hWnd, $iMsg, $wParam, $lParam)
EndFunc   ;==>_MyWndProc

2

Re: AHK: создание окна со своим классом

• Что за код вы здесь привели и зачем его переписывать?
• Зачем компилировать через ahk_h?
• Темы про смену класса с решениями мне уже попадались на глаза раньше на оф.форуме,
к тому же они элементарно находятся поиском, проверил сейчас. Искать не пробовали?

3

Re: AHK: создание окна со своим классом

Хук user32.dll на autoit3 насколько я понимаю, я думаю это то что нужно для выполнения моей задачи. Компилирую через ahk_h чтобы опять же скрыть, что езкешник ахкшный + для усложнения анализа приложения. Искать пробовал, но ничего найти не смог. Если вам не сложно, можете поделиться ссылками?

4 (изменено: stealzy, 2017-11-24 02:30:24)

Re: AHK: создание окна со своим классом

Какое отношение имеет хук user32.dll к изменению имени класса окна?
Я то конечно могу пользоваться google вместо вас, но зачем?
Если не знаете английский, есть translate.google.com, там же можно перевести свой вопрос. Первые же три ссылки ведут к ответам.

5

Re: AHK: создание окна со своим классом

Способ через замену в hex редакторе не работает, если вы о нем.

6

Re: AHK: создание окна со своим классом

powercat, а зачем вам это нужно?

7

Re: AHK: создание окна со своим классом

Либо компилируете свою собственную версию, либо заменяете в готовой.

powercat пишет:

Способ через замену ... не работает

Это работает у товарищей с оф.форума и у меня. Достаточно np++, нюанс связан с учетом разделения букв нулевым символом.

Malcev пишет:

а зачем

• полагаю powercat продает некий игровой чит/бот и пытается защитить код.
• некоторые античиты нервно реагируют на наличие окон с родными классами интерпретаторов ahk и autoit.

8

Re: AHK: создание окна со своим классом

Ну тогда, наверное, лучше самому скомпилировать.
Так как пишут:

#define WINDOW_CLASS_GUI _T("AutoHotkeyGUI") // There's a section in Script::Edit() that relies on these all starting with "AutoHotkey".

https://github.com/Lexikos/AutoHotkey_L … /defines.h

9

Re: AHK: создание окна со своим классом

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

10

Re: AHK: создание окна со своим классом

stealzy, прав, я хочу скрыть программу от нежелательного сканирования.И чтобы класс менялся с каждым запуском программы. Я нагуглил, что при запуске программы, можно перехватить и подменить название класса.
Вот ссылка на тему с форума аутоит, так как яп похожи, предполагаю, что с ахк можно провернуть тоже самое.
http://autoit-script.ru/index.php?topic=10216.0

11

Re: AHK: создание окна со своим классом

powercat пишет:

...
Вот ссылка на тему с форума аутоит, так как яп похожи, предполагаю, что с ахк можно провернуть тоже самое.
http://autoit-script.ru/index.php?topic=10216.0

Если дочитать тему до конца, то становится очевидно, что в этом начинании нет смысла.

За то эта и эта, смежная тема, подтверждают жизнеспособность предложенного пути от stealzy.