Technology sharing

Statica quaerendi locum vocantis iOS dynamici nexus functionis

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Statica quaerendi locum vocantis iOS dynamici nexus functionis

Documenti exsecutabile mach-O est forma fasciculi binarii usus in Apples macOS et iOS operandi.

In nonnullis securitatis iOS lustralibus, opus esse potest ut locum specificum vocationis functionis obtineat, quae utentes ad verius vulnerabilitates collocare potest.
Nunc NSLog munus exemplum sume et statically quaere locum specificum vocationis dynamici muneris in macho.

Target

Quaere locum specificum ubi munus NSLog in applicatione macho vocatur.

Ideae

Totus processus inquisitionis est processus files parsing macho et notitia binaria parsing in structuras opportunas datas.
Multae partes macho adhibentur;
Tabula filum
Symbolum Tabulae
Symbolum Dynamic Tabula
Section64(TEXT,Stipulae)
Section64(TEXT,text)

Imprimis gradus

1. Primum locum symboli Talbe et Filorum in tabella macho reperies.

Invenire LC_SYMTAB in Load Praecepta, potes offset et quantitatem StringTable determinare, et etiam offset et numerus tabulae symboli invenire potes:

Symbolum Tabula cinguli est 0x18c478
Numerus symbolorum est 0x9a2d
Filum Tabula offset est 0x2273b0
Filum Tabula Size est 0x108d58

Quodlibet symbolum data longitudo est 16 bytes, id est 0x10;

Magnitudo igitur Symboli Tabula est 0x9a2d*0x10 = 0x9A2D0
Incipiens electronica symboli Tabula est 0x18c478
Finis inscriptio est 0x18c478 0x9A2D0 = 0x226748

Incipiens electronica String Tabula est 0x2273b0
Finis inscriptio est 0x2273b0 0x108d58 = 0x330108
Quia longitudo chordae non figitur, non figitur longitudo uniuscuiusque notitiae in chorda Tabula.
Cum datam in binario Tabulam Stringam legentes, "x00" uti potes ut chorda delimiter.

2. Tabulam chordarum lustrate et invenietis _NSLog

Potes primum legere Tabulam datam in macho et uti "x00" separator ad chordam ordinatam generandam.
Filum ordinate percurre et determinare utrum singulae partes datae sint = "_NSLog".

_NSLog in 0x23331b repertum est, et in codice machina "5F4E534C6F6700" filum "_NSLogn" est.

49003 (0xBF6B hexadecimali) est numerus index chordae currentis qui tentative determinatur ut strTab_index = 49003.
Index numerus 49003 computatur ab inscriptione incipiente 0x2273b0 Tabulae Stringae, 49003rd byte,
0x2273b0 49003 = 0x23331B, quae fit ut initium inscriptionis _NSLog.

3. Secundum 49003 (0xBF6B) in gradu 2, quaerere potes symbolum congruentem in symbolo

In MachOView, videre potes inscriptionem 0x00224988 respondere cum _NSLog.

Quomodo ad inveniendum adaptare tabulam symboli datam per indicem numerum 49003?
I notus gradus;
Incipiens electronica tabula symboli est 0x18c478;
Finis inscriptio symboli tabula est 0x226748.
In hoc macho, data mensura unius Tabulae symboli est 0x10.

Valor quattuor primi bytes de 38993 fragmentis notitiae in Tabula symboli est 0xBF6B, quod est 49003.
Idem est ac index numeri chordae _NSLog in chorda Tabula, sic haec notitia respondet "_NSLog":

38993 est index numerus notitiae hodiernae in tabula symboli, tentative symTab_index = 38993;
0x18c478 38993 * 0x10 = 0x224988 prorsus est oratio hodiernae notitiae.

4. Invenire data secundum symTab_index in Tabula symboli Dynamici

Locus symbolorum indirectorum in LC_DYSYMTAB sub Lond Praeceptis in Macho determinari potest:

Inscriptio incipiens: 0x226748, 794 fragmenta notitiarum sunt, et magnitudo cuiusque notitiae 0x4.
Singulae partes datae in symbolis indirectis percurre.
Haec igitur notitia respondet "_NSLog", pone dySymTab_index = 111
0x226748 111*0x4 = 0x226904