| |
|
|
| So, ensuite wolln wir la fois... comme Ausgangslage prenons la fois folgenden kleinen Voir le texte source: KompilierenMarqueSéparationWindowstyle 31
Windowtitle "Listboxtest"
Window 0,0-640,440
Declare Listbox&,Zähler%
LET LISTBOX&=@Createlistbox(%HWND,"",20,40,300,300)
Clear Zähler%
PRINT Listbox&
While Zähler%<1000
@ADDSTRING(LISTBOX&,"Hallo, hier spricht AH!")
inc Zähler%
wend
Beep
While 0=0
Waitinput
Wend
là Profan quelque chose verschwenderisch avec Heaps umgeht, empfehle je, cela Programme avec Profan2Cpp trop compilieren. Pour dem Effectuer sieht on folgendes sur dem Bildschirm:
[...]
après starten wir [...] et laisser uns seulement einmal qui Heaps des Testprozesses avec qui Listbox listen:
[...]
sous Programme/Optionen est sich qui Menüpunkt String dans Bytefolge transformer. Pour dem Anklicken donner wir cela mot allô un et drücken OK.
[...]
Pour einem Droit ins Treeview de [...] peux choisir wir grenier fouiller aus.
[...]
Im Unteren Éditer steht eh bien cela mot allô bereits comme hexadezimale Bytefolge.
[...]
Alle Textes de Controls stehen im grenier comme Unicodestrings, wir müsse là alors encore pour chaque Byte un Nullbyte insérer, d.h. pour chaque zweiten marque deux Nullen. cela ganze sieht ensuite so aus:
[...]
quoi trouvé wird, sieht dans etwa so aus:
[...]
Wir choisir eh bien un paire beliebige Adressen aus, einmal aus dem oberen drittel, einmal aus qui mitte et einmal aus dem unteren drittel et regarder pour, dans welchem Heapblock cet Adressen liegen. qui Blöcke, dans denen qui Adressen liegen, laisser wir uns comme Cordes Montrer. qui Heapblock, den on cherche, ist dans etwa 48136 Bytes grand et liegt wahrscheinlich am Ende des ersten Heaps. cela mot allô steht komplett am Anfang des Blockes, so comment ici trop voyons:
[...]
maintenant kopieren wir mittels Droit qui Startadresse des Blocks - ensuite un Droit ins Treeview et Speicherbereich changement auswählen. comme Adresse des Speicherbereichs fügen wir ici qui auparavant kopierte Startadresse un, den hexadezimalen neuen le contenu mettons wir sur 41 et klicken après sur Speicherbereich changement.
[...]
si wir uns maintenant qui Listbox regarder, ist avec son folgendes passiert:
[...]
cela quoi wir là trouvé avons ist alors qui Speicherbereich, à dem alle Einträge qui Listbox gespeichert sommes! c'est oui déjà la fois entier intéressant - mais wohin ist qui reste qui Listbox? après chercher wir maintenant! si qui Zeilen einer Listbox dans einem Speicherbereich stehen, devrait un anderer Speicherbereich wiederum sur cet Adresse verweise - mais est logisch, ou bien? nous allons alors folgendermaßen avant: d'abord kopieren wir wieder qui Adresse des Heapblocks avec den Listviewzeilen. après klicken wir sous Programme/Optionen sur den Menüpunkt numéro dans Bytefolge transformer et fügen ici qui Adresse un.
[...]
après klicken wir sur OK. eh bien fouiller wir wieder den Prozessspeicher des Testprozesses avec qui Listbox - et zwar pour qui Adresse comme Doubleword dans hexadezimaler Bytefolge (siehe Bild):
[...]
cela wurde chez mir trouvé:
[...]
sous den gefundenen Adressen chercher wir pour einer Adresse dedans eines Heapblocks des ersten Heaps (chez mir 38184396). qui gesuchte Bereich pourrait 720 Bytes grand son. Wir se mettre eh bien den le contenu cet Bereichs comme dezimale Doublewords là (chez mir 38183824):
[...]
après kopieren wir den ganzen Bereich mittels Droit dans qui Zwischenablage:
[...]
cela venez chez mir dabei heraus: [box:0080bc86d7] X1=0 X2=0 X3=0 X4=1572865 X5=0 X6=768 X7=0 X8=0 X9=0 X10=0 X11=0 X12=0 X13=0 X14=0 X15=0 X16=0 X17=0 X18=0 X19=0 X20=0 X21=0 X22=0 X23=0 X24=0 X25=0 X26=0 X27=0 X28=0 X29=0 X30=0 X31=0 X32=0 X33=0 X34=0 X35=0 X36=0 X37=0 X38=0 X39=0 X40=0 X41=0 X42=0 X43=0 X44=0 X45=0 X46=0 X47=38183832 X48=0 X49=0 X50=0 X51=0 X52=0 X53=0 X54=0 X55=0 X56=0 X57=0 X58=0 X59=0 X60=0 X61=0 X62=0 X63=0 X64=0 X65=0 X66=0 X67=0 X68=0 X69=0 X70=0 X71=0 X72=0 X73=0 X74=0 X75=0 X76=0 X77=0 X78=0 X79=0 X80=0 X81=0 X82=0 X83=0 X84=0 X85=0 X86=0 X87=0 X88=0 X89=0 X90=0 X91=38184008 X92=0 X93=0 X94=0 X95=0 X96=0 X97=0 X98=0 X99=0 X100=0 X101=0 X102=0 X103=0 X104=0 X105=0 X106=0 X107=0 X108=0 X109=0 X110=0 X111=0 X112=0 X113=0 X114=0 X115=0 X116=0 X117=0 X118=0 X119=0 X120=0 X121=0 X122=0 X123=0 X124=0 X125=0 X126=0 X127=0 X128=0 X129=0 X130=0 X131=0 X132=0 X133=0 X134=0 X135=41681216 X136=41681440 X137=0 X138=-1 X139=0 X140=18 X141=1000 X142=1024 X143=38256320 X144=38187408 X145=48128 X146=48000 X147=8 X148=16 X149=0 X150=0 X151=0 X152=0 X153=0 X154=1288421508 X155=2 X156=0 X157=-1 X158=-1 X159=-1 X160=0 X161=0 X162=0 X163=0 X164=0 X165=0 X166=1031 X167=0 X168=0 X169=0 X170=278 X171=0 X172=23 X173=0 X174=999 X175=18 X176=0 X177=23 X178=0 X179=5898242 X180=1048832 [/box:0080bc86d7] quoi wir ici voyons, dürften qui données qui Listbox son - à Stelle X144 steht dabei qui déjà bekannte Adresse, qui qui Zeilen qui Listbox contient. Wir regarder uns eh bien Stelle X141 la fois quelque chose genauer à, qui numéro 1000. venez vous quelqu'un bekannt avant?. qui Adresse de X141 berechnen wir folgendermaßen: Startadresse des Heapblock+(141*4)-4 chez mir wäre cela 38183824+(141*4)-4 = 38184384 Zur Kontrolle s'il te plaît einmal 4 Bytes ab cette Adresse comme dezimale Doublewords auslesen laisser, es devrait qui numéro 1000 herauskommen! eh bien changement wir cela Doubleword à cette Stelle comment im Bild trop voyons sur den dezimalen Wert 10:
[...]
maintenant sschauen wir la fois zwischendurch qui Listbox à:
[...]
Oops - qui Zeilenzahl hat sich (comment beabsichtigt) sur 10 verringert! intérêt à plus? si oui - Fortsetzung folgt...
PS: X143 hat incidemment quoi avec qui Sortierung qui Listbox trop 1faire... |
|
|
| |
|
|
|
Sebastian König | allô Andreas,
wow - Respekt avant qui Leistung!!! Liest sich oui presque comment un Know-How Artikel sur [...]
MfG
Sebastian |
|
|
| |
|
|
|
Frank Abbing | Hi.
Soweit c'est moi déjà bien sûr, quoi du bezweckst, Andreas. Bien sûr laisser sich qui données eines Controls auslesen, si on fois le Methode erkannt hat, comment MS selber interne es aussi pouvoir. mais erzähl doch la fois, welchen Vorteil du dir dadurch erhoffst, Controls manuel trop beinflussen? quelle concept treibt toi dabei à. cela hab je pas entier verstanden. Warscheinlich simple seulement Neugierde? dans précédent Betriebssystemen était es couloir et Gebe, Systemkomponenten manuel trop verändern, entier simple, weil es cela Messagessystem pas donnais ou bien es encore pas so parfait ausgearbeitet était. je denke là seulement à cela AmigaOS. si MS den besseren Weg allez, si es den User so large comment possible abschottet? qui weiss... |
|
|
| |
|
|
|
| und dir pas seulement um Controls, mais um Handles et dazugehörige Adressen. mon Beispiel était un Hinweis puis, cela es im Prinzip possible ist Strukturen im grenier direct (sans Mithilfe qui API) trop verändern. quoi wäre possible: 1. Über cela Handle eines Speicherbereichs eines fremden Prozesses qui Variablen auslesen, qui à diesem lieu gespeichert sommes. 2. qui Zugriffsrechte (Security-Descriptor) bim Öffnen de Handles übergehen et Operationen durchführen, qui eigentlich wesentlich plus Rechte erfordern. 3. grande Listboxen dans einem Glissement de einer Stelle à l'autre kopieren. 4. DLL dans autre Prozesse injecter et une anderen Prozess en supplément provoquer, eigenen Quellcode auszuführen
Reicht cela? là gibts encore plus ...
PS: cela Messagesystem ist qui größte Sicherheitslücke de Windows... |
|
|
| |
|
|
|
| @SEbastian: je crois tu as verstanden, worum es mir allez => Link... |
|
|
| |
|
|
|
Frank Abbing | Solange es dir tout autor allez, Sicherheitslücken anzuzeigen, solls mir droite son. Pour mich liest sich cela allerdings plus comment qui Artikel eines Hackers ou bien Virenprogrammierer: je vers cela gigantische MS-empire. |
|
|
| |
|
|
|
| ne...aucune Virenprogrammierer, beim besten Willen pas ... Mir ca va avant allen Dingen tout autor, Sachen et Hintergründe trop comprendre et cet possible aussi umzusetzen. je suis au einem profession beschäftigt, qui körperlich et seelisch alles aus einem les gens herausholt. un Beispiel: avec meinen knapp 70kg suis je sans weiteres en supplément dans qui situation, 130kg auszuheben et par qui région trop tragen. là braucht mon Gehirn zwischendurch la fois Sachen, avec denen es sich ähnlich intensif dans anderer direction beschäftigt.
alors - um es oui c'est ca trop dire - und dir Je ne um je vers irgendwen, mais um je vers mich selbst.... So dans qui Art - comment viel kg peux je encore plus tragen? - quoi peux je sonst encore leisten? j'ai là bestimmte Ziele, qui je mir gesetzt habe - c'est était. und dir mir dabei mais pas um cela Erreichen cette Ziele (si je 200kg tragen peux) sonder um cela apprendre sur dem Weg hin trop diesem but - je hoffe du verstehst...
je suis beim Programmieren ne...aucune Experte - cela habe je souvent genug dit. quoique je seulement 70kg wiege, peux je presque cela doppelte meines Körpergewichtes tragen. quoi peux je im Programmierbereich 1faire, quoique je ne...aucune Experte suis??? |
|
|
| |
|
|
|
Frank Abbing | bof, tu fais oui déjà cela, quoi du comme Antwort erwartest. tu as dir un kniffeliges Thema gesucht et versuchst toi - avec Erfolg! - daran. Ist doch absolu dans Ordre. Mir kommts seulement quelquefois so avant, comme würdest du deine eigenen Fähigkeiten unterschätzen et qui qui Anderen überschätzen. alors sei pas verwundert, si qui Funke pas tout de suite sur jeden überspringt. Ist plan pas jedermanns Thema . |
|
|
| |
|
|
|
| suis je aussi pas plus. je voudrais seulement encore la fois klarstellen, qui je ne...aucune Böser Bube suis et pas à illegale Sachen denke. Votre attitude habe je avec intérêt gelesen - et si je cela schaffe, quoi je voudrais (je glaubs eigentlich pas), ensuite werde je dein Posting ici dans bon Erinnerung behalten.. |
|
|
| |
|
|