Grundlagen NokiX

Dieses Thema im Forum "Nokia Custom Rom" wurde erstellt von 0.314, 31. Januar 2005.

  1. 0.314

    0.314 -courtjester199-

    Ich hoffe, dass damit endlich Schluss mit dem "Ich weiss ja überhaupt nicht was man hier machen soll" ist!
    ...und vielleicht kommt ja dadurch NokiX endlich bissl ins Rollen hier im board :D

    1. Allgemeines
    • NokiX ist eine Anwendung mit der es möglich ist, die Nokia firmware (DCT3) zu modifizieren.
    2. Skripte anwenden
    • Ihr wählt die input und output flashfile aus (bei Simulation kann's auch die gleiche sein)
    • Mit dem 'ADD' button holt ihr euch die Skripte, die ihr haben wollt
      (viele Skripte haben Prioritäten, d.h. sie werden in bestimmter Reihenfolge von NokiX ausgeführt. D.h. ihr braucht euch im Normalfall keine Sorgen zu machen, in welcher Reihenfolge ihr die Skripte hinzufügt)
    • Informationen zu deren Verwendung, gibt es immer, wenn ihr auf den 'i' button klickt.
    • Falls ihr bestimmten Skripten Parameter übergeben wollt/müßt, könnt ihr das im "Parameters" Feld.
    • Als Nächstes führt ihr die Skripte aus, indem ihr auf den 'Start' (oder zum Simulieren auf den 'Simulate') button klickt.
    • Danach werden euch im output Fenster die Informationen zu den ausgeführten Skripten gezeigt.
    • Einige Skripte erstellen sogenannte configIDs. D.h. es werden Variablen einer konstanten ID zugewiesen. Der Wert dieser Variablen kann dann sogar im EEPROM gespeichert werden, d.h. er bleibt auch nach dem Ausschalten im phone erhalten.
      (schaut euch dazu auch die "create_config_id.rx" an, und studiert die einzelnen Skripte)
      Beispiel: keylock_clock.nrx
    • Aus dem output entnehmt ihr diese configIDs und deren arguments. (ihr könnt auch den verbose level höher stellen, so dass ihr (meistens) noch mehr infos aus den Skripten bekommt)
    • Seit Kurzem kann man bei vielen Skripten definitions verwenden. Durch diese definitions nimmt euch das Skript die Arbeit des Menüerstellens ab. Man findet sie ebenfalls in den Skript-Infos.
      (@item def=blabla)
      Beispiel: invert_lcd.nrx
    • Weiterhin gibt es auch noch Skripte, die 5E0 IDs erstellen.
      Beispiel: set_volume.nrx
    • Dann wechselt ihr in den "Dumper" Modus" und dumpt mit der "dump_menu.nrx" das Originalmenü.
    • Jetzt öffnet ihr die Textdatei mit der Menüstruktur und erstellt eure neuen Menüs mit den confIDs und den args, die ihr aus dem output entnommen hattet. Kleiner Tipp: Verwendet "stitle" statt "title", um direkt den neuen Menünamen einzutragen (bei g3n0lite ging das mit ADD_TEXT und 0xDEADBEEF)
      (eine Anleitung zur Menüstruktur werde ich hier nicht geben, da es dazu genug Infos im board und in anderen Anleitungen gibt)
    • Wenn ihr Probleme mit der neuen (aber leichteren) Syntax von der NokiX Menüstruktur habt, dann vergleicht die Struktur mit einer von g3n0lite ausgelesenen. Wenn das auch nicht hilft, dann MÜSST! ihr euch unbedingt nocheinmal intensiver mit der Menüstruktur befassen und sie verstehen lernen.
    • So, nun könnt ihr euere neue, angepaßte Menüstruktur mit der "write_main_menu.nrx", unter Auswahl der "*.txt" in der ihr die Struktur gespeichert habt, patchen.
    ... und fertsch is der Lack!


    3. Skripte schreiben
    • REXX lernen! (REXX ist eine recht einfache, aber dennoch mächtige Prgrammiersprache)
    • "dev_reference.txt" studieren.
    • Viele Skripte studieren und verstehen lernen!
    • Mit einfachen Dingen beginnen! D.h. erstmal vielleicht versuchen ein Skript zu erstellen, welches Werte oder Adressen aus dem flash liest, oder verändert.
    • Mit NokiX ist es endlich möglich mit Nokia-eigenen Funktionen/Routinen zu programmieren. Dies könnt ihr dann in C oder Assembler.
    • Zum Kompilieren braucht ihr allerdings die "development environment" von NokiX. Da könnt ihr euren Quellcode mit der "make.nrx" und einer makefile kompilieren.
    • Um die Funktionen zu studieren, schaut euch die "locate.rx" an!
    • Es gibt jetzt außerdem (endlich ;) ) eine richtige Entwicklungsumgebung - die Nokia SDK http://nokix.pasjagsm.pl/help/SDK/files/intro-txt.html
      ...das übersetzt ich jetzt aber nicht alles in Deutsche :p

    4. Debuggen
    • "NokiXstdout.exe" runterladen
    • Variablen, oder was euch sonst so interessiert via puts() oder printf() in den sourcecode
    • Nokia ans FBUS Kabel hängen (COM port)
    • Variablen, etc. in NokiXstdout anzeigen lassen und freuen! :D
    5. Screenshots
    • "NokiXshot.exe" runterladen
    • nokix_shot.nrx patchen
    • Nokia ans FBUS Kabel hängen (COM port)
    • mit dem "take" button screenshots machen
    ...hier mal gleich noch ein kleines, simples Skript von mir :cool:

    Cheers!
     
    Zuletzt bearbeitet: 16. Januar 2006
  2. Thx gute erklärung, mal schauen was ich draus machen kann.
     
  3. g3gg0

    g3gg0 [RevEngineer]

    respekt
    gute infos :)
     
  4. Luppi

    Luppi Freak

    sehr gut gemacht da werd ich mich am wochenende ransetzten und üben üben üben vertsehen *ggg*
     
  5. Dumme frage habs gerade nicht gefunden, deshlab frage ich mal:

    if func="START_TIMER" then do
    patt=x2c(B5F04642B40446881C05200C43684978180EF04BFBD5)
    mask=x2c(fffffffffffffffffff0fffffff0ff00fff0f800f800)
    searchback=0

    hab jetzt einfach mal irgendeins aus der locate rx gezogen fürwas steht denn das searchback? Heißt doch rückwärts suche, aber wenn ich jetzt kleines beispiel:

    Code:
    parse arg arguments
    
    code=arguments
    
    if datatype(code,"x")~=1 | code="" then do
      say "# no hex values in parameter box"
    exit 0;
    end
    else do
    end
    
    patt=x2c(code)
    mask=x2c(FFFFF)
    searchback=1
    find x2d(200000) "patt" "mask";
    if rc~=0 then do; say "# String found at 0x"d2x(rc); end
    else do; say "# String not found"; exit 0; end
    
    
    say "# done!"
    Dann kommt bei mir immer "String found at 0x200008" egal ob ich 0 oder 1 in searchback reinschreibe
    Hab mal 0.314 sein script etwasmissbraucht *G*
     
    Zuletzt von einem Moderator bearbeitet: 1. Februar 2005
  6. 0.314

    0.314 -courtjester199-

    Hab hier mal was gefunden...
     
  7. Ok das hat mir gerade null gebracht weill wenn ich das anwende ändert sich an dem wert in RC absolut garnix wei kann ich das denn abfragen in der dev_referenz steht garnix.

    Routine entry heißt auf deutsch?

    Routineneintragung*G* laut googlezumindest was kann ich jetzt damit anfangen?
     
  8. 0.314

    0.314 -courtjester199-

    Ich hätte gedacht, dass diese pattern nicht die routine selbst ist, sondern nur ein bl zu dieser. Und mit searchback kann man diesen link zurückverfolgen... kann aber auch falsch sein ;)

    edit: such mal nach anderen routinen, und wenn der wert von rc mit und ohne searchback unterschiedlich ist, schau mit WinArm nach was du da gefunden hast :)
    ...hab bissl wenig zeit, aber vielleicht schau ich's mir auch nochmal an
     
    Zuletzt bearbeitet: 1. Februar 2005
  9. NokDoc

    NokDoc Nok M o d der

    Hi,

    Searchback meinst von ab ein 'pattern' zuruck suchen biss die function anfang gefunden werdet.

    (Dass heisst, wo die PUSH {} kommando ist.)

    NokDoc
     
  10. 0.314

    0.314 -courtjester199-

    Achso! ...man lernt ja nie aus ;)
     
  11. Ist doch dann das gleiche wie findfunc oder?
     
  12. NokDoc

    NokDoc Nok M o d der

    Hi,

    enable_irq \x49\xc6\x78\...

    writeeeprom \xB5\x70\x1C\...

    B4/B5 meinst PUSH {}, deswegen ist kein searchback notig die anfang zu finden fur writeeeprom.

    Doch fur enable_irq ist die pattern ergendwo im mitten von function genomen.

    (\xB5......) \x49\xc6\x78\...

    Mit Searchback ist es dan moglich die position von die Function anfang (B4/B5) zu finden.

    NokDoc
     
  13. 0.314

    0.314 -courtjester199-

    @SpanishGod
    findfunc sucht auch nach dem PUSH befehl
    ...hab's mir grad mit WinArm angeschaut
     
  14. aber komischer weise gibt mir findfunc ne andere andresse aus als find mit searchback ich raff das nicht searchback hat null einfluss auf mein script kannst ja mal selbst hiermit testen:

    Code:
    /* 
    TEST Script
    */
    
      
    /*search for DRAW_SIGNAL_STRENGTH*/
    
    
    d=x2d(200000);
    
    /*do forever*/
    patt=x2c(4668F7FFFE6F1C6006000E042C04DBDE20002105F7FFFF26B003BC0E46884691469ABDF0)
    mask=x2c(FFFFF000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F000FFFFFFFFFFFFFFFFFFFFFFFF)
    FINDFUNC d "patt" "mask"; orig_tone=rc
    if rc~=0 then do; say "# With FINDFUNC: String found at 0x"d2x(rc);d=rc+1; end
    else do; say "# String not found"; leave; end
    /*end*/
    
    patt=x2c(4668F7FFFE6F1C6006000E042C04DBDE20002105F7FFFF26B003BC0E46884691469ABDF0)
    mask=x2c(FFFFF000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000F000FFFFFFFFFFFFFFFFFFFFFFFF)
    searchback=1;
    FIND d "patt" "mask"; orig_tone=rc
    if rc~=0 then do; say "# With FIND and searchback=1: String found at 0x"d2x(rc);d=rc+1; end
    else do; say "# String not found"; leave; end
    
    say "# done!"
     
  15. yak

    yak Guest

    Hallo, ich bins, NokiX entwickler :). Searchback ist nur eine function von locate.rx und kann nicht in andere scripten benutzt werden. Dort mussen Sie die FINDFUNC befehl nutzen.
     
  16. Danke für die info übrigens da ich noch nicht die gelegenheit hatte hole ich es jetzt nach RESPECT for your nice WORK!!!!!! This tool ist excelent!!!!
     
  17. 0.314

    0.314 -courtjester199-

  18. 0.314

    0.314 -courtjester199-

  19. yak

    yak Guest

    Einfach toll diese Beschreibung. Danke shön :).
     
  20. Und was kann ich damit alles machen? Würde gerne mein Nokia 6230 sogut wie möglich herrichten.. Habe aber nur nen BT Stick.. Ich hab 0 Ahnung.. Könntet ihr mir sagen Was ihr für Software benutzen würdet und welche Progz ihr draufknallen würdet? Ich suche ein Programm hatte ich damals auf meinem 7650 damit konnte ich tv und sowas steuern.. hat jmd. den Namen dazu?