Что нового

Защита AutoIt программы

Статус
Закрыто для дальнейших ответов.

FlatX007

Tattoo!
Сообщения
197
Репутация
35
Re: Защита программы

Какой там AutoIt - сломали защиту GTA 4 (Rockstar Games - потратила кругленькую сумму на её разработку)
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Re: Защита программы

FlatX007 [?]
Какой там AutoIt - сломали защиту GTA 4 (Rockstar Games - потратила кругленькую сумму на её разработку)
Стоимость - это не фактор надежности
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Re: Защита программы

Не одна защита, при которой программа остаётся работоспособной у взломщика, не надёжна (если упаковать например WinRAR'ом с паролем, естественно ничего не получится, но и работать не будет).

Если кому-то будет надо, то любую защиту сломают. А если ни кому не надо, тогда зачем защита? Имхо пустая трата времени.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: Защита программы

IMHO условия, при котором защита не будет сломана на 137%!
1. Новый процессор, имеющий совершенно новые инструкции и новый алгоритм работы!
2. Новый язык программирования под новый процессор!
3. Всё это должно быть известно только одному человеку! Потому как если знают двое, то значить знают все!!!

Но это нонсенс!
1. Потому как в одиночку выполнить эти условия очень трудно, если вообще возможно!
2. Даже если представить что нашёлся такой гений, то рано или поздно он захочет окупить свои затраты, и поделится своим детищем с обществом (за деньги естественно ;D)! А это значить, что найдётся хороший ученик, который сможет распотрошить все созданное спец. ПО. ;)

На данный момент хорошая зашита, эта та зашита, которая сможет сохранить ваши "ноу-хау" до момента, когда они станут уже не актуальны, а у вас появятся новые идей, которые вы смежите реализовать. К этому времени я полагаю, родятся и новые алгоритмы зашиты! :smile:
 

Mr. Anderson

Новичок
Сообщения
122
Репутация
4
Re: Защита программы

И все таки как убрать информацию об AutoIt из exe?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Re: Защита программы

Mr. Anderson
Я вручную делал при помощи ResHacker v. 3.4.0.79.
Возможно есть способ поэлегантнее.
Запускаем Compile Script to .exe, затем в меню Compression снимаем галку UPX Compress,
т.е. будем компилировать без упаковки UPX-ом.
Компилируем наш скрипт. На выходе получится неупакованный exe, весом более 600 Кб.
Открываем в ResHacker наш exe (Файл - Открыть - Наша программа).
Смотрим на дерево ресурсов. Раскрываем Version Info - 1 - 2057
Выделяем этот 2057. В правом окне будет видна вся информация, отображающаяся в свойствах exe.
Теперь удаляем этот 2057 - правой кнопкой мыши "Удалить ресурс", подтверждаем.
Сохраняем (Файл - Сохранить)
Сохранится наш измененный exe + резервная копия оригинального.
В свойствах этого exe, вкладки Версия уже вообще нет.
Теперь остается запаковать наш exe. Можно тем же UPX-ом, можно поэксперементировать
с другими упаковщиками/протекторами.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Re: Защита программы

Mr. Anderson
Yuriy
Этого не достаточно, у AutoIt-скрипта в любом случае есть сигнатура, определить что это AutoIt скрипт можно так:

Код:
$sFile = FileOpenDialog("Open as", "", "Program Files (*.exe)", 0, @AutoItExe)

If Not @error Then
	MsgBox(64, 'Results', StringFormat('File:\n\n   %s\n\nIs AutoIt script?\n\n   %s', $sFile, _FileIsAutoItScript($sFile)))
EndIf

Func _FileIsAutoItScript($sExeFile)
	Local $sSignature = BinaryToString("0xA3484BBE986C4AA9994C530A86D6487D")
	Local $sRead = FileRead($sExeFile)
	
	Return StringInStr($sRead, $sSignature) > 0
EndFunc
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Re: Защита программы

Я знаю, что недостаточно.
Просто рассказал как вкладку Версия из свойств убрать.
Еще можно легко определить, загрузив в OllyDbg, например, даже упакованный.
 

Viktor217

Осваивающий
Сообщения
233
Репутация
31
Re: Защита программы

Блин, а я думал что проблема с декомпиляцией уже решена)=
Может кто дать программку для декомпиляции, нужно проверить мой скриптик на взломоспособность...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Защита программы

CreatoR
На основе Вашей функции _FileIsAutoItScript() поиск AutoIt-процессов:
Код:
Opt('MustDeclareVars', 1)
Opt('TrayMenuMode', 1)

Global $aProcess, $sFile, $j = 0, $aAutoIt[$j + 1], $sTitle = 'Поиск процессов AutoIt', _
		$sMessage = 'Нет ни одного процесса AutoIt.'

If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

$aProcess = ProcessList()

If Not @error Then
	For $i = 1 To $aProcess[0][0]
		$sFile = _WinAPI_GetProcessFileName($aProcess[$i][1])
		If _FileIsAutoItScript($sFile) And $sFile <> @ScriptFullPath Then
			$j += 1
			ReDim $aAutoIt[$j + 1]
			$aAutoIt[$j] = $sFile
		EndIf
	Next
	If $j Then
		$sMessage = 'Найдено процессов AutoIt: ' & $j & @CRLF & @CRLF
		For $n = 1 To $j
			$sMessage &= $aAutoIt[$n] & @CRLF
		Next
	EndIf
	MsgBox(64, $sTitle, $sMessage)
Else
	MsgBox(16, $sTitle, 'Ошибка.')
EndIf

Func _FileIsAutoItScript($sExeFile)
	Local $sSignature = BinaryToString('0xA3484BBE986C4AA9994C530A86D6487D')
	Local $sRead = FileRead($sExeFile)

	Return StringInStr($sRead, $sSignature) > 0
EndFunc   ;==>_FileIsAutoItScript

Func _WinAPI_GetCurrentProcessID()
	Local $aResult = DllCall('kernel32.dll', 'dword', 'GetCurrentProcessId')
	If @error Then Return SetError(@error, @extended, 0)
	Return $aResult[0]
EndFunc   ;==>_WinAPI_GetCurrentProcessID

Func _WinAPI_CloseHandle($hObject)
	Local $aResult = DllCall('kernel32.dll', 'bool', 'CloseHandle', 'handle', $hObject)
	If @error Then Return SetError(@error, @extended, False)
	Return $aResult[0]
EndFunc   ;==>_WinAPI_CloseHandle

Func _WinAPI_GetProcessFileName($PID = 0)

	If Not $PID Then
		$PID = _WinAPI_GetCurrentProcessID()
		If Not $PID Then
			Return SetError(1, 0, '')
		EndIf
	EndIf

	Local $hProcess = DllCall('kernel32.dll', 'ptr', 'OpenProcess', 'dword', 0x00000410, 'int', 0, 'dword', $PID)

	If (@error) Or (Not $hProcess[0]) Then
		Return SetError(1, 0, '')
	EndIf

	Local $tPath = DllStructCreate('wchar[1024]')
	Local $Ret = DllCall(@SystemDir & '\psapi.dll', 'int', 'GetModuleFileNameExW', 'ptr', $hProcess[0], 'ptr', 0, 'ptr', DllStructGetPtr($tPath), 'int', 1024)

	If (@error) Or (Not $Ret[0]) Then
		$Ret = 0
	EndIf
	_WinAPI_CloseHandle($hProcess[0])
	If Not IsArray($Ret) Then
		Return SetError(1, 0, '')
	EndIf
	Return DllStructGetData($tPath, 1)
EndFunc   ;==>_WinAPI_GetProcessFileName


Viktor217 [?]
Блин, а я думал что проблема с декомпиляцией уже решена)=
Может кто дать программку для декомпиляции, нужно проверить мой скриптик на взломоспособность...
О декомпилировании


Добавлено:
Сообщение автоматически объединено:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Re: Защита программы

Большинство компиляторов встраивают свои сигнатуры в .exe файл. Зачем скрывать тот факт, что программа написана на AutoIt?

Yuriy сказал(а):
Теперь удаляем этот 2057...

Зачем удалять VersionInfo? Любая "нормальная" программа должна иметь этот раздел. Более подробно о том, как работать с VersionInfo, я писал здесь.

Viktor217 сказал(а):
а я думал что проблема с декомпиляцией уже решена...

Да, решена. Ее просто отменили, и здесь мы ее не обсуждаем.

P.S

Для того, чтобы небыло возможности декомпилировать ваши программы, используйте другие упаковщики вместо UPX, например PECompact.
 

Viktor217

Осваивающий
Сообщения
233
Репутация
31
Re: Защита программы

Да, решена. Ее просто отменили, и здесь мы ее не обсуждаем.
Ну если её не обсуждают здесь, это не значит что её не обсуждают на любых других ресурсах...
P.S Для того, чтобы небыло возможности декомпилировать ваши программы, используйте другие упаковщики вместо UPX, например PECompact.
Можно краткий гадик по использованию, а то я её скачал, установил, что делать не знаю)=
 

ak40u

Знающий
Сообщения
33
Репутация
7
Re: Защита программы

Viktor217 сказал(а):
Можно краткий гадик по использованию, а то я её скачал, установил, что делать не знаю)=

Там все просто, устанавливаешь pe compact stable( бета у меня не пошла). Компилируешь ау3 скрипт без upx компилятором ау3. Потом кликаешь по полученному .ехе правой кнопкой мыши, в контекстном меню выбираешь строку compress with pe compact (gui), открывается окно pe. Там жмешь "сжать файлы" кнопку. Вроде все. Сжатый екзешник заменяет исходный.

Единственное что, моя avira pss 9.0 считает полученый таким образом файл трояном.
 

Viktor217

Осваивающий
Сообщения
233
Репутация
31
Re: Защита программы

У меня ошибку выдаёт, в колонке новый размер...


Добавлено:
Сообщение автоматически объединено:

А какие способы декомпиляции собранных скриптов существуют?
Пробовал универсальный распоковщик и Ехе2Au3, не получилось, а если других способов нету, то зачем нужна другая защита?)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Re: Защита программы

ak40u сказал(а):
Там все просто...

Только не забудьте отключить сжатие оверлея (здесь располагается непосредственно код AutoIt)! Так же лучше не трогать секцию ресурсов.
 

svigelf

Знающий
Сообщения
61
Репутация
17
Re: Защита программы

Если можно скрин с настройками для PECompact ? (так сказать самый правильные или оптимальные настройки)
 

SyDr

Сидра
Сообщения
651
Репутация
158
Re: Защита программы

Спокойно декомпилируется. Даже обфускатора нет.
 
Статус
Закрыто для дальнейших ответов.
Верх