Jump to content
Miliardsto

Timers not work while using stripper

Recommended Posts

Miliardsto

Hello I got errors and timers not work if I use any obfuscator(stripper). All code and things work great after obfuscate but functions with timers dont.

-### StripOnly/StripFunc Error: Found DllCallbackRegister() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.

 

Here are scripts U can try use stripper then functions would not work

https://www.autoitscript.com/autoit3/docs/libfunctions/_Timer_SetTimer.htm

 

Here is written I believe something on this topic https://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/Au3Stripper.html

 

Quote

 

    Warn you that the script is likely to have difficulties running if a parameter cannot be determined before run-time.  This usually occurs if:

·    A function takes a literal string parameter defining a function or variable.  In this case the resulting string might not be able to be correctly linked to the correct variable or function name during the process.  This only affects certain AutoIt3 functions:

 

 

 

 

Could I do something with that? I got several functions with timers and I dont want use ignore these functions

#Au3Stripper_Ignore_Funcs=

 

Edited by Miliardsto

Share this post


Link to post
Share on other sites
Miliardsto

bump. maybe there is possible to use other timers functions etc?

Share this post


Link to post
Share on other sites
mLipok
5 hours ago, Miliardsto said:

DllCallbackRegister

Show this line from your script.


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2018-09-20

Share this post


Link to post
Share on other sites
mLipok

 

Btw.

This is not kind to bump thread before 24h waiting.

 

 

 


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2018-09-20

Share this post


Link to post
Share on other sites
Jos
10 hours ago, Miliardsto said:

Hello I got errors and timers not work if I use any obfuscator(stripper). All code and things work great after obfuscate but functions with timers dont.

-### StripOnly/StripFunc Error: Found DllCallbackRegister() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by this Function.

 

I am seriously wondering why ypou are surprised after simply ignoring the shown error?
It even tells you which line it has problems with. ;)

Jos


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites
Miliardsto

Its code before stripp

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/tl /debug /pe /so  /rm
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#Au3Stripper_On

#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <Timers.au3>
#include <WindowsConstants.au3>

Global $g_idMemo, $g_hStatus, $g_idProgress, $g_iPercent = 0, $g_iDirection = 1

_Example_CallBack()

Func _Example_CallBack()
    Local $hGUI, $iTimerProgress, $idChange, $iWait = 10, $idState
    Local $aParts[3] = [75, 330, -1]

    $hGUI = GUICreate("Timers Using CallBack Function(s)", 400, 320)
    $g_idMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, BitOR($WS_HSCROLL, $WS_VSCROLL))
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    $idState = GUICtrlCreateButton("Start Progress Bar", 70, 270, 100, 25)
    $idChange = GUICtrlCreateButton("Change", 215, 270, 90, 25)
    GUICtrlSetState($idChange, $GUI_DISABLE)
    $g_hStatus = _GUICtrlStatusBar_Create($hGUI, $aParts)
    _GUICtrlStatusBar_SetText($g_hStatus, "Timers")
    _GUICtrlStatusBar_SetText($g_hStatus, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
    $g_idProgress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
    GUICtrlSetColor($g_idProgress, 0xff0000)
    _GUICtrlStatusBar_EmbedControl($g_hStatus, 1, GUICtrlGetHandle($g_idProgress))
    GUISetState(@SW_SHOW)

    _Timer_SetTimer($hGUI, 1000, "_UpdateStatusBarClock") ; create timer

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $idState
                If GUICtrlRead($idState) = "Start Progress Bar" Then
                    $iTimerProgress = _Timer_SetTimer($hGUI, $iWait, "_UpdateProgressBar") ; create timer
                    If @error Or $iTimerProgress = 0 Then ContinueLoop
                    GUICtrlSetData($idState, "Stop Progress Bar")
                    GUICtrlSetState($idChange, $GUI_ENABLE)
                Else
                    GUICtrlSetState($idChange, $GUI_DISABLE)
                    _Timer_KillTimer($hGUI, $iTimerProgress)
                    GUICtrlSetData($idState, "Start Progress Bar")
                EndIf

            Case $idChange
                If $iWait = 10 Then
                    $iWait = 250
                Else
                    $iWait = 10
                EndIf
                MemoWrite("Timer for _UpdateProgressBar set at: " & $iWait & " milliseconds")
                $iTimerProgress = _Timer_SetTimer($hGUI, $iWait, "", $iTimerProgress) ; reuse timer with different interval
        EndSwitch
    WEnd
    ConsoleWrite("Killed All Timers? " & _Timer_KillAllTimers($hGUI) & @CRLF) ; must be True as the timer to "_UpdateStatusBarClock" have not been killed
    GUIDelete()
EndFunc   ;==>_Example_CallBack

; call back function
Func _UpdateStatusBarClock($hWnd, $iMsg, $iIDTimer, $iTime)
    #forceref $hWnd, $iMsg, $iIDTimer, $iTime
    _GUICtrlStatusBar_SetText($g_hStatus, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
EndFunc   ;==>_UpdateStatusBarClock

; call back function
Func _UpdateProgressBar($hWnd, $iMsg, $iIDTimer, $iTime)
    #forceref $hWnd, $iMsg, $iIDTimer, $iTime
    $g_iPercent += 5 * $g_iDirection
    GUICtrlSetData($g_idProgress, $g_iPercent)
    If $g_iPercent = 100 Or $g_iPercent = 0 Then $g_iDirection *= -1
    If $g_iPercent = 100 Then
        GUICtrlSetColor($g_idProgress, 0xff0000)
    ElseIf $g_iPercent = 0 Then
        GUICtrlSetColor($g_idProgress, 0x0000ff)
    EndIf
EndFunc   ;==>_UpdateProgressBar

; Write a line to the memo control
Func MemoWrite($sMessage)
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

 

and the code after strip. in this code below is error and timers not work and $idState not call function

#Au3Stripper_On
Global Enum $0 = 0, $1, $2, $3
Func _0(Const $4 = @error, Const $5 = @extended)
Local $6 = DllCall("kernel32.dll", "dword", "GetLastError")
Return SetError($4, $5, $6[0])
EndFunc
Func _3($7, $8, $9, $a, $b = 0, $c = 0)
Local $d = DllCall("advapi32.dll", "bool", "AdjustTokenPrivileges", "handle", $7, "bool", $8, "struct*", $9, "dword", $a, "struct*", $b, "struct*", $c)
If @error Then Return SetError(@error, @extended, False)
Return Not($d[0] = 0)
EndFunc
Func _9($e = $2)
Local $d = DllCall("advapi32.dll", "bool", "ImpersonateSelf", "int", $e)
If @error Then Return SetError(@error, @extended, False)
Return Not($d[0] = 0)
EndFunc
Func _d($f, $g)
Local $d = DllCall("advapi32.dll", "bool", "LookupPrivilegeValueW", "wstr", $f, "wstr", $g, "int64*", 0)
If @error Or Not $d[0] Then Return SetError(@error, @extended, 0)
Return $d[3]
EndFunc
Func _f($h, $i = 0, $j = False)
If $i = 0 Then
Local $6 = DllCall("kernel32.dll", "handle", "GetCurrentThread")
If @error Then Return SetError(@error + 10, @extended, 0)
$i = $6[0]
EndIf
Local $d = DllCall("advapi32.dll", "bool", "OpenThreadToken", "handle", $i, "dword", $h, "bool", $j, "handle*", 0)
If @error Or Not $d[0] Then Return SetError(@error, @extended, 0)
Return $d[4]
EndFunc
Func _g($h, $i = 0, $j = False)
Local $7 = _f($h, $i, $j)
If $7 = 0 Then
Local Const $k = 1008
If _0() <> $k Then Return SetError(20, _0(), 0)
If Not _9() Then Return SetError(@error + 10, _0(), 0)
$7 = _f($h, $i, $j)
If $7 = 0 Then Return SetError(@error, _0(), 0)
EndIf
Return $7
EndFunc
Func _h($7, $l, $m)
Local $n = _d("", $l)
If $n = 0 Then Return SetError(@error + 10, @extended, False)
Local Const $o = "dword Count;align 4;int64 LUID;dword Attributes"
Local $p = DllStructCreate($o)
Local $q = DllStructGetSize($p)
Local $b = DllStructCreate($o)
Local $r = DllStructGetSize($b)
Local $s = DllStructCreate("int Data")
DllStructSetData($p, "Count", 1)
DllStructSetData($p, "LUID", $n)
If Not _3($7, False, $p, $q, $b, $s) Then Return SetError(2, @error, False)
DllStructSetData($b, "Count", 1)
DllStructSetData($b, "LUID", $n)
Local $t = DllStructGetData($b, "Attributes")
If $m Then
$t = BitOR($t, 0x00000002)
Else
$t = BitAND($t, BitNOT(0x00000002))
EndIf
DllStructSetData($b, "Attributes", $t)
If Not _3($7, False, $b, $r, $p, $s) Then Return SetError(3, @error, False)
Return True
EndFunc
Global Const $u = "struct;long Left;long Top;long Right;long Bottom;endstruct"
Global Const $v = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader" &((@OSVersion = "WIN_XP") ? "" : ";" & $u & ";uint uChevronState")
Global Const $w = "handle hProc;ulong_ptr Size;ptr Mem"
Func _m(ByRef $x)
Local $y = DllStructGetData($x, "Mem")
Local $0z = DllStructGetData($x, "hProc")
Local $10 = _0z($0z, $y, 0, 0x00008000)
DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $0z)
If @error Then Return SetError(@error, @extended, False)
Return $10
EndFunc
Func _s($11, $12, ByRef $x)
Local $6 = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $11, "dword*", 0)
If @error Then Return SetError(@error + 10, @extended, 0)
Local $13 = $6[2]
If $13 = 0 Then Return SetError(1, 0, 0)
Local $h = BitOR(0x00000008, 0x00000010, 0x00000020)
Local $0z = _10($h, False, $13, True)
Local $14 = BitOR(0x00002000, 0x00001000)
Local $y = _x($0z, 0, $12, $14, 0x00000004)
If $y = 0 Then Return SetError(2, 0, 0)
$x = DllStructCreate($w)
DllStructSetData($x, "hProc", $0z)
DllStructSetData($x, "Size", $12)
DllStructSetData($x, "Mem", $y)
Return $y
EndFunc
Func _u(ByRef $x, $15, $16, $12)
Local $6 = DllCall("kernel32.dll", "bool", "ReadProcessMemory", "handle", DllStructGetData($x, "hProc"), "ptr", $15, "struct*", $16, "ulong_ptr", $12, "ulong_ptr*", 0)
If @error Then Return SetError(@error, @extended, False)
Return $6[0]
EndFunc
Func _v(ByRef $x, $15, $16 = 0, $12 = 0, $17 = "struct*")
If $16 = 0 Then $16 = DllStructGetData($x, "Mem")
If $12 = 0 Then $12 = DllStructGetData($x, "Size")
Local $6 = DllCall("kernel32.dll", "bool", "WriteProcessMemory", "handle", DllStructGetData($x, "hProc"), "ptr", $16, $17, $15, "ulong_ptr", $12, "ulong_ptr*", 0)
If @error Then Return SetError(@error, @extended, False)
Return $6[0]
EndFunc
Func _x($0z, $18, $12, $19, $1a)
Local $6 = DllCall("kernel32.dll", "ptr", "VirtualAllocEx", "handle", $0z, "ptr", $18, "ulong_ptr", $12, "dword", $19, "dword", $1a)
If @error Then Return SetError(@error, @extended, 0)
Return $6[0]
EndFunc
Func _0z($0z, $18, $12, $1b)
Local $6 = DllCall("kernel32.dll", "bool", "VirtualFreeEx", "handle", $0z, "ptr", $18, "ulong_ptr", $12, "dword", $1b)
If @error Then Return SetError(@error, @extended, False)
Return $6[0]
EndFunc
Func _10($h, $1c, $13, $1d = False)
Local $6 = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $h, "bool", $1c, "dword", $13)
If @error Then Return SetError(@error + 10, @extended, 0)
If $6[0] Then Return $6[0]
If Not $1d Then Return 0
Local $7 = _g(BitOR(0x00000020, 0x00000008))
If @error Then Return SetError(@error + 20, @extended, 0)
_h($7, "SeDebugPrivilege", True)
Local $1e = @error
Local $1f = @extended
Local $1g = 0
If Not @error Then
$6 = DllCall("kernel32.dll", "handle", "OpenProcess", "dword", $h, "bool", $1c, "dword", $13)
$1e = @error
$1f = @extended
If $6[0] Then $1g = $6[0]
_h($7, "SeDebugPrivilege", False)
If @error Then
$1e = @error + 30
$1f = @extended
EndIf
Else
$1e = @error + 40
EndIf
DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $7)
Return SetError($1e, $1f, $1g)
EndFunc
Func _11($11, $1h, $1i = 0, $1j = 0, $1k = 0, $1l = "wparam", $1m = "lparam", $1n = "lresult")
Local $6 = DllCall("user32.dll", $1n, "SendMessageW", "hwnd", $11, "uint", $1h, $1l, $1i, $1m, $1j)
If @error Then Return SetError(@error, @extended, "")
If $1k >= 0 And $1k <= 4 Then Return $6[$1k]
Return $6
EndFunc
Global Const $1o = 0X400
Global Const $1p =($1o + 7)
Global Const $1q =($1o + 10)
Global Const $1r = 0x2000 + 6
Global Const $1s =($1o + 14)
Global Const $1t =($1o + 4)
Global Const $1u =($1o + 1)
Global Const $1v =($1o + 11)
Global Const $1w = $1u
Global Const $1x = 0xff
Global Const $1y = Ptr(-1)
Global Const $1z = Ptr(-1)
Global Const $20 = BitShift(0x0100, 8)
Global Const $21 = BitShift(0x2000, 8)
Global Const $22 = BitShift(0x8000, 8)
Global $23[64][2] = [[0, 0]]
Func _1r($24, $25, $g, $26, $27, $28, $29, $2a, $2b, $2c = 0, $2d = 0, $2e = 0)
If $2d = 0 Then $2d = _3e("")
Local $6 = DllCall("user32.dll", "hwnd", "CreateWindowExW", "dword", $24, "wstr", $25, "wstr", $g, "dword", $26, "int", $27, "int", $28, "int", $29, "int", $2a, "hwnd", $2b, "handle", $2c, "handle", $2d, "struct*", $2e)
If @error Then Return SetError(@error, @extended, 0)
Return $6[0]
EndFunc
Func _3e($2f)
Local $2g = "wstr"
If $2f = "" Then
$2f = 0
$2g = "ptr"
EndIf
Local $6 = DllCall("kernel32.dll", "handle", "GetModuleHandleW", $2g, $2f)
If @error Then Return SetError(@error, @extended, 0)
Return $6[0]
EndFunc
Func _3y($11)
Local $2h = _41($11)
If @error Then Return SetError(@error, @extended, 0)
Return DllStructGetData($2h, "Bottom") - DllStructGetData($2h, "Top")
EndFunc
Func _41($11)
Local $2h = DllStructCreate($u)
Local $2i = DllCall("user32.dll", "bool", "GetWindowRect", "hwnd", $11, "struct*", $2h)
If @error Or Not $2i[0] Then Return SetError(@error + 10, @extended, 0)
Return $2h
EndFunc
Func _44($11, ByRef $2j)
Local $6 = DllCall("user32.dll", "dword", "GetWindowThreadProcessId", "hwnd", $11, "dword*", 0)
If @error Then Return SetError(@error, @extended, 0)
$2j = $6[2]
Return $6[0]
EndFunc
Func _45($11)
Local $2h = _41($11)
If @error Then Return SetError(@error, @extended, 0)
Return DllStructGetData($2h, "Right") - DllStructGetData($2h, "Left")
EndFunc
Func _4b($11, ByRef $2k)
If $11 = $2k Then Return True
For $2l = $23[0][0] To 1 Step -1
If $11 = $23[$2l][0] Then
If $23[$2l][1] Then
$2k = $11
Return True
Else
Return False
EndIf
EndIf
Next
Local $2j
_44($11, $2j)
Local $2m = $23[0][0] + 1
If $2m >= 64 Then $2m = 1
$23[0][0] = $2m
$23[$2m][0] = $11
$23[$2m][1] =($2j = @AutoItPID)
Return $23[$2m][1]
EndFunc
Func _4y($11, $27, $28, $29, $2a, $2n = True)
Local $6 = DllCall("user32.dll", "bool", "MoveWindow", "hwnd", $11, "int", $27, "int", $28, "int", $29, "int", $2a, "bool", $2n)
If @error Then Return SetError(@error, @extended, False)
Return $6[0]
EndFunc
Func _5v($2o, $2p)
Local $6 = DllCall("user32.dll", "hwnd", "SetParent", "hwnd", $2o, "hwnd", $2p)
If @error Then Return SetError(@error, @extended, 0)
Return $6[0]
EndFunc
Global $2q[16][55535 + 2 + 1]
Func _6r($11)
Local $2r, $2s = -1, $2t = True
If Not WinExists($11) Then Return SetError(-1, -1, 0)
For $2u = 0 To 16 - 1
If $2q[$2u][0] <> 0 Then
If Not WinExists($2q[$2u][0]) Then
For $2v = 0 To UBound($2q, 2) - 1
$2q[$2u][$2v] = 0
Next
$2q[$2u][1] = 10000
$2t = False
EndIf
EndIf
Next
For $2u = 0 To 16 - 1
If $2q[$2u][0] = $11 Then
$2s = $2u
ExitLoop
EndIf
Next
If $2s = -1 Then
For $2u = 0 To 16 - 1
If $2q[$2u][0] = 0 Then
$2q[$2u][0] = $11
$2q[$2u][1] = 10000
$2t = False
$2s = $2u
ExitLoop
EndIf
Next
EndIf
If $2s = -1 And $2t Then Return SetError(16, 0, 0)
If $2q[$2s][1] = 10000 + 55535 Then
For $2w = 2 To UBound($2q, 2) - 1
If $2q[$2s][$2w] = 0 Then
$2r =($2w - 2) + 10000
$2q[$2s][$2w] = $2r
Return $2r
EndIf
Next
Return SetError(-1, 55535, 0)
EndIf
$2r = $2q[$2s][1]
$2q[$2s][1] += 1
$2q[$2s][($2r - 10000) + 2] = $2r
Return $2r
EndFunc
Global $2x
Global Const $2y = "msctls_statusbar32"
Global Const $2z = "int BX;int BY;int RX"
Func _6t($11, $30 = -1, $31 = "", $32 = -1, $33 = 0x00000000)
If Not IsHWnd($11) Then Return SetError(1, 0, 0)
Local $26 = BitOR(0x40000000, 0x10000000)
If $32 = -1 Then $32 = 0x00000000
If $33 = -1 Then $33 = 0x00000000
Local $34[1], $35[1]
If @NumParams > 1 Then
If IsArray($30) Then
$34 = $30
Else
$34[0] = $30
EndIf
If @NumParams = 2 Then
ReDim $35[UBound($34)]
Else
If IsArray($31) Then
$35 = $31
Else
$35[0] = $31
EndIf
If UBound($34) <> UBound($35) Then
Local $36
If UBound($34) > UBound($35) Then
$36 = UBound($35)
ReDim $35[UBound($34)]
Else
$36 = UBound($34)
ReDim $34[UBound($35)]
For $2v = $36 To UBound($34) - 1
$34[$2v] = $34[$2v - 1] + 75
Next
$34[UBound($35) - 1] = -1
EndIf
EndIf
EndIf
If Not IsHWnd($11) Then $11 = HWnd($11)
If @NumParams > 3 Then $26 = BitOR($26, $32)
EndIf
Local $2r = _6r($11)
If @error Then Return SetError(@error, @extended, 0)
Local $37 = _1r($33, $2y, "", $26, 0, 0, 0, 0, $11, $2r)
If @error Then Return SetError(@error, @extended, 0)
If @NumParams > 1 Then
_7i($37, UBound($34), $34)
For $2v = 0 To UBound($35) - 1
_7k($37, $35[$2v], $2v)
Next
EndIf
Return $37
EndFunc
Func _6v($11, $38, $39, $3a = 4)
Local $3b = _74($11, $38)
Local $3c = $3b[0]
Local $3d = $3b[1]
Local $3e = $3b[2] - $3c
Local $3f = $3b[3] - $3d
Local $3g = $3c
Local $3h = $3d
Local $3i = _45($39)
Local $3j = _3y($39)
If $3i > $3e Then $3i = $3e
If $3j > $3f Then $3j = $3f
Local $3k =($3e - $3i) / 2
Local $3l =($3f - $3j) / 2
If $3k < 0 Then $3k = 0
If $3l < 0 Then $3l = 0
If BitAND($3a, 1) = 1 Then $3g = $3c + $3k
If BitAND($3a, 2) = 2 Then $3h = $3d + $3l
If BitAND($3a, 4) = 4 Then
$3k = _6y($11)
$3l = _6z($11)
$3g = $3c
If _7d($11) Then $3g += $3k
$3h = $3d + $3l
$3i = $3e -($3k * 2)
$3j = $3f -($3l * 2)
EndIf
_5v($39, $11)
_4y($39, $3g, $3h, $3i, $3j)
EndFunc
Func _6w($11)
Local $3m = DllStructCreate($2z)
Local $1g
If _4b($11, $2x) Then
$1g = _11($11, $1p, 0, $3m, 0, "wparam", "struct*")
Else
Local $12 = DllStructGetSize($3m)
Local $x
Local $y = _s($11, $12, $x)
$1g = _11($11, $1p, 0, $y, 0, "wparam", "ptr")
_u($x, $y, $3m, $12)
_m($x)
EndIf
Local $3n[3]
If $1g = 0 Then Return SetError(-1, -1, $3n)
$3n[0] = DllStructGetData($3m, "BX")
$3n[1] = DllStructGetData($3m, "BY")
$3n[2] = DllStructGetData($3m, "RX")
Return $3n
EndFunc
Func _6y($11)
Local $3n = _6w($11)
Return SetError(@error, @extended, $3n[2])
EndFunc
Func _6z($11)
Local $3n = _6w($11)
Return SetError(@error, @extended, $3n[1])
EndFunc
Func _74($11, $38)
Local $2h = _75($11, $38)
If @error Then Return SetError(@error, 0, 0)
Local $3b[4]
$3b[0] = DllStructGetData($2h, "Left")
$3b[1] = DllStructGetData($2h, "Top")
$3b[2] = DllStructGetData($2h, "Right")
$3b[3] = DllStructGetData($2h, "Bottom")
Return $3b
EndFunc
Func _75($11, $38)
Local $2h = DllStructCreate($u)
Local $1g
If _4b($11, $2x) Then
$1g = _11($11, $1q, $38, $2h, 0, "wparam", "struct*")
Else
Local $3o = DllStructGetSize($2h)
Local $x
Local $y = _s($11, $3o, $x)
$1g = _11($11, $1q, $38, $y, 0, "wparam", "ptr")
_u($x, $y, $2h, $3o)
_m($x)
EndIf
Return SetError($1g = 0, 0, $2h)
EndFunc
Func _7b($11)
Return _11($11, $1r) <> 0
EndFunc
Func _7d($11)
Return _11($11, $1s) <> 0
EndFunc
Func _7e($11)
_11($11, 0x05)
EndFunc
Func _7i($11, $3p = -1, $34 = 25)
Local $3q, $3r = 1
If IsArray($3p) <> 0 Then
$3p[UBound($3p) - 1] = -1
$3r = UBound($3p)
$3q = DllStructCreate("int[" & $3r & "]")
For $2v = 0 To $3r - 2
DllStructSetData($3q, 1, $3p[$2v], $2v + 1)
Next
DllStructSetData($3q, 1, -1, $3r)
ElseIf IsArray($34) <> 0 Then
$3r = UBound($34)
$3q = DllStructCreate("int[" & $3r & "]")
For $2v = 0 To $3r - 2
DllStructSetData($3q, 1, $34[$2v], $2v + 1)
Next
DllStructSetData($3q, 1, -1, $3r)
ElseIf $3p > 1 Then
$3r = $3p
$3q = DllStructCreate("int[" & $3r & "]")
For $2v = 1 To $3r - 1
DllStructSetData($3q, 1, $34 * $2v, $2v)
Next
DllStructSetData($3q, 1, -1, $3r)
Else
$3q = DllStructCreate("int")
DllStructSetData($3q, $3r, -1)
EndIf
If _4b($11, $2x) Then
_11($11, $1t, $3r, $3q, 0, "wparam", "struct*")
Else
Local $12 = DllStructGetSize($3q)
Local $x
Local $y = _s($11, $12, $x)
_v($x, $3q)
_11($11, $1t, $3r, $y, 0, "wparam", "ptr")
_m($x)
EndIf
_7e($11)
Return True
EndFunc
Func _7k($11, $3s = "", $38 = 0, $3t = 0)
Local $3u = _7b($11)
Local $3v = StringLen($3s) + 1
Local $3w
If $3u Then
$3w = DllStructCreate("wchar Text[" & $3v & "]")
$3v *= 2
Else
$3w = DllStructCreate("char Text[" & $3v & "]")
EndIf
DllStructSetData($3w, "Text", $3s)
If _7d($11) Then $38 = $1x
Local $1g
If _4b($11, $2x) Then
$1g = _11($11, $1v, BitOR($38, $3t), $3w, 0, "wparam", "struct*")
Else
Local $x
Local $y = _s($11, $3v, $x)
_v($x, $3w)
If $3u Then
$1g = _11($11, $1v, BitOR($38, $3t), $y, 0, "wparam", "ptr")
Else
$1g = _11($11, $1w, BitOR($38, $3t), $y, 0, "wparam", "ptr")
EndIf
_m($x)
EndIf
Return $1g <> 0
EndFunc
Global $3x[1][3]
Func _7s($11)
Local $3y = $3x[0][0]
If $3y = 0 Then Return False
Local $6, $3z = 0
For $2v = $3y To 1 Step -1
If IsHWnd($11) Then
$6 = DllCall("user32.dll", "bool", "KillTimer", "hwnd", $11, "uint_ptr", $3x[$2v][1])
Else
$6 = DllCall("user32.dll", "bool", "KillTimer", "hwnd", $11, "uint_ptr", $3x[$2v][0])
EndIf
If @error Or $6[0] = 0 Then Return SetError(@error, @extended, False)
$3z = $3x[$2v][2]
If $3z <> 0 Then DllCallbackFree($3z)
$3x[0][0] -= 1
Next
ReDim $3x[1][3]
Return True
EndFunc
Func _7t($11, $40)
Local $6[1] = [0], $3z = 0, $41 = UBound($3x) - 1
For $2v = 1 To $41
If $3x[$2v][0] = $40 Then
If IsHWnd($11) Then
$6 = DllCall("user32.dll", "bool", "KillTimer", "hwnd", $11, "uint_ptr", $3x[$2v][1])
Else
$6 = DllCall("user32.dll", "bool", "KillTimer", "hwnd", $11, "uint_ptr", $3x[$2v][0])
EndIf
If @error Or $6[0] = 0 Then Return SetError(@error, @extended, False)
$3z = $3x[$2v][2]
If $3z <> 0 Then DllCallbackFree($3z)
For $42 = $2v To $41 - 1
$3x[$42][0] = $3x[$42 + 1][0]
$3x[$42][1] = $3x[$42 + 1][1]
$3x[$42][2] = $3x[$42 + 1][2]
Next
ReDim $3x[UBound($3x - 1)][3]
$3x[0][0] -= 1
ExitLoop
EndIf
Next
Return $6[0] <> 0
EndFunc
Func _7w($11, $43 = 250, $44 = "", $40 = -1)
Local $6[1] = [0], $45 = 0, $3z = 0, $2u = $3x[0][0] + 1
If $40 = -1 Then
ReDim $3x[$2u + 1][3]
$3x[0][0] = $2u
$40 = $2u + 1000
For $2v = 1 To $2u
If $3x[$2v][0] = $40 Then
$40 = $40 + 1
$2v = 0
EndIf
Next
If $44 <> "" Then
$3z = DllCallbackRegister($44, "none", "hwnd;uint;uint_ptr;dword")
If $3z = 0 Then Return SetError(-1, -1, 0)
$45 = DllCallbackGetPtr($3z)
If $45 = 0 Then Return SetError(-1, -1, 0)
EndIf
$6 = DllCall("user32.dll", "uint_ptr", "SetTimer", "hwnd", $11, "uint_ptr", $40, "uint", $43, "ptr", $45)
If @error Or $6[0] = 0 Then Return SetError(@error, @extended, 0)
$3x[$2u][0] = $6[0]
$3x[$2u][1] = $40
$3x[$2u][2] = $3z
Else
For $2v = 1 To $2u - 1
If $3x[$2v][0] = $40 Then
If IsHWnd($11) Then $40 = $3x[$2v][1]
$3z = $3x[$2v][2]
If $3z <> 0 Then
$45 = DllCallbackGetPtr($3z)
If $45 = 0 Then Return SetError(-1, -1, 0)
EndIf
$6 = DllCall("user32.dll", "uint_ptr", "SetTimer", "hwnd", $11, "uint_ptr", $40, "uint", $43, "ptr", $45)
If @error Or $6[0] = 0 Then Return SetError(@error, @extended, 0)
ExitLoop
EndIf
Next
EndIf
Return $6[0]
EndFunc
Global $46, $47, $48, $49 = 0, $4a = 1
_7x()
Func _7x()
Local $4b, $4c, $4d, $4e = 10, $4f
Local $3p[3] = [75, 330, -1]
$4b = GUICreate("Timers Using CallBack Function(s)", 400, 320)
$46 = GUICtrlCreateEdit("", 2, 32, 396, 226, BitOR(0x00100000, 0x00200000))
GUICtrlSetFont($46, 9, 400, 0, "Courier New")
$4f = GUICtrlCreateButton("Start Progress Bar", 70, 270, 100, 25)
$4d = GUICtrlCreateButton("Change", 215, 270, 90, 25)
GUICtrlSetState($4d, 128)
$47 = _6t($4b, $3p)
_7k($47, "Timers")
_7k($47, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
$48 = GUICtrlCreateProgress(0, 0, -1, -1, 1)
GUICtrlSetColor($48, 0xff0000)
_6v($47, 1, GUICtrlGetHandle($48))
GUISetState(@SW_SHOW)
_7w($4b, 1000, "_UpdateStatusBarClock")
While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case $4f
If GUICtrlRead($4f) = "Start Progress Bar" Then
$4c = _7w($4b, $4e, "_UpdateProgressBar")
If @error Or $4c = 0 Then ContinueLoop
GUICtrlSetData($4f, "Stop Progress Bar")
GUICtrlSetState($4d, 64)
Else
GUICtrlSetState($4d, 128)
_7t($4b, $4c)
GUICtrlSetData($4f, "Start Progress Bar")
EndIf
Case $4d
If $4e = 10 Then
$4e = 250
Else
$4e = 10
EndIf
_80("Timer for _UpdateProgressBar set at: " & $4e & " milliseconds")
$4c = _7w($4b, $4e, "", $4c)
EndSwitch
WEnd
ConsoleWrite("Killed All Timers? " & _7s($4b) & @CRLF)
GUIDelete()
EndFunc
Func _80($4g)
GUICtrlSetData($46, $4g & @CRLF, 1)
EndFunc

 

Share this post


Link to post
Share on other sites
Jos

Understand, but guess my statement is more about the fact that you do not understand that you have a shotgun in your hand and it is pointing to your feet, and still pull the trigger.

So:

  1. Do you understand what au3stripper does?
  2. Do you understand why you get the errror feedback from au3stripper when you run it?
  3. Why do you still expect your script to run?
  4. advice: start using au3stripper without the /RM option so you still are able to read the output script.

Jos


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites
Miliardsto

Im not understand everything thats why I ask about this. I made research and I read what I was found but I cannot solve this.

Quote

Not sure what you are proposing here, but Obfuscator will throw this Error/Warning whenever DllCallbackRegister() or other funcs are used that will likely disable the script.

 

Jos

so can i make something with that?

is there other possibility to run timers?

I found there is other function like timer

AdlibRegister('_MouseMove', 2000*60)   ; calls the function every 2000*60 ms
OnAutoItExitRegister('_UnRegister')    ; unregister the callback function when the script ends

After stripping it wont give DllCallbackRegister() error

 

 

Share this post


Link to post
Share on other sites
Jos

Yea, so it really isn't that difficult as I assume your callback func _UpdateStatusBarClock() gets stripped as au3stripper is unable to figure out that it is used .... hence the error from au3stripper.

To avoid that _UpdateStatusBarClock gets stripped at all, you simply add this line to your script:

#Au3Stripper_Ignore_Funcs=_UpdateStatusBarClock

Jos

Edited by Jos

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Miliardsto
      By Miliardsto
      Is there any difference in timers and AdlibRegister ?
      in :
      performance usage reliability or any kind of difference I want use few timers at once so it will make difference.
      I have problem with timers and I saw AdlibRegister behaves similar like:
      wont stop crashing slowing program so much maybe is there any trick to make it better?
    • Miliardsto
      By Miliardsto
      Hello what is the best way to secure autoit scripts right now?
      People say prebuild stripper in SciTE is not high secure. Other problem is if I use stripper in my program I use a lot of _Timer_SetTimer functions. After stripping timers not work.
      I seen this but now it not work
      https://www.elitepvpers.com/forum/autoit/2708576-release-tool-prevent-decompilation-your-autoit-code.html
      Next thing is https://www.pelock.com
      Is it better than stripper builded in SciTE and got more secure?
       
      Please write me ur knowledge about how to make scripts secure. I know its hard to recieve but tell me ur thoughts
    • Miliardsto
      By Miliardsto
      I do my timers like this by clicking checkbox function is called and timer is set up.
      There is a trouble cause I got so many Timers, 20 like this below and I can see if they is launched 5 timers program starts freezing and often crashing.
      I know it takes memory but is is right way to do timers like that or what should i do?
      Case $checkerSS If GUICtrlRead($CheckerOne) = 1 Then $ss = _Timer_SetTimer($Form1,4000,"checkScreen") Else _Timer_KillTimer ($Form1,$ss) EndIf Case $checkerPos If GUICtrlRead($DiscAlert) = 1 Then $disc = _Timer_SetTimer($Form1,20000,"checkPosition") Else _Timer_KillTimer ($Form1,$disc) EndIf Case $checkerVars If GUICtrlRead($AlertPlayerPos) = 1 Then $ap = _Timer_SetTimer($Form1,15000,"checkVars") Else _Timer_KillTimer ($Form1,$ap) EndIf  
    • FaridAgl
      By FaridAgl
      Here is my wrapper for SetTimer and KillTimer APIs.
      AutoIt already has its own, but I tried to make it as simple as I could.
      #include-once Global $g_avSimpleTimers = [[0, 0]] Func TimerSet($vFunction, $uInterval) Local $hFunction = DllCallbackRegister($vFunction, "none", "HWND;UINT;UINT_PTR;DWORD") If ($hFunction = 0) Then Return 0 Local $uTimerId = DllCall("user32.dll", "UINT_PTR", "SetTimer", _ "HWND", 0, _ "UINT_PTR", 0, _ "UINT", $uInterval, _ "ptr", DllCallbackGetPtr($hFunction))[0] If ($uTimerId = 0) Then DllCallbackFree($hFunction) Return 0 EndIf ReDim $g_avSimpleTimers[$g_avSimpleTimers[0][0] + 2][2] $g_avSimpleTimers[$g_avSimpleTimers[0][0] + 1][0] = $uTimerId $g_avSimpleTimers[$g_avSimpleTimers[0][0] + 1][1] = $hFunction $g_avSimpleTimers[0][0] += 1 Return $uTimerId EndFunc Func TimerUnset($uTimerId) If ($g_avSimpleTimers[0][0] = 0) Then Return False Local $iCount = $g_avSimpleTimers[0][0] For $i = 1 To $iCount + 1 If ($g_avSimpleTimers[$i][0] = $uTimerId) Then DllCall("user32.dll", "BOOL", "KillTimer", _ "HWND", 0, _ "UINT_PTR", $uTimerId) DllCallbackFree($g_avSimpleTimers[$i][1]) For $j = $i To $iCount - 1 $g_avSimpleTimers[$j][0] = $g_avSimpleTimers[$j + 1][0] $g_avSimpleTimers[$j][1] = $g_avSimpleTimers[$j + 1][1] Next $g_avSimpleTimers[0][0] = $iCount - 1 ReDim $g_avSimpleTimers[$iCount][2] Return True EndIf Next Return False EndFunc Example:
      #include "Simple Timers.au3" Global $t1 = TimerSet(Foo, 500) Global $t2 = TimerSet("Bar", 1000) MsgBox(0, "", "Check the console.") TimerUnset($t1) MsgBox(0, "", "Check the console again.") TimerUnset($t2) ;Not necessary if you are exiting the script Func Foo($a, $b, $c, $d) ConsoleWrite(">Foo" & @CRLF) EndFunc Func Bar($a, $b, $c, $d) ConsoleWrite("!Bar" & @CRLF) EndFunc Download both UDF and example:

    • n0pr0bl3m
      By n0pr0bl3m
      So I have some timers which I reset periodically, but my problem is that they don't wait for the functions before them to finish and in a strange way reset beforehand.

      -snip-

      timerinit doesnt wait the mouseclick and sleep functions to finish
×