;Cueclub PL CDCheck , by TimSucker narzedzia: SoftIce, W32Dasm Cueclub kopiuje sie caly na twardy dysk, wiec po co mu CD. W SI dajemy pulapke na GetDriveType :0042395B 8B44240C mov eax, dword ptr [esp+0C] :0042395F 8D4C2414 lea ecx, dword ptr [esp+14] :00423963 51 push ecx :00423964 8D54241C lea edx, dword ptr [esp+1C] :00423968 68B0C94800 push 0048C9B0 :0042396D 52 push edx :0042396E 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"CD" | :00423970 68C0AC4500 push 0045ACC0 :00423975 50 push eax * Reference To: ADVAPI32.RegQueryValueExA, Ord:017Bh /* tu sprawdza wpis w rejestrze. pobiera wartosc pola CD, czyli sciezke do CD. zmieniamy w rejestrze ten wpis tak, zeby wskazywal na biezacy katalog*/ :00423976 FF1504E04300 Call dword ptr [0043E004] :0042397C 85C0 test eax, eax :0042397E 7565 jne 004239E5 :00423980 68B0C94800 push 0048C9B0 * Reference To: KERNEL32.GetDriveTypeA, Ord:0104h /* tutaj jestesmy*/ :00423985 FF15B0E04300 Call dword ptr [0043E0B0] :0042398B 83F805 cmp eax, 00000005 :0042398E 754E jne 004239DE :00423990 6A00 push 00000000 :00423992 6A00 push 00000000 :00423994 6858C94800 push 0048C958 :00423999 685CC94800 push 0048C95C :0042399E 6860C94800 push 0048C960 :004239A3 6A40 push 00000040 * Possible StringData Ref from Data Obj ->"NotInstalled" | :004239A5 687CA64500 push 0045A67C :004239AA 68B0C94800 push 0048C9B0 :004239AF C605B2C948005C mov byte ptr [0048C9B2], 5C :004239B6 C605B3C9480000 mov byte ptr [0048C9B3], 00 * Reference To: KERNEL32.GetVolumeInformationA, Ord:0177h /* tutaj pobierane sa informacje o woluminie: nazwa i numer seryjny. w 0045A67C bedzie znajdowala sie nazwa woluminu*/ :004239BD FF151CE14300 Call dword ptr [0043E11C] :004239C3 8B0D60C94800 mov ecx, dword ptr [0048C960] . . . * Possible StringData Ref from Data Obj ->"CUECLUB" :004239F1 BEA0AC4500 mov esi, 0045ACA0 * Possible StringData Ref from Data Obj ->"NotInstalled" /*do eax wrzucana jest nazwa woluminu, jesli takowa udalo sie pobrac. zmieniajac wpis CD w rejestrze na bierzacy katalog, jestesmy pewni ze ta nazwa sie tu nie znajdzie:) wiec trzeba zmiec ta linijke na: mov eax, 0045ACA0 czyli do eax wrzucamy to co jest w esi*/ :004239F6 B87CA64500 mov eax, 0045A67C /*nastepnie wykonywana jest petla porownujaca te dwa napisy. oczywiscie po wczesniejszej zmianie napisy sa takie same*/ * Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00423A19(C) | :004239FB 8A10 mov dl, byte ptr [eax] :004239FD 8ACA mov cl, dl :004239FF 3A16 cmp dl, byte ptr [esi] :00423A01 751C jne 00423A1F :00423A03 84C9 test cl, cl :00423A05 7414 je 00423A1B //sprawdza czy w cl jest 0 czyli koniec napisu. w si jest jz. :00423A07 8A5001 mov dl, byte ptr [eax+01] :00423A0A 8ACA mov cl, dl :00423A0C 3A5601 cmp dl, byte ptr [esi+01] :00423A0F 750E jne 00423A1F :00423A11 83C002 add eax, 00000002 :00423A14 83C602 add esi, 00000002 :00423A17 84C9 test cl, cl :00423A19 75E0 jne 004239FB ok, gra sie teraz uruchamia i wczytuje grafike i dzwieki, ale po chwili znow to samo - wywala zeby wlozyc plyte:( skurczybyk musi cos czytac z plytki bo po wlozeniu innej tez jest to samo. odpalamy w32dasm i sprawdzamy stringi. jest tam cos z cueclub.ico. znajdujemy to miejsce. taaaa, jest wywolywana funkcja CreateFileA, ktora otwiera ten pliczek. kod ten jest wykozystywany przez inne fragmenty programu wiec nie zmieniam go, tylko w zmieniam nazwe pliku w pamieci na cueclub.exe i teraz wszystko gra i buczy. TimSucker - logospam@poczta.fm - 12.06.01