Skal jeg virkelig vende denne ukendte funktion fra starten
Ansvarsfraskrivelse : Dette er bare min mening. Når det er sagt, er mit svar: nej , gør det ikke, medmindre du virkelig har brug for det. En af de første ting, jeg altid siger til mine studerende, når jeg underviser i reverse engineering, er faktisk det: prøv aldrig at reverse engineer en funktion linje for linje, medmindre du virkelig har brug for det (og min erfaring siger, at du for det meste behøver ikke at gøre det).
Min anbefaling er lidt anderledes:
- Find "artefakter" end der kan give dig en abstrakt idé om, hvad en funktion gør: kaldte / refererede funktionsnavne (dvs. API'er), konstanter osv ...
- Når du har en abstrakt idé om, hvad funktionen gør, skal du afgøre, om du har brug for at få mere information fra den.
- Hvis ja, prøv at bestemme gruppering af grundlæggende blokke, men uden at analysere linje for linje, hvad et sæt grundlæggende blokke gør, og prøv at fokusere på det, du ikke forstår, eller hvad du har brug for at svare på.
- Hvis du stadig har brug for flere detaljer, eller noget stadig er uklart, skal du gøre det grundlæggende blok pr. grundlæggende blok efter strømmen fra det punkt, der ikke er klart, eller fra det punkt, hvor du begynder at passe.
- Hvis , stadig, du n eed mere information, eller hvis det stadig er uklart, skal du gøre det instruktioner ved at instruere og prøve at fokusere specifikt på det, du ikke forstår, eller hvad du har brug for at svare på, og kun hvis du stadig ikke kan besvare dine spørgsmål, skal du vende hele funktionen linje for linje.
Forsøg på at gå instruktion ved instruktion eller vende hele funktionen, når vi virkelig ikke har brug for det, det er lettere at gå vild / forvirret, fordi vi vil fokusere på, hvad en uklar instruktion gør, eller som markerer den ændrer i stedet for med fokus på at besvare de rigtige spørgsmål. Det vil dog stort set afhænge af, hvorfor du reverse engineering den ting. Forsøger du at efterligne / kopiere / udvide en algoritme (dvs. en dekrypteringsalgoritme) eller gendanne kildekoden til en binær? Så ja, du bliver nødt til at gå instruktion efter instruktion. Gør du reverse engineering af et stykke software / funktion for at bestemme, hvad det gør? Generelt nej, du behøver ikke at gå instruktion efter instruktion.
Mine 2 cent.