In kernel32.dll schreiben?
@Deeem2031:
wenn du von der xp cd in der wiederherstellungskonsole startest, sollte es dir möglich sein die kernel dll zu ersetzen... aber mal im ernst, die kernel dll zu "optimieren", in dem du im disassembler dran rumpfuscht ist vollkommener unsinn. du könntest sie höchstens neuschreiben, aber zum einen wird das mit purebasic nicht funktionieren und zum anderen kannst du dir sicher sein dass msvc viel besser optimierten code erzeugt, damit würdest du die bestenfalls langsamer machen. es ist auch keine kleine aufgabe das mal eben neu zu schreiben, die reactos entwickler arbeiten seit jahren an ihrer kernel32.dll und sind noch weit davon entfernt fertig zu werden.
was genau stört dich denn an der windows kernell32.dll? was gibt es denn da deiner meinugn nach zu optimieren?
wenn du von der xp cd in der wiederherstellungskonsole startest, sollte es dir möglich sein die kernel dll zu ersetzen... aber mal im ernst, die kernel dll zu "optimieren", in dem du im disassembler dran rumpfuscht ist vollkommener unsinn. du könntest sie höchstens neuschreiben, aber zum einen wird das mit purebasic nicht funktionieren und zum anderen kannst du dir sicher sein dass msvc viel besser optimierten code erzeugt, damit würdest du die bestenfalls langsamer machen. es ist auch keine kleine aufgabe das mal eben neu zu schreiben, die reactos entwickler arbeiten seit jahren an ihrer kernel32.dll und sind noch weit davon entfernt fertig zu werden.
was genau stört dich denn an der windows kernell32.dll? was gibt es denn da deiner meinugn nach zu optimieren?
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Vielleicht könnte man das ja disassemblieren und durch remi_meiers optimizer jagen, wird aber einen Tag dauern, so groß wie der source ist, glaube ich. Oder gleich nen Hex-Optimierer basteln.
@Remi: er will ja nich die Funktionen in der Laufzeit ersetzen.
@Remi: er will ja nich die Funktionen in der Laufzeit ersetzen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Hi,
er könnte auch einen Wrapper schreiben die die Funktionen Mit CallProcedureFast in der Kernel32_Old.dll aufruft, und die funcs die ihm zu langsam sind baut er neu mit dem Disassembleden Code den er hat
... nur sonen gedanke...
mfg
125
er könnte auch einen Wrapper schreiben die die Funktionen Mit CallProcedureFast in der Kernel32_Old.dll aufruft, und die funcs die ihm zu langsam sind baut er neu mit dem Disassembleden Code den er hat

mfg
125



Warum beantwortet ihr nicht einfach meine Frage? Ich weiß doch was ich mache...
"ähh sorry, dann darfst du ja jedes mal neu anfangen, wenn du nen fehler baust. Und zwar ganz neu, d.h. Windows neu installieren."
...? Warum sollte ich Windows neu installieren? Ich kopier einfach das Backup der dll wieder zurück und schon funktioniert wieder alles...
"Welcher andere würde solch einem Programm seine kernel32.dll freiwillig hergeben? Ich denke du machst das NUR für dich."
Nein, wär das so würde ich nicht hier fragen, dann hät ich die Dll schon längst mit Linux oder DOS geändert.
"du könntest sie höchstens neuschreiben, aber zum einen wird das mit purebasic nicht funktionieren und zum anderen kannst du dir sicher sein dass msvc viel besser optimierten code erzeugt, damit würdest du die bestenfalls langsamer machen."
Wer hat denn gesagt, dass ich das mit Purebasic machen will? Ich würde höchstens das Programm was die DLL dann ändert in PB schreiben.
"was genau stört dich denn an der windows kernell32.dll? was gibt es denn da deiner meinugn nach zu optimieren?"
Viel zu viel..
"Hooke doch einfach ein paar API-Funktionen!"
Ich will das aber für jedes Programm haben.
"AFAIK müsstest du beim Verändern der DLL doch immer die Sprungadres
sen anpassen, was fast unmöglich ist."
Was soll am ändern von 4 bytes unmöglich sein?

[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
da kommt zwar ohnehin nichts bei raus, denn was du da vorhast ist totaler unsinn, aber eine möglichkeit währe eine bootfähige cd mit freedos und dem ntfs treiber für dos (ich weiß leider nichtmehr wo man den herbekommt) zu machen, die dann einfach die kernell32.dll mit deiner toll optimierten version der dll ersetzt. das ganze dann noch als iso, dann kann das jeder depp installieren. direkt während die kernell dll läuft geht es natürlich nicht.
mit hooks kann man übrigens auch anwendungendungen schreiben, die auswirkungen auf alle laufenden programme haben (ein schönes beispiel dafür ist windowblinds unter win 2k ) und ist definitiv die bessere lösung in allen szenarien.
mit hooks kann man übrigens auch anwendungendungen schreiben, die auswirkungen auf alle laufenden programme haben (ein schönes beispiel dafür ist windowblinds unter win 2k ) und ist definitiv die bessere lösung in allen szenarien.
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Naja, wenns wirklich so ist mit den Adressen, dann müsstest du eigentlich
einen kompletten Disassembler und einen kompletten Assembler basteln,
denn nicht jeder Befehl hat die gleiche Länge (-> Abspeichern) und wenn
du einen entfernst, musst du immer wieder die aktuelle Adresse neu er-
rechnen. Danach musst du noch überall die Adressbezüge finden und dort
updaten!
Mach ruhig
Meiner Meinung nach reicht die Geschwindigkeit von Windows, das Problem
sind eher die Bugs
Wichtiger für die Geschwindigkeit sind auch die Programme! Normalerweise
ist es nicht Windows, was alles ausbremst..
greetz
Remi
einen kompletten Disassembler und einen kompletten Assembler basteln,
denn nicht jeder Befehl hat die gleiche Länge (-> Abspeichern) und wenn
du einen entfernst, musst du immer wieder die aktuelle Adresse neu er-
rechnen. Danach musst du noch überall die Adressbezüge finden und dort
updaten!
Mach ruhig

Meiner Meinung nach reicht die Geschwindigkeit von Windows, das Problem
sind eher die Bugs

Wichtiger für die Geschwindigkeit sind auch die Programme! Normalerweise
ist es nicht Windows, was alles ausbremst..
greetz
Remi
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Naja, prinzipiell, habs aber noch nie gemacht (ich weiss, ich falle auf deine
provokative Frage rein
).
Also nach meinem Prinzip:
1.) Disassemblieren -> ASM-Code
Variablen und Labels sind dann als Adressen drin
2.) Die Start- und Stopadresse der Procedure finden
3.) Dazwischen den Code abändern und alle Adressen hinter dem abge-
änderten Code mit der Verschiebung updaten...
4.) Wieder Assemblieren
greetz
Remi
provokative Frage rein

Also nach meinem Prinzip:
1.) Disassemblieren -> ASM-Code
Variablen und Labels sind dann als Adressen drin
2.) Die Start- und Stopadresse der Procedure finden
3.) Dazwischen den Code abändern und alle Adressen hinter dem abge-
änderten Code mit der Verschiebung updaten...
4.) Wieder Assemblieren
greetz
Remi