asm i C++
10 отговора
673 прегледа
asm i C++
nqkoi moje li da mi kaje kakvo pravi asm koda ili o6te po dobre kakuv e ekvivalenta mu v C++ , blagodarq predvaritelno
-----------------------------------------------------------------------------------------------
s = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0 );
bind( s, (LPSOCKADDR)&srv, sizeof( srv ) );
listen( s, 5 );
__asm
{
push ebx
mov ebx, s
}
s = accept( s, NULL, NULL );
__asm
{
push ebx
call DWORD PTR [closesocket]
pop ebx
}
-----------------------------------------------------------------------------------------------
s = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0 );
bind( s, (LPSOCKADDR)&srv, sizeof( srv ) );
listen( s, 5 );
__asm
{
push ebx
mov ebx, s
}
s = accept( s, NULL, NULL );
__asm
{
push ebx
call DWORD PTR [closesocket]
pop ebx
}
Re: asm i C++
доста извратен начин да не ползваш една временна променлива...
s = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0 );
bind( s, (LPSOCKADDR)&srv, sizeof( srv ) );
listen( s, 5 );
SOCKET s1 = s;
s = accept( s, NULL, NULL );
closesocket(s1);
===
а до колкото разбирам, почва да слуша, приема точно една конекция, и спира да слуша...
s = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0 );
bind( s, (LPSOCKADDR)&srv, sizeof( srv ) );
listen( s, 5 );
SOCKET s1 = s;
s = accept( s, NULL, NULL );
closesocket(s1);
===
а до колкото разбирам, почва да слуша, приема точно една конекция, и спира да слуша...
Незнам дали е извратено или изтънчено!
но asm кода прави това:
int newsock = accept(sock,0,0);
closesocket(sock);
мерси , помогнахте ми много
int newsock = accept(sock,0,0);
closesocket(sock);
мерси , помогнахте ми много
Re: Не е извратено, а изтънчено!
ами можещ да си подадеш оставката като практикуващ security expert...
направих си труда да потърся в google, и самия автор на exploita пише следното:
[линк]
" i just didnt want to use an extra variable
basically, it stores the server socket in ebx, then once it has accepted a connection, closes the server socket"
така че, ти си практикуващ празноприказкоговоряч(tm) според мен.
направих си труда да потърся в google, и самия автор на exploita пише следното:
[линк]
" i just didnt want to use an extra variable
basically, it stores the server socket in ebx, then once it has accepted a connection, closes the server socket"
така че, ти си практикуващ празноприказкоговоряч(tm) според мен.
Напълно си прав!
Няма да си подам оставката, а ще продължа да се уча.
Аз обичам да греша, кефя се, чувствам се жив и пулсиращ така...и продължавам да осъзнавам. Обичам да правя грешки, наистина :)
[линк]
Аз обичам да греша, кефя се, чувствам се жив и пулсиращ така...и продължавам да осъзнавам. Обичам да правя грешки, наистина :)
[линк]
Re: Напълно си прав!
чувствам се жив и пулсиращ така...и продължавам да осъзнавам
huh?
huh?
Интересно
Интересно е, че тоя явно си е дал зор да погледне кода на accept()
По принцип ebx не е от регистрите, който се запазва задължително във функциите (също както е eax), т.е. след излизане от функцията няма гаранция, че в ebx ще има същата стойност, каквато е имало при влизането.
В началото на accept() обаче има push ebx, така че са му вързани гащите с това. Друг е въпроса, че MS при първия ServicePack могат да променят това без функцията да се държи по-различно, т.е. да променят ebx в тялото на accept(). Тогава със сигурност тоя трик няма да сработи.
По принцип ebx не е от регистрите, който се запазва задължително във функциите (също както е eax), т.е. след излизане от функцията няма гаранция, че в ebx ще има същата стойност, каквато е имало при влизането.
В началото на accept() обаче има push ebx, така че са му вързани гащите с това. Друг е въпроса, че MS при първия ServicePack могат да променят това без функцията да се държи по-различно, т.е. да променят ebx в тялото на accept(). Тогава със сигурност тоя трик няма да сработи.
Re: Интересно
По принцип ebx не е от регистрите, който се запазва задължително във функциите
Не е вярно това.
Уф що ме карате на стари години да си припомням асм....
In addition, by using EBX, ESI or EDI in inline assembly code, you force the compiler to save and restore those registers in the function prologue and epilogue
---
а като за финал тва е толкова тъпо, та дрънка - не съм гледал, ама сигурно генерирания код от корумпилатора е съшия, ако не и по-добър...
Не е вярно това.
Уф що ме карате на стари години да си припомням асм....
In addition, by using EBX, ESI or EDI in inline assembly code, you force the compiler to save and restore those registers in the function prologue and epilogue
---
а като за финал тва е толкова тъпо, та дрънка - не съм гледал, ама сигурно генерирания код от корумпилатора е съшия, ако не и по-добър...
Редактирано от Questor на