Forum | | | | | 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???
|
| | | | |
| | | 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? |
| | | | |
| | | 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. |
| | | | |
| | 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... |
| | | | |
| | | Selbes chez mir: xph,xpp!
Bestimmt irgend solch un kumulatives Update
Vorrausgesetzt naturellement Franks Demo entspricht dem Behaupteten.
Salve, |
| | | | |
| | 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
|
| | | | |
| | CB | XP Pro SP2: selbes Resultat comment chez Frank. |
| | | | |
| | | 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... |
| | | | |
| | 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. |
| | | | |
| | 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. |
| | | | |
| | | 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. |
| | | | |
|
répondreOptions du sujet | 8.547 Views |
Themeninformationencet Thema hat 5 participant: |
|