Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Source] SelfRename.au3- Blokada zmiany nazwy .exe


Rekomendowane odpowiedzi

Opublikowano

Czesc.

Znalazlem funkcje napisana na forum autoit.

Dzieki niej mozemy zablokowac mozliwosc zmiany nazwy pliku.

 

Oto efekt

v90w48.jpg

 


#include '_SelfRename.au3' ;

; Rozpocznik Start Programu jesli nazwa = Przyklad.exe
If _SelfRename('Przyklad.exe', True) Then
MsgBox(4096, '', 'Przykro mi ale nazwa "' & @ScriptName & '", nie jest orginalna nazwa programu."')
Exit ; Po wybraniu zlego zamyka proces.
Else ; Jesli dobre
MsgBox(4096, '', 'Poprawna nazwa: "' & @ScriptName & '"')
EndIf

Lib:

 

#include-once
#include <FileConstants.au3>

; #FUNCTION# ====================================================================================================================
; Name ..........: __SelfRename
; Description ...: Rename the running executable to a different filename.
; Syntax ........: _SelfRename($sFileName[, $fRestart = Default[, $iDelay = 5[, $fUsePID = Default]]])
; Parameters ....: $sFileName - Filename the executable should be called e.g. Example.exe or Example
; $fRestart - [optional] Restart the application (True) or to not restart (False) after overwriting. Default is False.
; $iDelay - [optional] An integer value for the delay to wait (in seconds) before stopping the process and deleting the executable.
; If 0 is specified then the batch will wait indefinitely until the process no longer exits. Default is 5 (seconds).
; $fUsePID - [optional] Use the process name (False) or PID (True). Default is False.
; Return values .: Success - Returns the PID of the batch file.
; Failure - Returns 0 & sets @error to non-zero
; Author ........: guinness
; Example .......: Yes
; ===============================================================================================================================
Func _SelfRename($sFileName, $fRestart = Default, $iDelay = 5, $fUsePID = Default)
Local $iInternalDelay = 2, $sAppID = @ScriptName, $sDelay = 'IF %TIMER% GTR ' & $iDelay & ' GOTO DELETE', _
$sImageName = 'IMAGENAME', $sRestart = '', $sScriptPath = @ScriptFullPath, $sTempFileName = @ScriptName

If @Compiled = 0 Then
Return SetError(1, 0, 0)
EndIf

Local $iPosition = StringInStr($sFileName, '.', 1, -1) - 1
If $iPosition Then
$sFileName = StringLeft($sFileName, $iPosition)
EndIf
If $sFileName & '.exe' == $sAppID Then
Return SetError(3, 0, 0)
EndIf
$sFileName = @ScriptDir & '' & $sFileName & '.exe'
$iPosition = 0

$sTempFileName = StringLeft($sTempFileName, StringInStr($sTempFileName, '.', 1, -1) - 1)
While FileExists(@TempDir & '' & $sTempFileName & '.bat')
$sTempFileName &= Chr(Random(65, 122, 1))
WEnd
$sTempFileName = @TempDir & '' & $sTempFileName & '.bat'

If $iDelay = Default Then
$iDelay = 5
EndIf

If $iDelay = 0 Then
$sDelay = ''
EndIf

If $fUsePID Then
$sAppID = @AutoItPID
$sImageName = 'PID'
EndIf

Local $sCmdLineRaw = ''
If $CmdLineRaw <> '' Then
$sCmdLineRaw = ' ' & $CmdLineRaw
EndIf
If $fRestart Or $fRestart = Default Then
$sRestart = 'START "" "' & $sFileName & '"' & $sCmdLineRaw
EndIf
$sCmdLineRaw = ''

Local $sData = 'SET TIMER=0' & @CRLF _
& ':START' & @CRLF _
& 'PING -n ' & $iInternalDelay & ' 127.0.0.1 > nul' & @CRLF _
& $sDelay & @CRLF _
& 'SET /A TIMER+=1' & @CRLF _
& @CRLF _
& 'TASKLIST /NH /FI "' & $sImageName & ' EQ ' & $sAppID & '" | FIND /I "' & $sAppID & '" >nul && GOTO START' & @CRLF _
& 'GOTO MOVE' & @CRLF _
& @CRLF _
& ':MOVE' & @CRLF _
& 'TASKKILL /F /FI "' & $sImageName & ' EQ ' & $sAppID & '"' & @CRLF _
& 'MOVE /Y ' & '"' & $sScriptPath & '"' & ' "' & $sFileName & '"' & @CRLF _
& 'IF EXIST "' & $sScriptPath & '" GOTO MOVE' & @CRLF _
& @CRLF _
& ':END' & @CRLF _
& $sRestart & @CRLF _
& 'DEL "' & $sTempFileName & '"'

Local $hFileOpen = FileOpen($sTempFileName, $FO_OVERWRITE)
If $hFileOpen = -1 Then
Return SetError(2, 0, 0)
EndIf
FileWrite($hFileOpen, $sData)
FileClose($hFileOpen)
Return Run($sTempFileName, @TempDir, @SW_HIDE)
EndFunc ;==>_SelfRename

 

Pozdrawiam.

table_name,9,10,11 from information_schema.tables

 

Opublikowano

Sam to napisałeś czy wziąłeś funkcję razem z gotowcem z internetu? Jeśli samodzielnie to jestem zdziwiony - kiedyś to Ty nawet spambota nie umiałeś napisać (w pozytywnym znaczeniu). Keep moving, nice.

  • 3 tygodnie później...
Opublikowano

phi...skomplikowane to to
ja mam jeden sprawdzony sposób na takie cuś

daję sprawdzenie czy istnieje proces o nazwie takiej jaką ma przypisane(nazwa pliku jest taka sama jak proces)

1375799776-U359635.jpg

Opublikowano

phi...skomplikowane to to

ja mam jeden sprawdzony sposób na takie cuś

 

daję sprawdzenie czy istnieje proces o nazwie takiej jaką ma przypisane(nazwa pliku jest taka sama jak proces)

 

Mogę stworzyć proces o twojej pierwotnej nazwie exeki, a potem zmienic nazwe twojej exeki i będzie działało ;) Lepsze by było pobranie nazwy swojego procesu, a nie sprawdzania czy ogólnie istnieje proces o nazwie takiej jaką ma twoja pierwotna exeka.

 

nie mówiać o tym że jaki jest sens takich blokad...?

Pisze boty do gier WWW na zlecenie.

Opublikowano

no ja też nie widzę sensu takiej blokady ale to chyba działa tak ,że jak coś zepsujesz tzn. zmienisz nazwę w programie to może coś nie działać jak należy

1375799776-U359635.jpg

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...