Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
7Activity
0 of .
Results for:
No results containing your search query
P. 1
Quick introduction to reverse engineering for beginners by Dennis Yurichev

Quick introduction to reverse engineering for beginners by Dennis Yurichev

Ratings:

5.0

(1)
|Views: 231|Likes:
Published by hughpearse
Quick introduction to reverse engineering for beginners by Dennis Yurichev
Quick introduction to reverse engineering for beginners by Dennis Yurichev

More info:

Published by: hughpearse on Apr 01, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/01/2014

pdf

text

original

 
Quick introduction to reverse engineering for beginners
Dennis Yurichev
<dennis@yurichev.com>
cbnd
c
2013, Dennis Yurichev.This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0Unported License. To view a copy of this license, visit
.Text version 0.6 (March 15, 2013).
 
Contents
1.1 Hello, world!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Stack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.1 Save return address where unction should return control ater execution. . . . . . . . 41.2.2 Function arguments passing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.3 Local variable storage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.4 (Windows) SEH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.5 Bufer overow protection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3 print() with several arguments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.4 scan(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4.1 Global variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.4.2 scan() result checking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.5 Passing arguments via stack. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.6 One more word about results returning.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.7 Conditional jumps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.8 switch()/case/deault. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.8.1 Few number o cases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.8.2 A lot o cases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.9 Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.10 strlen(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311.11 Division by 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351.12 Work with FPU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.12.1 Simple example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.12.2 Passing oating point number via arguments. . . . . . . . . . . . . . . . . . . . . . . 391.12.3 Comparison example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401.13 Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461.13.1 Bufer overow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481.13.2 One more word about arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521.13.3 Multidimensional arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521.14 Bit elds. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541.14.1 Specic bit checking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541.14.2 Specic bit setting/clearing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561.14.3 Shits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581.14.4 CRC32 calculation example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611.15 Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651.15.1 SYSTEMTIME example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651.15.2 Let’s allocate place or structure using malloc(). . . . . . . . . . . . . . . . . . . . . . 661.15.3 Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671.15.4 Fields packing in structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691.15.5 Nested structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701.15.6 Bit elds in structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71i
 
1.16 C++ classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791.16.1 GCC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821.17 Unions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851.17.1 Pseudo-random number generator example. . . . . . . . . . . . . . . . . . . . . . . . 851.18 Pointers to unctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881.18.1 GCC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901.19 SIMD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921.19.1 Vectorization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921.19.2 SIMD
implementation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991.20 x86-64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
2.1 LEA instruction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1132.2 Function prologue and epilogue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142.3 npad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152.4 Signed number representations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172.4.1 Integer overow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172.5 Arguments passing methods (calling conventions). . . . . . . . . . . . . . . . . . . . . . . . . 1182.5.1 cdecl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182.5.2 stdcall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182.5.3 astcall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182.5.4 thiscall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192.5.5 x86-64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192.5.6 Returning values o 
and
type. . . . . . . . . . . . . . . . . . . . . . . . . 119
3.1 Communication with the outer world. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203.2 String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213.3 Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213.3.1 Magic numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213.4 Finding the right instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223.5 Suspicious code patterns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.1 Easy level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244.1.1 Task 1.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244.1.2 Task 1.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.1.3 Task 1.3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1284.1.4 Task 1.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1294.1.5 Task 1.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1314.1.6 Task 1.6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324.1.7 Task 1.7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1334.1.8 Task 1.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354.1.9 Task 1.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1354.1.10 Task 1.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1364.2 Middle level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374.2.1 Task 2.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1374.3 crackme / keygenme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.0.1 Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145ii

Activity (7)

You've already reviewed this. Edit your review.
Dennis Yurichev reviewed this
Rated 5/5
New updated version is here! http://yurichev.com/RE-book.html
Konstantinos liked this
Dennis Yurichev added this note
New updated version is here! http://yurichev.com/RE-book.html
1 hundred reads
electric_wizard liked this
Toaster97 liked this
liveclive304393 liked this

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->