Beiträge von Greenhorn
-
-
Prima umgesetzt, die Sache.

Sieht wirklich gut aus.
RAX ist 64 Bit breit, und nicht weiter "unterteilt".
Du kannst im 64bit Mode die (Unter-)Register so wie sonst auch ansprechen, also RAX, EAX, AX und AH/AL, bzw. R8, R8D, R8W, R8B.
Du hast lediglich kein HIBYTE Opcode für die zusätzlichen Register, also bei den R-Registern nichts entsprechendes für AH, BH, CH, usw.
3.1.2 64-Bit-Mode RegistersDas Tutorial ist wirklich gut. Ich glaube, ich muss mich auch mal mit ASM beschäftigen

Wie ist das eigentlich mit CallWindowProc auf x64 (Falls man x64-Bytecode hat, ohne FASM)? Kann man da auch 4byte-int-Parameter statt dem 8byte Fenster-Handle und so verwenden? oder muss man dann den restlichen Platz "auffüllen", indem man weitere Paremeter einbaut?
Alle ganzzahligen Parameter sind 64 bit breit. Die Aufrufkonvention ist nicht mehr "stdcall" sondern "fastcall", d.h. die ersten vier Parameter werden in den Registern RCX, RDX, R8 und R9 übergeben. Sind die ersten vier Parameter Fließkommazahlen, dann sind sie 128 bit breit und werden über die Register XMM0 bis drei übergeben (zumindest bei den M$ Calling Conventions).Assembler lernen an sich ist nicht schwer, aber es braucht viele Jahre wirklich guten Assembler zu schreiben. Da muss man etwas Zeit mitbringen.
Gruß
Greenhorn -
Hi,
oder so:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
While (TRUE)Switch (GUIGetMsg (FALSE))
[/autoit]
Case $GUI[2]
$pid = Run("ping localhost -t", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
While (GUIGetMsg (FALSE) <> $GUI[3])
$line = StdoutRead($cmd)
If @error Then ExitLoop
$text = $text & $line
GUICtrlSetData($GUI[1], $text)
Sleep(500)
WEnd
ProcessClose ($pid)
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEndGruß
Greenhorn -
Du kannst ein "Live-Linux", z.B. Ubuntu, vom USB-Stick oder von CD booten. Dann GPartedstarten und die Partition mit NTFS formatieren.
Kannst auch Parted Magic dafür nehmen.Gruß
Greenhorn -
Das selbe auch wenn ich 2 ins Array Schreibe. Das einzig ärgerliche ist es, das ich irgendwie wenn ich das Script Starte mal 0x03020014 oder beim nächsten mal 0x00EE54F3 oder irgendwelche Random zahlen bekomme, was mich stark verwundert. Oder soll es so sein ? Ich denke wenn cih die Seriennummer abfrage muss die doch gleich bleiben. Oder was meint Ihr ? Naja, weiter gehts
[...]
Und ab drei geht nichts mehr, weil es dafür kein Array gibt.
So, nun bin ich gespannt was Ihr schriebt
Alles anzeigen
Wenn der Funktionsaufruf scheitert, wird @error auf 1 gesetzt. Ansonsten wird ein Array mit dem Rückgabewert der Funktion und einer Kopie aller Parameter (inklusive derer, die die Funktion möglicherweise verändert hat) zurückgegeben.
$return[0] = Rückgabewert der Funktion
$return[1] = Param1
$return[2] = Param2
...
$return[n] = ParamnAlso enthält $res[1] das Handle zu dem USB-Kit und $res[2] den String.

EDIT:
Benutzt Du einen Zeiger auf eine durch DllStructCreate erzeugte Zeichenkette (Bsp. zwei), dann wird die Seriennummer in die Zeichenkette geschrieben.Gruß
-
So, nun aber ... !?
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Global $dllIOW, $hKitIOW, $iNumDevs, $iProdID, $snIOW, $buffer, $res;Dll öffnen
[/autoit] [autoit][/autoit] [autoit]
$dllIOW = DllOpen("D:\A1\AutoIt\Temp\iowkit.dll")
If ($dllIOW = -1) Then ConsoleWrite("!> Mist, DllOpen fehlgeschlagen..." & @CRLF);IOWhandle übergeben
[/autoit] [autoit][/autoit] [autoit]
$res = DllCall($dllIOW, "PTR", "IowKitOpenDevice")
If Not IsArray($hKitIOW) Then
ConsoleWrite("!> Mist, IowKitOpenDevice fehlgeschlagen..." & @CRLF)
Else
$hKitIOW = $res[0]
;Anzahl der angeschlossenen Bausteine abfragen
$res = DllCall($dllIOW, "ULONG", "IowKitGetNumDevs")
If Not IsArray($res) Then
; Error handling
ConsoleWrite("!> Mist, IowKitGetNumDevs fehlgeschlagen..." & @CRLF)
Else
$iNumDevs = $res[0]
EndIf;ProductID abfragen
[/autoit] [autoit][/autoit] [autoit]
$res = DllCall($dllIOW, "ULONG", "IowKitGetProductId", "PTR", $hKitIOW[0])
If Not IsArray($res) Then
; Error handling
ConsoleWrite("!> Mist, IowKitGetProductId fehlgeschlagen..." & @CRLF)
Else
$iProdID = $res[0]
EndIf;Seriennummer auslesen
[/autoit] [autoit][/autoit] [autoit]
; Entweder so ...
$res = DllCall($dllIOW, "BOOL", "IowKitGetSerialNumber", "PTR", $hKitIOW[0], "WSTR", "")
If (not @error) Then
$snIOW = $res[2]
Else
$snIOW = "error code: "&@error
EndIf
; ... oder so:
;~ $buffer = DLLStructCreate("WCHAR[9]")
;~ $res = DllCall($dllIOW, "BOOL", "IowKitGetSerialNumber", "PTR", $hKitIOW[0], "PTR", DllStructGetPtr ($buffer))
EndIf;IOWhandle freigeben
[/autoit] [autoit][/autoit] [autoit]
DllCall($dllIOW, "INT", "IowKitCloseDevice", "PTR", $hKitIOW);Dll schließen
[/autoit] [autoit][/autoit] [autoit]
DllClose($dllIOW);Anzeige
[/autoit] [autoit][/autoit] [autoit][/autoit]
ConsoleWrite("NUM " & $iNumDevs & @CRLF)
ConsoleWrite("PID " & "0x" & Hex($iProdID) & @CRLF)
ConsoleWrite("S/N " & $snIOW & @CRLF)
;~ ConsoleWrite("S/N " & DllstructGetData($buffer, 1) & @CRLF)Jam00, benutzt Du evtl. die 64bit Variante von Windoze ?
Gruß
Greenhorn -
Ich glaube ohne die Hardware bringt uns die DLL auch nicht weiter ...

Versuche mal bitte das hier (das Eine oder das Andere):
Spoiler anzeigen
[autoit]Global $dllIOW, $rslt1IOW, $rslt2IOW, $rslt3IOW, $ptrIOW, $snIOW, $buffer
[/autoit] [autoit][/autoit] [autoit];Dll öffnen
[/autoit] [autoit][/autoit] [autoit]
$dllIOW = DllOpen("iowkit.dll");IOWhandle übergeben
[/autoit] [autoit][/autoit] [autoit]
$ptrIOW = DllCall($dllIOW, "ptr", "IowKitOpenDevice")
If Not IsArray($ptrIOW) Then ConsoleWrite("Mist" & @CRLF);Anzahl der angeschlossenen Bausteine abfragen
[/autoit] [autoit][/autoit] [autoit]
$rslt1IOW = DllCall($dllIOW, "int", "IowKitGetNumDevs")
If Not IsArray($rslt1IOW) Then ConsoleWrite("Mist1" & @CRLF);ProductID abfragen
[/autoit] [autoit][/autoit] [autoit]
$rslt2IOW = DllCall($dllIOW, "dword", "IowKitGetProductId", "ptr", $ptrIOW[0])
If Not IsArray($rslt2IOW) Then ConsoleWrite("Mist2" & @CRLF);Seriennummer auslesen
[/autoit] [autoit][/autoit] [autoit]
; Entweder so ...
$rslt3IOW = DllCall($dllIOW, "char", "IowKitGetSerialNumber", "ptr", $ptrIOW[0], "wstr", $snIOW)
$snIOW = $rslt3IOW[2]; ... oder so:
[/autoit] [autoit][/autoit] [autoit]
;~ $buffer = DLLStructCreate("wchar[9]")
;~ $rslt3IOW = DllCall($dllIOW, "char", "IowKitGetSerialNumber", "ptr", $ptrIOW[0], "ptr", DllStructGetPtr ($buffer));IOWhandle freigeben
[/autoit] [autoit][/autoit] [autoit]
DllCall($dllIOW, "int", "IowKitCloseDevice", "ptr", $ptrIOW);Dll schließen
[/autoit] [autoit][/autoit] [autoit]
DllClose($dllIOW);Anzeige
[/autoit]
ConsoleWrite("NUM " & $rslt1IOW[0] & @CRLF)
ConsoleWrite("PID " & "0x" & Hex($rslt2IOW[0]) & @CRLF)
ConsoleWrite("S/N " & $snIOW & @CRLF)
;~ ConsoleWrite("S/N " & DllstructGetData($buffer, 1) & @CRLF)
EDIT:
Noch eine Zeile vergessen ...Gruß
Greenhorn -
Hoffentlich wird das Update auch alles fixen.
Schon geschehen ... :);)Warum denn? Magst du die kahle Oberfläche oder verwendest du meine DLL?
Nein, mag die kahle Oberfläche auch nicht sonders, aber komme auch so gut zurecht.
Deine DLL konnte ich nicht testen, da 64bittiges System. Kompilieren konnte ich den Quelltext nicht, da ich nur VC Express installiert habe (kein ATL, MFC, etc.)Gruß
Greenhorn -
-
-
Antiviren-Hersteller bieten kostenlosen LNK-Schutz [Update]
Ich bleibe aber lieber bei dem Fix-it
Gruß
Greenhorn -
-
Neues aus der Anstalt: Windows-LNK-Lücke: Lage spitzt sich zu
Zitat von Heise News[...]
Wer bislang davon ausging, signierte Dateien seien weitgehend vertrauenswürdig, sollte zukünftig zwei Mal hinschauen. Denn der Profi-Spion Stuxnet ist mit einem Realtek-Zertifikat signiert. Verisign hat mittlerweile gegenüber heise Security bestätigt, dass das Zertifikat tatsächlich Realtek gehört.
[...] -
Wobei ich nicht verstehe, warum nicht alle Icons von Verknüpfungen verschwunden sind!?
Welche meinst Du ? -
Bei Verknüpfungen (*.LNK) werden keine Symbole mehr angezeigt, das bewirkt ja der Workaround den Registrierungseintrag zu ändern.
Das betrifft dann natürlich auch die Schnellstartleiste.
EDIT:Zitat von M$Impact of workaround.Disabling icons from being displayed for shortcuts prevents the issue from being exploited on affected systems. When this workaround is implemented, shortcut files and Internet Explorer shortcuts will no longer have an icon displayed.

Gruß
Greenhorn -
Bei Verknüpfungen (*.LNK) werden keine Symbole mehr angezeigt, das bewirkt ja der Workaround den Registrierungseintrag zu ändern.
Das betrifft dann natürlich auch die Schnellstartleiste.Bei XP müsste das über >Symbole anordnen<->Desktopsymbole anzeigen< im Kontextmenü des Desktops zu finden sein ...
Gruß
Greenhorn -
Wundet euch nicht, wenn eure Desktopsymbole nach einem Neustart verschwunden sind.
Sollte das der Fall sein, dann müsst ihr sie über >Ansicht<->Desktopsymbole anzeigen< im Kontextmenü des Desktops wieder sichtbar machen.
@pee
Ja, habe ich auch in der letzten Ausgabe gelesen: Die großen Software-Schmieden haben mit immer mehr Lücken in ihren Ungetümen zu kämpfen, und sie sind zumeist völlig überfordert damit diese zu stopfen, während deren Bosse auf ihren Yachten das Leben genießen.
In den letzten zwei Jahren sind die Sicherheitsprobleme/Fehler um ein vierfaches gestiegen!Gruß
Greenhorn -
Ach Du möchtest über Scintilla das Script starten ..., sorry habe ich misverstanden.
Das müsste aber auch irgendwie gehen, wenn ich mich nicht irre.
Du könntest es z.B. in die Startup.lua aufnehmen und noch eine entsprechende Funktion in dein Script einbauen, das dieses beim Kompilieren ausgeführt wird.Gruß
Greenhorn -
Hi,
ja, das geht. Dazu brauchst Du den LUA Interpreter und beim Kompilieren mit dem AutoIt3Wrapper im Tab "Run Before/After" den LUA Interpreter mit deinem Script als Parameter ausführen.
[autoit]
Oder direkt:
[/autoit]
#AutoIt3Wrapper_Run_Before=Laufwerk:/Pfad/zum/LUA Interpreter/lua.exe myscript.luaGruß
Greenhorn -
Hi,
das Problem hatte ich früher auch einmal, weiß aber nicht mehr mit welchem AV-Fuzzy.
Wenn Du kein Uralt-Mainboard (älter als fünf Jahre) eingebaut hast, dann brauchst Du eigentlich keine Floppy mehr.
Ich mache alles nur noch mit USB-Sticks, auch das BIOS flashen.Gruß
Greenhorn