Skocz do zawartości

jabools

Użytkownicy
  • Postów

    13
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez jabools

  1. Witam :)

     

    Pracuję nad Androidowym multitoolem (tak do własnych potrzeb i z czystej zabawy) w C#. Piszę obecnie moduł rozdzielania obrazów boot.img i recovery.img.

    Ogólna struktura pliku boot.img jest mi znana, więc postanowiłem sobie (po analizie obrazów boot.img) rozdzielać ten plik na zasadzie szukania charakterystycznych bajtów, następnie kalkulowania rozmiaru kernela czy ramdiska i przekalkulowaniu ich na wielokrotności page size.

     

    Obecnie ten moduł działa w ten sposób (uwzględniam standardowe obrazy, czyli header, kernel, ramdisk):

    - (offset = 0) Szukam android magic, jeżeli nie ma go w odległości 255 bajtów to przerywam przetwarzanie pliku.

    - Jeżeli jest, szukam ciągu 4x "0x00, 0x00, 0xA0, 0xE1" - nazwę go sobie kernel_offset. Wszystko przed tym to header.

    - Page size = kernel_offset - android magic offset.

    - Lecę sobie przez kernela w poszukiwaniu 16 bajtów zer (struktura tych plików, przynajmniej 3 różnych telefonów które przeanalizowałem, opiera się o wielokrotności 16 bajtów). Do bufora ładuję po 16 bajtów, które są sprawdzane.

    - Jeżeli znajdę "bunch of zeroes", ustalam rozmiar kernela i przeliczam go na kernel_pages [kernel_pages = (kernel_size + header_size - 1) / header_size]

    - Po wyliczeniu kernel_pages, zapisuję kernela do pliku (plik o rozmiarze kernel_pages * page_size).

    - Całą resztę pliku (bo kernel pages kończy się w miejscu, gdzie jest GZ magic, czyli 1F 8B) zapisuję do archiwum ramdisk.

     

    I wszystko byłoby fajnie, bo działa pięknie dla obrazów np. HTC Sensation, czy LG Optimus L5. Ale przy Samsungu Galaxy S4 jest problem, gdyż w środku kernela jest przerwa (występuje tam 16 bajtów zer, jakieś 3/4 razy). Próbowałem to rozwiązać na zasadzie, że jeżeli znajdę zera, to sprawdzam czy za nimi jest już GZ magic, czy jakieś inne dane. Jeżeli gz magic, ustawiam offset ramdisku, jeżeli inne dane, to lecę przez nie w poszukiwaniu zer i znów sprawdzam czy za zerami jest gz magic. I tak w kółko. Z tym, że pętla nie chce poprawnie działać, bądź ja nie potrafię jej dobrze oprogramować.

     

    Wrzucę może lepiej kod, mam nadzieję, że coś z niego będzie wiadomo

    KOD

     

    Byłby w stanie ktoś pomóc?

    Z góry dzięki :)

  2. No podziwiam Cię dyzmek, że przesz do przodu. Ale zamiast starać się tworzyć co chwilę inne projekty, może skup się na tym, żeby w to się wygodnie i przyjemnie grało. Już pieprzyć tę grafikę, nie każdy się grafikiem urodził, ale jak poruszam się postacią i blokuję się na każdej kolejnej platformie/każdym bloku, to na prawdę odrzuca to od gry. Popracuj najpierw nad jakąś "mechaniką" czy czymś, a potem skup się na "fabule" i innych cudach.

  3. Czyszczenie cache nic nie dało. Właśnie tak samo myślałem, że coś z uprawnieniami może być nie tak. Próbowałem przerzucać wszystko na inną partycję (nie systemową) i wciąż nie pykało. Zobaczę na wbudowanym koncie admina, może tam da radę.

     

    E: Problem rozwiązany - wymagana była czysta instalacja sterownika do karty graficznej.

  4. Ogólnie z tym creating backup freezem sobie poradziłem (instalator się też wieszał, tym razem go zostawiłem i śmiga). Ale mi wyrzuca błędy przy zasobach:

    Writing Chunk... SPRT
    Error :: Unable to write resource spr_Player_Head

    Tak przy każdym, jako przykład dałem sprajty.

    I po tym wywala mi error GDI+.

  5. Witam.

     

    Mam problem z GM:S. Przy próbie zaladowania jakiegokolwiek projektu (może to być nawet projekt z pustym roomem) na Creating Backup, GM łapie freeze a odwiesza się po ok. minucie. W supporcie napisali mi, że to problem z moim systemem, no i to prawda. Parę dni wcześniej wszystko działało, później zaczął się problem z AssetCompilerem, później z GDI+ i poprzestalo na tym freezie.

     

    Moze mi ktoś powiedzieć, z czego korzysta GM, co przeinstalowac (bo wszystko mam aktualne)? Nie można w tym normalnie pracować.

     

    Nie zmienialem sprzętu ani nie instalowalem żadnego większego oprogramowania.

    System operacyjny Windows 8.1.

     

    Dzięki z góry za pomoc.

  6. Nie sprawdzałem działania tego kodu, ale na pierwszy rzut oka widać, że masz przeciążenia konstruktora: jeden z dwoma argumentami przypisujący wartości polom Tytuł i Ilość stron, a drugi bez argumentów przypisujący dwóm pierwszym stronom wartości. Obiekt tworzysz z przeciążenia z argumentami, automatycznie nie masz nic przypisywane do dwóch wspomnianych wyżej zmiennych, bo to przeciążenie tego nie wykonuje. Nic dziwnego zatem, że nic Ci nie zwraca/wyświetla.

     

    Ogólnie, dziwny ten kod trochę, wg. mnie.

    Jeżeli dopiero uczysz się obiektowego, to zacznij sobie od najprostszych operacji na tych obiektach, żeby dobrze ogarnąć co i jak.

  7. Jeżeli wrzucasz to na jakiś serwer, to możesz dać np. w miejscu całego nagłówka:

    <?php
    require("header.html");
    ?>

    Gdzie plik header.html to nagłówek. Ogólnie operując w PHP więcej zdziałasz, jeżeli chcesz sobie ułatwić pracę i później wprowadzać jakieś modyfikacje czy rozszerzenia.

×
×
  • Dodaj nową pozycję...