Partitie separata pentru Windows 7? Nu e nevoie.
23 ianuarie 09 10:13 | Bogdan si Razvan Hobeanu | 0 Comments   

La inceputul lui ianuarie Microsoft a facut public un nou beta al lui Windows 7, asa ca l-am descarcat si am zis sa mi-l instalez pe laptop. Problema era ca laptop-ul respectiv a venit preinstalat cu Windows Vista, cu o singura partitie configurata sa ocupe tot discul..

Nu doream sa renunt la Vista deoarece Windows 7 este totusi doar un beta. Asa ca m-am gandit ca voi avea nevoie de inca o partitie curata pe care sa-l instalez.

Continuarea aici:

http://www.hobeanu.com/roblog/?p=101

Cum sa scapi de securitatea din NTFS
14 ianuarie 09 11:11 | Bogdan si Razvan Hobeanu | 4 Comments   

Aveam nevoie zilele trecute sa copiem fisiere de pe un hard-disk mai vechi formatat cu NTFS care avea permisiile de securitate foarte restrictive. Era vorba de mii de fisiere si ar fi durat foarte mult ca sa aplic metoda clasica in acest caz: take ownership. Imaginati-va ce inseamna pentru sistem sa modifice pe rand permisiile a mii de fisiere. Problema era ca aveam nevoie rapid de datele respective.

Solutia a venit de la o metoda (pe care am descoperit-o acum ceva timp) de pacalire a securitatii din NTFS. Ideea de baza a aparut citind MSDN-ul, mai specific aceasta precizare referitoare la parametrul dwDesiredAccess al functiei CreateFile:

"If this parameter is zero, the application can query certain metadata such as file, directory, or device attributes without accessing that file or device, even if GENERIC_READ access would have been denied." 

Ceea ce a iesit in final este un driver-filtru peste sistemul de fisiere care intermediaza deschiderea fisierului printr-o discutie de genul:

Aplicatie: Vreau drepturi de scriere pentru fisierul restrictionat.doc. Ce spui?

Driver-ul nostru catre sistemul de fisiere: Aplicatia vrea drepturi de scriere pentru fisierul restrictionat.doc

Sistemul de fisiere catre driver-ul nostru: Permisiile de securitate setate pe fisierul respectiv nu-mi permit sa fac acest lucru. Raspunsul este NU.

Driver-ul nostru catre sistemul de fisiere: Aplicatia vrea zero drepturi (dwDesiredAccess = 0) pentru fisierul restrictionat.doc

Sistemul de fisiere catre driver-ul nostru: Ok. Pot permite acest lucru. Raspunsul este DA.

Driver-ul nostru catre aplicatie: Sistemul de fisiere a spus DA.

Astfel pacalim sistemul de fisiere sa ne dea ok-ul pentru o anumita cerere, punand intrebarea la care stim ca sistemul de fisiere va raspunde intotdeauna DA. Deoarece sistemul de fisiere raspunde cu DA, sistemul de operare permite deschiderea handle-ului catre fisierul restrictionat.

In mod intuitiv ati putea crede ca handle-ul deschis are zero drepturi de acces, deci este inutil. Totusi sistemul de operare va crea un handle cu drepturile cerute initial de aplicatie. Folosind aceasta metoda puteti accesa orice fisier, indiferent de permisiile de securitate setate pentru el. Partea si mai frumoasa este ca tot codul din driver care implementeaza aceasta metoda are doar 3 linii. Nu este vorba de hook-uri complicate sau functii nedocumentate. Totul se realizeaza cu API-uri documentate.

Pentru a vedea o demonstratie despre cum lucreaza driver-ul respectiv si mai multe detalii tehnice, puteti accesa post-ul in limba engleza ce contine un video si un document PDF:

http://www.hobeanu.com/blog/bypassing-file-system-security-in-windows/

Aceasta metoda nu este considerata o gaura de securitate deoarece necesita incarcarea unui driver. In momentul in care un atacator are drepturi de a executa cod in kernel mode, sistemul este considerat compromis.

Un gandac in Windows Home Server
01 iulie 08 03:48 | Bogdan si Razvan Hobeanu | 3 Comments   

Lucram in perioada aceasta la un proiect ce implica un driver care creeaza discuri virtuale. Continutul discului virtual este stocat intr-un fisier, iar sarcina driver-ului este de a prezenta continutul acestui fisier ca un disc.

Testand driver-ul pe Windows Home Server cu Driver Verifier activat, sistemul s-a blocat dupa formatarea discului, afisand un binecunoscut ecran albastru. Pentru a identifica sursa erorii, am recreat conditiile aparitiei bug-ului cu debugger-ul (WinDbg) atasat la sistemul de operare.

Continuarea aici: http://www.hobeanu.com/roblog/?p=91

Technorati tags: ,

Filed under: ,
Dezvoltare software in Facultatea de Matematica si Informatica
27 iunie 08 12:34 | Bogdan si Razvan Hobeanu | 0 Comments   

Inspirat si dezamagit in acelasi timp de ceea ce spune Vlad aici si aici, mi-am adus aminte ce mi-a fost predat in facultate legat de dezvoltare software, intr-un curs dedicat acestui subiect. In acelasi timp mi-am pus intrebarea cum se poate ca in aceeasi facultate, la aceeasi materie, doi profesori sa aiba cursuri total diferite.

Continuarea aici: http://www.hobeanu.com/roblog/?p=90

Technorati tags:

Filed under:
Ce cred ca ar mai trebui predat in liceu/facultate
22 iunie 08 05:05 | Bogdan si Razvan Hobeanu | 5 Comments   

In liceu si in facultate am intalnit profesori care predau informatica intr-un mod specific matematicii. Aproape la fiecare problema in liceu aparea un tipar: numarul de elemente dintr-un vector era notat cu m sau n, variabila cu care parcurgeam ciclul era i sau j sau k s.a.m.d. Asa te apucai si scriai algoritmul.

Scurt si cuprinzator?

Apoi il citeai si incercai sa intelegi ce ai scris acolo, sa-ti explici cum functioneaza algoritmul si, eventual, de ce ai scris asa si nu altfel. In momentul respectiv, creierul facea un pas in plus: descifrarea a ce inseamna n, ce inseamna i sau k. Poate nu pare mare lucru sa tii minte trei nume de variabile si sensul atasat fiecaruia, dar cand te apuci sa scrii o expresie care le foloseste pe toate trei in acelasi timp, lucrurile parca se complica putin.

Continuarea aici: http://www.hobeanu.com/roblog/?p=89

Un Microsoft mai binevoitor
24 februarie 08 08:06 | Bogdan si Razvan Hobeanu | 0 Comments   

De cate ori nu v-ati frustrat cautand sa intelegeti cum functioneaza ceva nedocumentat din Windows? Probabil era o informatie de care aveati nevoie pentru a dezvolta un proiect sau o facilitate, sau pentru a da de urma unui bug urat.

Continuarea aici : http://www.hobeanu.com/roblog/?p=87

Unde e informatia?
23 ianuarie 08 02:55 | Bogdan si Razvan Hobeanu | 0 Comments   

Ca multi altii, folosesc mult Internet-ul pentru documentare si de multe ori imi salvez fisiere Word, PowerPoint sau PDF-uri pentru a ma uita mai tarziu peste ele. De multe ori, raman acolo unde le-am lasat deoarece nu am acces rapid la informatia din ele. Problema asta cred ca apare din cauza ca nu pot cauta usor in ele. Probabil primul sfat pe care mi l-ar da cineva ar fi acela de a-mi instala o solutie de Desktop Search, caci am de unde alege (Copernic, Google, Microsoft etc.). Dar ce ma fac daca vreau sa caut informatia de pe mai multe calculatoare si sa vad rezultatul cautarii unificat?

Continuarea aici: http://www.hobeanu.com/roblog/?p=85

Facultate: fac sau nu fac? Unde? La ce sa ma astept?
23 ianuarie 08 02:54 | Bogdan si Razvan Hobeanu | 0 Comments   

Malex intreba aici ce sfaturi avem pentru un proaspat absolvent de liceu care se gandeste sa dea la facultate. Am fi putut raspunde cu un singur comentariu, dar am considerat posibilitatea ca aceasta perspectiva sa-i ajute si pe altii asa ca am dedicat un post. Inainte de a incepe, mentionez ca aceasta este doar o parere personala.

Continuarea aici: http://www.hobeanu.com/roblog/?p=84

Documentatia pentru dezvoltatorii de drivere vine lunar
23 ianuarie 08 02:53 | Bogdan si Razvan Hobeanu | 0 Comments   

Am observat de ceva timp o initiativa laudabila a celor de la Microsoft : actualizari lunare pentru documentatia din Windows Driver Kit. Pana acum ceva timp, trebuia sa astepti un nou release de DDK (sau WDK cum se numeste mai nou) pentru a putea obtine documentatia actualizata. Bineinteles ca actualizarile apareau prima oara pe MSDN online, dar prefer sa am acces rapid la documentatie chiar si cand Internet-ul nu merge cum trebuie.

continuarea aici: http://www.hobeanu.com/roblog/?p=82

O vara la Microsoft
29 septembrie 07 04:00 | Bogdan si Razvan Hobeanu | 1 Comments   

Vara asta am fost intr-un internship de trei luni la Microsoft in Redmond, Washington. Ca intern la Microsoft, ai doua optiuni: SDE sau SDET.

Continuarea aici: http://www.hobeanu.com/roblog/?p=78

Technorati tags:

Filed under:
Cum imi depanez aplicatia pe alta versiune de Windows?
14 iunie 07 07:58 | bhobeanu | 0 Comments   

Aveam o aplicatie care rula perfect pe sistemul meu cu Windows Vista, dar nu si pe Windows XP.  Cum sa fac sa vad de ce nu merge? Prima solutie evidenta: o masina virtuala cu Windows XP si aplicatia rulata in ea. Dar ce te faci atunci cand vrei sa faci si putin debugging pentru a vedea fix la ce linie din codul sursa crapa aplicatia ta?

Continuarea aici: http://www.hobeanu.com/roblog/?p=62

Cum sa “convertesc” rapid cod din C in ASM
15 mai 07 09:19 | Bogdan si Razvan Hobeanu | 0 Comments   
Cititi aici: http://www.hobeanu.com/roblog/?p=51
VMWare 6 si USB 2.0
14 mai 07 10:55 | Bogdan si Razvan Hobeanu | 1 Comments   
Cititi aici: http://www.hobeanu.com/roblog/?p=49
Cum ma ajuta Vista chiar daca nu am Vista instalat
12 mai 07 06:21 | Bogdan si Razvan Hobeanu | 0 Comments   
Cititi aici: http://www.hobeanu.com/roblog/?p=39
Seminar: Tehnologii de stocare de date si sisteme distribuite
25 aprilie 07 04:13 | Bogdan si Razvan Hobeanu | 0 Comments   

Cititi aici: http://www.hobeanu.com/roblog/?p=37

Blog-ul s-a mutat
25 aprilie 07 04:08 | Bogdan si Razvan Hobeanu | 0 Comments   

Salut tuturor,

Incepand de azi, blog-ul nostru se poate citi la adresa: www.hobeanu.com/roblog. Pentru cei care ne cititi din agregatoare, iata doua optiuni pt RSS:

http://feeds.feedburner.com/TwindowsInternals sau http://hobeanu.com/roblog/?feed=rss2

Ne vedem la noua adresa!

Bogdan si Razvan

Technorati tags:

Filed under:
Delphi si .NET
22 decembrie 06 02:17 | bhobeanu | 8 Comments   

Nick Hodges, unul din oamenii importanti din echipa ce dezvolta Delphi la Borland (CodeGear mai nou) are un articol pe blog-ul personal in care explica de ce folosesc ei .NET pentru a crea IDE-ul de Delphi. Este o discutie interesanta, deoarece multi apreciau "the original Delphi concept (robust, integrated, independent)" dupa cum mentioneaza un cititor intr-un comentariu.

Recunosc ca si pentru mine Delphi a fost cel mai bun mod de a incepe programarea Win32 (nu stiam C pe atunci). Cand am renuntat la Pascal, am inceput sa ma uit in stanga si in dreapta dar C++ Builder deja o apucase pe un drum mort asa ca singura varianta a fost Visual C++ si (eventual) MFC pentru aplicatii Win32.

 Post-ul este aici:

 http://blogs.codegear.com/nickhodges/archive/2006/12/14/30532.aspx

Daca aveti rabdare sa cititi tot, cititi si comentariile. Sunt foarte interesante. Pentru cei care citesc mai multe pe acolo, am o intrebare:

Ce parere aveti voi in legatura cu acest lucru? Cati dintre voi mai sunt "native Win32" si cati sunt convinsi ca nu mai avem nevoie sa scriem cod nativ (pentru ca avem JIT) si ca totul trebuie sa mearga on top of .NET?

Cum ma ajuta un tool bun sa ma uit la TV
14 decembrie 06 04:14 | Bogdan si Razvan Hobeanu | 10 Comments   

Mi-am reinstalat azi tunerul TV si am vrut sa iau si ultima versiune de software (3.1.1.2) de pe site-ul companiei producatoare. Am facut download iar la prima rulare aplicatia a crapat.

 

Pentru ca insistam sa ma uit la TV, am decis sa investighez problema Smile. M-am gandit la ce tool m-ar putea ajuta mai mult in situatia de fata si m-am oprit la IDA pe care l-am luat de aici . Apoi am deschis fisierul cu pricina: C:\Program Files\WinFast\WFTVFM\WFTV.exe si l-am lasat pe IDA sa-l analizeze.


Apoi am pornit debugger-ul din IDA. La scurt timp a ajuns la codul cu pricina si a dat un warning:

Ducandu-ma la cod am observat ca dereferentia un pointer NULL. Dupa cum se vede, incerca sa acceseze membrul unei structuri care nu era alocata (registrul EDX avea valoarea zero si se incerca accesarea zonei de la adresa EDX+4)


 

Mai departe am vrut sa aflu ce e cu structura respectiva. Am vazut ca eroarea are loc in apelul functiei fgetc, datorita parametrului stream care este NULL si a carui valoare era copiata in EDX. De aici am banuit ca se incearca citirea dintr-un fisier care nu a fost deschis. Pentru a confirma banuiala am apelat tot la IDA. M-am uitat pe stiva pentru a vedea cine este apelantul lui fgetc si pentru a vedea de unde vine argumentul eronat.


Asa ca am dat dublu-click pe adresa apelantului (47B48Ah) pentru a vedea codul. 

 

Am vrut sa vad apoi cum se ajunge cu executia aici asa ca am urmat calea indicata de a doua sageata albastra. Am ajuns asadar la locul unde s-a incercat deschiderea fisierului deci banuiala era confirmata. Se incerca deschiderea fisierului wincdl.cfg.

 

Uitandu-ma pe codul dezasamblat am vazut ca nu se facea vreo verificare a rezultatului apelului catre fopen. In concluzie, in cazul in care deschiderea esueaza (fopen intoarce NULL), cazul nu este tratat si se merge mai departe cu un pointer NULL. Pentru a verifica aceasta, m-am uitat la rezultatul intors de fopen (stocat in registrul EAX). S-a dovedit a fi NULL, deci deschiderea fisierului a esuat.

 

M-am uitat in directorul aplicatiei si am observat ca fisierul lipsea asa ca am decis sa creez un fisier gol cu numele respectiv si sa rulez din nou aplicatia. Surpriza! Aplicatia a rulat fara probleme!

Am observat cu aceasta ocazie inca o data cat de importante sunt tratarea erorilor si testarea in ciclul de dezvoltare al unui produs software. Am anuntat compania producatoare si voi reveni cu un update in cazul in care primesc un raspuns.

In final, ii multumesc lui IDA pentru ca datorita acestui soft minunat acum ma pot uita la TV fara probleme :) 

De ce nu merg anumite site-uri
18 noiembrie 06 07:21 | Razvan Hobeanu | 5 Comments   

In reteaua noastra de acasa avem conexiunea Internet partajata intre mai multe calculatoare folosind Internet Connection Sharing. Astfel, eu am access la Internet prin conexiunea partajata a lui Bogdan. Intr-o zi am observat ca browsing-ul pe anumite site-uri mergea greoi sau deloc. Am verificat si de pe alt calculator din retea si am observat ca problema aparea numai la mine.

Cauza era o incompatibilitate de MTU intre calculatorul meu si gateway-ul prin care aveam access la Internet (calculatorul lui Bogdan). Se pare ca valoarea implicita folosita de Windows pentru MTU nu asigura un transfer bun al pachetelor prin interfata de retea cu Bogdan (Local Area Connection in cazul meu).

Pentru a rezolva problema am gasit un articol salvator care descrie solutia pentru Windows 2000/XP si Windows 98/Me. Articolul arata cum se poate gasi experimental o valoare MTU buna (care sa asigure comunicarea fara probleme intre calculatorul meu si gateway) si cum sa o setezi apoi ca parametru in Registry pentru interfata de retea cu probleme.

Recent am instalat Vista intr-o masina virtuala si m-am lovit de aceeasi problema. Am gasit la fel o valoare MTU buna, dar nu stiam cum sa o setez deoarece cheile din Registry ce tin de setarea respectiva s-au schimbat pe Vista. Pentru a rezolva si pe Vista am facut asa:

 1. Am deschis un Command Prompt ca Administrator (deoarece schimbarea parametrilor interfetei de retea necesita niste privilegii de securitate pe care nu le aveam).

2. Am rulat comanda netsh interface ipv4 show subinterfaces pentru a vedea lista interfetelor de retea.

3. Pentru a seta valoarea MTU la valoarea gasita experimental (1460), am rulat comanda netsh interface ipv4 set subinterface "Local Area Connection" mtu=1460 store=persistent 

(click pentru a mari imaginea)

Dupa ce am facut modificarea n-am mai avut probleme cu browsing-ul site-urilor respective.

Technorati tags: ,

Filed under: ,
Cum pornesc la drum in scrierea de drivere... folosind Visual Studio
03 octombrie 06 12:39 | bhobeanu | 3 Comments   

Acum cateva zile un prieten ma intreba cum poate sa scrie repede un driver simplu. I-am explicat atunci ca trebuie sa faca download la DDK sa si-l instaleze, apoi sa ia un sample de acolo, sa intre in mediul de build din linie de comanda si sa dea build. Din cate am vazut pe fata lui, nu prea i-a suras ideea.

Zilele acestea am dat peste un tool care ar putea sa-i readuca zambetul pe buze. E vorba despre un wizard pentru Visual Studio care poate genera rapid un driver simplu si il si poate compila. Este vorba despre DDKWizard  ce se foloseste de scriptul DDKBUILD. Spre deosebire de alte wizard-uri similare, acesta foloseste compilatorul din DDK si nu acela din Visual C++.

Pe pagina autorului gasiti pentru descarcare un setup al lui DDKWizard ce nu contine insa DDKBUILD, asadar acesta trebuie descarcat separat. Va recomand sa cititi manualul PDF (nu are decat cateva pagini) pentru a intelege clar cum instalati DDKWizard.

Dupa instalare si configurare nu ramane decat sa intrati in Visual Studio si sa creati un nou Driver Project. 

Parca e mai usor sa lucrezi cu mediul cu care esti obisnuit decat sa lucrezi in Notepad de exemplu si apoi sa intri in linie de comanda si sa dai build si sa astepti sa vezi la ce linii ai erori iar apoi sa te intorci in editorul de texte si sa rezolvi liniile respective.

Ce pare mai atractiv? Un build normal cu mediul de build din DDK...

 

 sau sa lucrezi direct cu Visual Studio?

 

(click pe poze pentru a le mari) 

Technorati tags: ,

Filed under: ,
Ce limbaj de programare sa invat?
19 septembrie 06 12:01 | bhobeanu | 10 Comments   

Am vazut in multe randuri colegi de facultate care gandesc numai in limbaje. Dezvoltarea profesionala inseamna pentru multi invatarea cator mai multe limbaje, de preferinta "ce se cere pe piata".

Personal nu impartasesc aceasta opinie si consider un limbaj de programare doar o unealta. In cativa ani limbajul de programare cu care lucrezi se poate schimba insa ceea ce ar trebui sa ramana sunt conceptele.

De aici vin si multe discutii de genul: "de ce nu ma invata la facultate Java, doar imi cere sa stiu". De multe ori limbajul este oferit ca suport pentru un anumit curs si se pune accent pe intelegerea conceptelor prezentate de cursul respectiv, limbajul fiind considerat ceva ce se poate invata acasa.

Pentru cei ce au dilema alegerii unui anumit limbaj de programare, un recent articol din eWeek propune o lista de 10 limbaje de programare din care sa alegeti acum.

 Articolul este aici

Technorati tags: ,

Filed under: ,
S-a lansat Windows Academic Program v1
03 august 06 12:35 | Bogdan si Razvan Hobeanu | 6 Comments   

Desi majoritatea studentilor sunt in vacanta (inclusiv noi daca priviti activitatea de pe blog din ultima vreme), avem o veste foarte buna pentru ei: s-a lansat Windows Academic Program v1. Asta inseamna:

  • acces la super documentatie legata de sisteme de operare si Windows in particular
  • puteti sa vedeti cum arata codul sursa al kernel-ului de Windows, sa-l studiati si sa-i aflati cele mai adanci secrete. Isn't that sooo cool?
  • puteti realiza/contribui la proiecte faine legate de sisteme de operare

Asa ca din toamna cum ajungeti in facultati, intrebati-va profesorii mai multe despre Windows Academic Program si/sau lasati-ne un mesaj aici.

Todi vorbeste cel mai bine despre asta, aici.

Technorati tags:

Filed under:
MASM 8.0 gratuit la download
10 iunie 06 10:57 | bhobeanu | 4 Comments   
De saptamana aceasta Microsoft Macro Assembler 8.0 se poate descarca gratuit de pe site-ul Microsoft. Pentru a-l putea instala, aveti nevoie ca Visual C++ Express Edition sa fie instalat (alta varianta nu vrea la instalare). Veti putea folosi Visual C++ Express pentru editare si debugging al programelor scrise in ASM.

Asadar, daca aveti vreun curs in care studiati limbajul de asamblare sau il folositi ca suport la laborator, puteti sa considerati MASM 8.0 + Visual C++ Express Edition o alternativa buna la lucrul cu batranul TASM in linie de comanda si debugging cu TD (asa cum am auzit ca se lucreaza momentan in majoritatea universitatilor de la noi).

Il puteti descarca de aici
Presentation Manager vs. Presentation Foundation
08 iunie 06 12:19 | Bogdan si Razvan Hobeanu | 3 Comments   

Ce mai au in comun cele doua denumiri din titlu in afara de primul cuvant? Amandoua au marcat un salt major al interfetei grafice pentru PC.

In comunicatul de presa ce anunta pe 2 aprilie 1987 aparitia lui Microsoft OS/2 1.0 se mentiona ca interfata grafica a acestuia se va numi Presentation Manager. GUI-ul promis avea sa-si faca aparitia abia in noiembrie 1988 cu lansarea lui OS/2 1.1. O inovatie in materie de interfata grafica la vremea aceea, Presentation Manager a influentat felul in care urma sa arate Windows 3.0, lansat 2 ani mai tarziu.

OS/2 avea mai tarziu sa se metamorfozeze in NT, arhitectura din care au evoluat Windows 2000, XP, 2003 si acum Vista. Noul sistem de operare va marca un nou salt in ceea ce priveste interfata grafica, prin mult anuntatul Windows Presentation Foundation.

Mai jos puteti face o comparatie intre cele doua:

Presentation Manager Presentation Foundation
  

Oare cum se va numi the next big thing in materie de interfete grafice dupa Presentation Foundation? Oare vor fi mai originali in alegerea numelui decat pana acum?

Technorati tags:

Filed under:
Cat de tare trebuie sa fie calculatorul meu ca sa pot rula Windows XP?
15 aprilie 06 09:35 | Bogdan si Razvan Hobeanu | 7 Comments   
Desi Microsoft spune ca Windows XP nu va merge pe un PC cu un procesor mai slab de 233 MHz  si cu mai putin de 64 MB of RAM, iata ca Windows-ul se incapataneaza sa-i contrazica.

Technorati tags:

Filed under:
More Posts Next page »