Français
Forum

Aider! WM_TIMER est un Scheunentor!!!

 
allô Profaner..

Hat la fois quelqu'un Lust trop testen, si [...]  sous XP generell gefixt ist?

- Einen Service trop programieren ist pour pas absolument nötig, normales Programme avec RUN AS (aussi avec PrivAktivate possible) comme Admin starten et cela Angreiferprogramm dans einem Account avec eingeschränkten Rechten effectuer.
- dans cela Hauptprogramm une Minuteur insérer (doit naturellement un la fenêtre avons).
- Im Angreiferprogramm une Procédure écrivons, qui une Messagebox ausgibt, qui Proc mais pas effectuer laisser.
- avec ProcAddr qui Adresse qui Procédure ermitteln.
- avec Poster un message (ou bien peut-être SendMessage) WM_TIMER avec qui Adresse qui Procédure vom Angreiferprogramm à cela Hauptprogramm senden.

Klapp cela???

 
20.05.2005  
 



Hey, aucun Kommentare? ne...aucune intérêt, cela la fois trop testen??

je übersetze la fois: le son des Artikels ist es possible, avec qui Message WM_TIMER un Programme, cela une Minuteur benutzt et un eigenes la fenêtre hat, en supplément trop bewegen, eigenen Code auszuführen.
courir cet Programme sur einem anderen Account comme sur meinem (z.B. comme interaktiver Service), würden cet Programme avec den Rechten cet anderen Accounts fonctionnement volonté.
on loggt sich quasi comme Invité un, sendet à cela Handle des Hauptfensters eines laufenden Virenscanners ou bien einer Firewall une WM_TIMER Message et peux sich ensuite sur une selbstgeschriebene PROC Administratorprivilegien verschaffen.
Führt cela pas qui gesamte Windows Sicherheit ins Absurde?
 
20.05.2005  
 



Habe den Artikel aussi seulement survolés - mais aussi so verstanden comment Du AH.

j'écris grade am ACP qui ODoku - je devrait nochmal oui c'est ca lesen si hierbei aussi qui ProcAddr externer Progs mgl. ist - ou bien seulement qui ProcAddr eigener Procs.

Salve.
 
20.05.2005  
 




Frank
Abbing
Hi,

je habs getestet. Zumindest sous XP Home wird pas qui Prozedure des Zielprogramms im Quellprogramm fonctionnement! Stattdessen wird cela Quellprogramm toujours wieder gestartet!!!

Im Anhang mon beiden Testprogramme. Zum Testen cela Quellprogramm d'abord starten et courir laisser. ensuite cela Zielprogramm starten. normalement devrait sich maintenant - so Andreas droite hat - im Quellprogramm chacun seconde une Messagebox ouvrir. chez mir ist cela pas so. suis la fois gespannt, comment sich cela avec anderen Windowsversionen verhält...

3 kB
Hochgeladen:20.05.2005
Downloadcounter36
Download
 
20.05.2005  
 



Selbes chez mir: xph,xpp!

Bestimmt irgend solch un kumulatives Update

Vorrausgesetzt naturellement Franks Demo entspricht dem Behaupteten.

Salve,
 
20.05.2005  
 




Frank
Abbing
Hab versucht qui Procédure-Adresse sur tmprc et sur wTimerID (aktuelle Fassung) trop transfert. Beides cela gleiche Ergebniss...
ici qui Quellcodes:

source:
KompilierenMarqueSéparation
.386                   ; minimum processor needed for 32 bit
.model flat, stdcall   ; FLAT memory model & STDCALL calling
option casemap :none   ; set code to case sensitive
include masm32includewindows.inc
include masm32includeuser32.inc
include masm32includekernel32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.lib
include    D:PROGRAMMEmasm32includedebug.inc
includelib D:PROGRAMMEmasm32libdebug.lib
szText MACRO Name, Text:VARARG
LOCAL lbl
jmp lbl
Name db Text,0
lbl:
ENDM
m2m MACRO M1, M2
push M2
pop  M1
ENDM
return MACRO arg
mov eax, arg
ret
ENDM
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
TopXY PROTO   :DWORD,:DWORD
.data
szDisplayName db "Quellfenster mit Timer",0
CommandLine   dd 0
hWnd          dd 0
hInstance     dd 0
timer         dd 0
testit        db "Test",0
.code
start:
invoke GetModuleHandle, NULL ; provides the instance handle
mov hInstance, eax
invoke GetCommandLine        ; provides the command line address
mov CommandLine, eax
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax       ; cleanup & return to operating system
WinMain proc hInst     :DWORD,
hPrevInst :DWORD,
CmdLine   :DWORD,
CmdShow   :DWORD
LOCAL wc   :WNDCLASSEX
LOCAL msg  :MSG
LOCAL Wwd  :DWORD
LOCAL Wht  :DWORD
LOCAL Wtx  :DWORD
LOCAL Wty  :DWORD
szText szClassName,"Generic_Class"
mov wc.cbSize,         sizeof WNDCLASSEX
mov wc.style,          CS_HREDRAW or CS_VREDRAW
or CS_BYTEALIGNWINDOW
mov wc.lpfnWndProc,    offset WndProc      ; address of WndProc
mov wc.cbClsExtra,     NULL
mov wc.cbWndExtra,     NULL
m2m wc.hInstance,      hInst               ; instance handle
mov wc.hbrBackground,  COLOR_BTNFACE+1     ; system color
mov wc.lpszMenuName,   NULL
mov wc.lpszClassName,  offset szClassName  ; window class name
invoke LoadIcon,hInst,500    ; icon ID   ; resource icon
mov wc.hIcon,          eax
invoke LoadCursor,NULL,IDC_ARROW         ; system cursor
mov wc.hCursor,        eax
mov wc.hIconSm,        0
invoke RegisterClassEx, ADDR wc     ; register the window class
mov Wwd, 500
mov Wht, 350
invoke GetSystemMetrics,SM_CXSCREEN ; get screen width in pixels
invoke TopXY,Wwd,eax
mov Wtx, eax
invoke GetSystemMetrics,SM_CYSCREEN ; get screen height in pixels
invoke TopXY,Wht,eax
mov Wty, eax
invoke CreateWindowEx,WS_EX_OVERLAPPEDWINDOW,
ADDR szClassName,
ADDR szDisplayName,
WS_OVERLAPPEDWINDOW,
Wtx,Wty,Wwd,Wht,
NULL,NULL,
hInst,NULL
mov   hWnd,eax  ; copy return value into handle DWORD
invoke LoadMenu,hInst,600                 ; load resource menu
invoke SetMenu,hWnd,eax                   ; set it to main window
invoke ShowWindow,hWnd,SW_SHOWNORMAL      ; display the window
invoke UpdateWindow,hWnd                  ; update the display
StartLoop:
invoke GetMessage,ADDR msg,NULL,0,0         ; get each message
cmp eax, 0                                  ; exit if GetMessage()
je ExitLoop                                 ; returns zero
invoke TranslateMessage, ADDR msg           ; translate it
invoke DispatchMessage,  ADDR msg           ; send it to message proc
jmp StartLoop
ExitLoop:
return msg.wParam
WinMain endp
; #########################################################################
WndProc proc hWin   :DWORD,
uMsg   :DWORD,
wParam :DWORD,
lParam :DWORD

.if uMsg == WM_COMMAND

    .if wParam == 1000

        invoke SendMessage,hWin,WM_SYSCOMMAND,SC_CLOSE,NULL

    .elseif wParam == 1900

        szText TheMsg,"Assembler, Pure & Simple"
        invoke MessageBox,hWin,ADDR TheMsg,ADDR szDisplayName,MB_OK

    .endif

.elseif uMsg == WM_TIMER

    .if wParam!=111

        invoke SetTimer,hWnd,111,1000,wParam

    .endif

.elseif uMsg == WM_DESTROY

    invoke PostQuitMessage,NULL
    return 0

.endif

invoke DefWindowProc,hWin,uMsg,wParam,lParam
ret
WndProc endp
; ########################################################################
TopXY proc wDim:DWORD, sDim:DWORD
shr sDim, 1      ; divide screen dimension by 2
shr wDim, 1      ; divide window dimension by 2
mov eax, wDim    ; copy window dimension into eax
sub sDim, eax    ; sub half win dimension from half screen dimension
return sDim
TopXY endp
; ###################################################################
end start

but:
KompilierenMarqueSéparation
.386                   ; minimum processor needed for 32 bit
.model flat, stdcall   ; FLAT memory model & STDCALL calling
option casemap :none   ; set code to cas sensitive
include masm32includewindows.inc
include masm32includeuser32.inc
include masm32includekernel32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.lib
include    D:PROGRAMMEmasm32includedebug.inc
includelib D:PROGRAMMEmasm32libdebug.lib
szText MACRO nom, Text:VARARG
LOCAL lbl
jmp lbl
nom db Text,0
lbl:
ENDM
m2m MACRO M1, M2
push M2
pop  M1
ENDM
return MACRO arg
mov eax, arg
ret
ENDM
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
TopXY PROTO   :DWORD,:DWORD
.data
szDisplayName db "Zielfenster sans Timer",0
CommandLine   dd 0
hWnd          dd 0
hInstance     dd 0
timer         dd 0
testit        db "Test",0
fname         db "Quellfenster avec Timer",0
cname         db "Generic_Class",0
.code
start:
invoke GetModuleHandle, NULL ; provides le instance handle
mov hInstance, eax
invoke GetCommandLine        ; provides le command line address
mov CommandLine, eax
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
invoke ExitProcess,eax       ; cleanup & return to operating system
timerproc proc
invoke MessageBox,0,addr testit,addr testit,64
ret
timerproc endp
WinMain proc hInst     :DWORD,
hPrevInst :DWORD,
CmdLine   :DWORD,
CmdShow   :DWORD
LOCAL wc   :WNDCLASSEX
LOCAL msg  :MSG
LOCAL Wwd  :DWORD
LOCAL Wht  :DWORD
LOCAL Wtx  :DWORD
LOCAL Wty  :DWORD
szText szClassName,"Generic_Class"
mov wc.cbSize,         sizeof WNDCLASSEX
mov wc.style,          CS_HREDRAW or CS_VREDRAW
or CS_BYTEALIGNWINDOW
mov wc.lpfnWndProc,    offset WndProc      ; address of WndProc
mov wc.cbClsExtra,     NULL
mov wc.cbWndExtra,     NULL
m2m wc.hInstance,      hInst               ; instance handle
mov wc.hbrBackground,  COLOR_BTNFACE+1     ; system color
mov wc.lpszMenuName,   NULL
mov wc.lpszClassName,  offset szClassName  ; window class nom
invoke LoadIcon,hInst,500    ; icon ID   ; resource icon
mov wc.hIcon,          eax
invoke LoadCursor,NULL,IDC_ARROW         ; system cursor
mov wc.hCursor,        eax
mov wc.hIconSm,        0
invoke RegisterClassEx, ADDR wc     ; register le window class
mov Wwd, 500
mov Wht, 350
invoke GetSystemMetrics,SM_CXSCREEN ; get screen width dans pixels
invoke TopXY,Wwd,eax
mov Wtx, eax
invoke GetSystemMetrics,SM_CYSCREEN ; get screen height dans pixels
invoke TopXY,Wht,eax
mov Wty, eax
invoke CreateWindowEx,WS_EX_OVERLAPPEDWINDOW,
ADDR szClassName,
ADDR szDisplayName,
WS_OVERLAPPEDWINDOW,
Wtx,Wty,Wwd,Wht,
NULL,NULL,
hInst,NULL
mov   hWnd,eax  ; copy return value into handle DWORD
invoke LoadMenu,hInst,600                 ; load resource menu
invoke SetMenu,hWnd,eax                   ; set il to main window
invoke ShowWindow,hWnd,SW_SHOWNORMAL      ; display le window
invoke UpdateWindow,hWnd                  ; update le display
invoke FindWindow,addr cname,addr fname

.si eax!=0

    invoke SendMessage,eax,WM_TIMER,addr timerproc,addr timerproc

.endif

StartLoop:
invoke GetMessage,ADDR msg,NULL,0,0         ; get each message
cmp eax, 0                                  ; exit si GetMessage()
je ExitLoop                                 ; returns zero
invoke TranslateMessage, ADDR msg           ; translate il
invoke DispatchMessage,  ADDR msg           ; send il to message proc
jmp StartLoop
ExitLoop:
return msg.wParam
WinMain endp
WndProc proc hWin   :DWORD,
uMsg   :DWORD,
wParam :DWORD,
lParam :DWORD

.si uMsg == WM_COMMAND

    .si wParam == 1000

        invoke SendMessage,hWin,WM_SYSCOMMAND,SC_CLOSE,NULL

    .elseif wParam == 1900

        szText TheMsg,"Assembler, Pure & Simple"
        invoke MessageBox,hWin,ADDR TheMsg,ADDR szDisplayName,MB_OK

    .endif

.elseif uMsg == WM_DESTROY

    invoke PostQuitMessage,NULL
    return 0

.endif

invoke DefWindowProc,hWin,uMsg,wParam,lParam
ret
WndProc endp
; ########################################################################
TopXY proc wDim:DWORD, sDim:DWORD
shr sDim, 1      ; divide screen dimension by 2
shr wDim, 1      ; divide window dimension by 2
mov eax, wDim    ; copy window dimension into eax
sub sDim, eax    ; sub half win dimension à partir de half screen dimension
return sDim
TopXY endp
; ########################################################################
end start
 
20.05.2005  
 




CB
XP Pro SP2: selbes Resultat comment chez Frank.
 
XProfan 8/9.1, Win XP, AMD 64/3200
21.05.2005  
 



j'ai qui l'affaire la fois avec einer anderen Message et dedans eines lokalen Prozesses getestet. Dabei wird wirklich qui angegebene Adresse angesprungen.

Zum Glück allez cela alors doch pas so simple:
chacun Prozess hat oui (si je es richtig verstanden habe) sa privaten Adressbereich. une ermittelte Adresse bezieht sich alors oui toujours seulement sur den aktuellen Prozess. avec cela qui Prozess, den je attackieren veux, sais quelle Adresse il anspringen soll, wird on wohl quelque chose untersuchen, mappen et le calcul doit. dans dem Artikel ist oui aussi de einem Debugger qui discours...
 
21.05.2005  
 




Jörg
Sellmeyer
chez mir passiert gar nix.
Win98SE / XProfan9
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.05.2005  
 



allô Jörg...

peux aussi pas, Adresse paßt pas.
 
21.05.2005  
 




Frank
Abbing
Hi,

> peux aussi pas, Adresse paßt pas.

qui Adresse passt déjà. Habe cela überprüft. cela Sourceprogramm erhält réellement oui c'est ca qui Adresse. seulement biegt Windows beim installer des Timers sous XP qui Adresse um sur den Startpunkt des eigenen Programms. sous 98 wird qui Minuteur dagegen anscheinend gar pas gestartet.
 
21.05.2005  
 



allô Frank...

je vermute la fois, cela qui Adresse , qui on là bekommt, un virtuelle Adresse ist, qui toujours sur den aktuellen Prozess bezogen ist. (vois je cela richtig? avec deinen MASM Kenntnissen wirst du cela sur jedenfall besser savons comme je.) je vermute, cela on d'abord einmal qui reale Adrese qui Prtozedur im grenier avons doit. après pourrait on peut-être. qui erhaltene Adresse sur den trop attackierenden Prozeß umrechnen, dessen reale Speicheradresse on en supplément mais aussi seulement einmal connaître devrait. comment vois du cela?

ah oui..., qui Message EM_SETWORDBREAKPROC soll également en supplément genutzt volonté peut, fremden Code anzuspringen - avec qui läßt sich cela peut-être. besser testen.
 
21.05.2005  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

8.547 Views

Untitledvor 0 min.
Peter Max Müller19.10.2017
Donnie14.04.2013
Claus de Lieth08.02.2013
Daniel Mittermeier29.09.2012
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie