SlideShare a Scribd company logo
Reversing malware analysis training part4 assembly programming basics
Disclaimer
The Content, Demonstration, Source Code and Programs presented here
is "AS IS" without any warranty or conditions of any kind. Also the
views/ideas/knowledge expressed here are solely of the trainer’s only and
nothing to do with the company or the organization in which the trainer is
currently working.
However in no circumstances neither the trainer nor Cysinfo is
responsible for any damage or loss caused due to use or misuse of the
information presented here.
Acknowledgement
 Special thanks to null & Garage4Hackers community for their extended
support and cooperation.
 Thanks to all the Trainers who have devoted their precious time and
countless hours to make it happen.
www.SecurityXploded.com
Reversing & Malware Analysis Training
This presentation is part of our Reverse Engineering & Malware
Analysis Training program. Currently it is delivered only during our local
meet for FREE of cost.
Who am I #1
Amit Malik (sometimes DouBle_Zer0,DZZ)
 Member Cysinfo
 Security Researcher
 RE, Exploit Analysis/Development, Malware Analysis
 Email: m.amit30@gmail.com
Who am I #2
Swapnil Pathak
 Member SecurityXploded
 Security Researcher
 RE, Malware Analysis, Network Security
 Email: swapnilpathak101@gmail.com
 Intro to x86-32
 Assembly Language
 Instructions
 Stack Operations
 Calling conventions
 Demo
 32 bit instruction set architectures based on Intel 8086 CPU
 Address a linear address space up to 4GB
 8, 32 bit General Purpose Registers (GPR)
 6,16 bit Segment Registers
 EFLAGS and EIP register
 Control Registers (CR0-CR4) (16 bits)
 Memory Management Registers Descriptor Table Registers (GDTR, IDTR,
LDTR)
 Debug Registers ( DR0-DR7)
 Register
◦ Storage Locations.
◦ Much faster access compare to memory locations.
 EAX: Accumulator , mostly stores return values from functions (APIs)
 EBX: Base index (for use with arrays)
 ECX: Counter
 EDX: Data/general
 ESI: Source index for string operations.
 EDI: Destination index for string operations.
 ESP: Stack pointer for top address of the stack.
 EBP: Stack base pointer for holding the address of the current stack frame.
 EIP: Instruction pointer. Holds the program counter, the next instruction
address.
 Segment registers:
◦ Used to address particular segments of memory ( code, data, stack )
!) CS: Code !!) SS: Stack
!!!) ES: Extra !V) DS: Data V) FS, GS
Reversing malware analysis training part4 assembly programming basics
 Bit field of states
 Status Flags
◦ Carrry (CF) : set when an arithmetic carry/borrow has been generated out of
the MSB.
◦ Zero (ZF) : set when an arithmetic operation result is zero and reset otherwise.
◦ Sign (SF) : set when an arithmetic operation set the MSB i.e. the result value
was negative.
◦ Trap (TF ) : when set permits operation of processor in single-step. Mostly used
by debuggers.
◦ Interrupt (IF) : determines whether the CPU should handle maskable hardware
interrupts.
◦ Direction (DF) : determines the direction (left-to-right or right-to-left) of string
processing.
◦ Overflow (OF) : indicates arithmetic overflow.
 Low level programming language
 Symbolic representation of machine codes, constants.
 Assembly language program consist of sequence of process instructions
and meta statements
 Assembler translates them to executable instructions that are loaded into
memory and executed.
 Basic Structure
[label] : opcode operand1, operand2
opcode – mnemonic that symbolize instructions
 Example.
◦ MOV AL, 61h => 10110000 01100001
ADD dst, src
- Adds the values of src and dst and stores the result into dst.
- For example ADD EAX, 1
SUB dst, src
- Subtracts src value from dst and stores the result in dst.
- For example SUB EAX, 1
CMP dst, src
- Subtracts src value from dst but does store the result in dst
- Mostly used to set/reset decision making bits in EFLAGS register such as
ZF
- For example CMP EAX, EBX
MOV dst, src
- Moves data from src (left operand) to destination (right operand)
- For example mov EDI, ESI
Note :
- Both operands cannot be memory locations.
- Both the operands must be of the same size
LEA dst, src
- Stands for Load Effective Address.
- Computes the effective address of src operand and stores it in dst operand.
- For example LEA ECX,[EBX + 5]
Note:
- Generally brackets denote value at memory locations.
- In case of LEA it does simple arithmetic and stores it in dst
XOR dst, src
- Performs a bitwise exclusive OR operation on the dst and src and stores the
result in dst.
- Each bit of the result is 1 if the corresponding bits of the operands are
different, 0 if the corresponding bit are same
Note :
- When used with same register clears the contents of the register
- Optimized way to clear the register. Better than MOV EAX, 0
REP
- Used with string operations
- Repeats a string instruction until ECX (counter register) value is equal to
zero.
- For example REP MOVS byte ptr DS:[EDI], DS:[ESI]
LOOP
- Similar to loops in high level languages
- Used to execute sequence of instructions multiple times.
- For example
MOV ECX, 10
Test : INC EBX
INC EAX
LOOP Test
TEST dst, src
- Performs bitwise logical and between dst and src
- Updates the Zero flag bit of the EFLAGS register
- Mostly used to check if the return value of the function is not zero
- For example TEST EAX, EAX
INT 3h
- Breakpoint instruction
- Used by debuggers to stop execution of the program at particular
instruction
CALL address
- Performs two functions
- Push address of the next instruction on stack (return address)
- Jump to the address specified by the instruction
- For example CALL dword ptr [EAX+4]
RET
- Transfers the control to the address previously pushed on the stack by
CALL instruction
- Mostly denotes the end of the function
Jump instructions
- Categorized as conditional and unconditional
- Unconditional jump instructions
- JMP (Far Jump) – E9 – (Cross segments)
- JMP ( Short Jump ) – EB – (-127 to 128 bytes)
- JMP ( Near Jump ) – E9 – (in a segment)
- For example JMP EAX
- Conditional jump instructions
- Jumps according to bit flags set in the EFLAGS register
- JC, JNC, JZ, JNZ, JS, JNS, JO, JNO
- Unsigned comparisons JA, JAE, JB, JBE
- Signed comparisons JG, JGE, JL, JLE
- Usually followed by CMP instruction
PUSH operand
- Pushes operand on the stack
- Decrements the stack pointer register by operand size
- For example PUSH EAX
POP operand
- Stores the value pointed by the stack pointer in operand
- Increments the stack pointer register by operand size
- For example POP EAX
Note: POP/PUSH EIP is an invalid instruction
PUSHF, POPF
 Describes how the arguments are passed and values returned by functions.
 Steps performed when a function is called
◦ Arguments are passed to the called function
◦ Program execution is transferred to the address of the called function
◦ Called function starts with lines of code that prepare stack and registers for use within
the function. Also known as function prologue.
 For e.g.
push ebp
mov ebp, esp
or with enter instruction
◦ Called function ends with lines of code that restore stack and registers set initially. Also
known as function epilogue.
 For e.g.
mov esp, ebp
pop ebp
ret
or with leave instruction
◦ Passed arguments are removed from the stack, known as stack cleanup. Can be performed
by both calling function or called function depending on the calling convention used.
 __cdecl (C calling convention)
◦ Arguments are passed from right to left and placed on the stack
◦ Stack cleanup is performed by the caller
◦ Return values are stored in EAX register
◦ Standard calling convention used by C compilers
 __stdcall (Standard calling convention)
◦ Arguments are passed from right to left and placed on the stack
◦ Stack cleanup is performed by the called function
◦ Return values are stored in EAX register
◦ Standard calling convention for Microsoft Win32 API
 __fastcall (Fast calling convention)
◦ Arguments passed are stored in registers for faster access
 Thiscall
◦ Arguments are passed from right to left and placed on the stack. this pointer placed in
ECX
- Standard calling convention for calling member functions of C++ classes
 Stack is a LIFO (Last In First Out) type data structure
 Stacks grows downward in memory, from higher memory address to
lower memory address
 PUSH decrement the stack pointer i.e ESP
 POP Increment the stack pointer i.e ESP
 Each function has its own stack frame
 Function prologue setup the stack frame for each function
 Local variable of a function are stored into its stack frame
Reversing malware analysis training part4 assembly programming basics
Reversing malware analysis training part4 assembly programming basics
 Each function creates its own stack.
 Caller function stack: known as parent stack.
 Called function stack: known as child stack.
For e.g.
main(){ ASM Pseudo:
sum(); _main:
} 123: push ebp
124: mov ebp,esp
125: sub esp,val
126: call _sum
127: mov esp,ebp
128: pop ebp
129: ret
Reversing malware analysis training part4 assembly programming basics
Reversing malware analysis training part4 assembly programming basics
Reversing malware analysis training part4 assembly programming basics
 #include <stdio.h>
 /*
 Author: Amit Malik
 http://www.securityxploded.com - Compile in Dev C++
 */
 int mysum(int,int);
 int main()
 {
 int a,b,s;
 a = 5;
 b = 6;
 s = mysum(a,b); // call mysum function
 printf("sum is: %d",s);
 getchar();
 }
 int mysum(int l, int m) // mysum function
 {
 int c;
 c = l + m;
 return c;
 }
Reversing malware analysis training part4 assembly programming basics
 64 bit instruction set architectures based on Intel 8086 CPU
 Address a linear address space up to 16TB
 16, 64 bit General Purpose Registers (GPR)
 6, 16 bit Segment Registers
 RFLAGS and RIP register
 Control Registers (CR0-CR4) and CR8 (16 bits)
 Memory Management Registers Descriptor Table Registers (GDTR,
IDTR, LDTR) size expanded to 10 bytes
 Debug Registers ( DR0-DR7)
Thank You !

More Related Content

What's hot (20)

PDF
Dynamic Binary Instrumentation
Cysinfo Cyber Security Community
 
PDF
SEH based buffer overflow vulnerability exploitation
Payampardaz
 
PDF
Basic buffer overflow part1
Payampardaz
 
PPTX
Reversing & malware analysis training part 3 windows pe file format basics
securityxploded
 
PPTX
Advanced Malware Analysis Training Session 2 - Botnet Analysis Part 1
securityxploded
 
PPTX
Buffer overflow
قصي نسور
 
PPTX
Advanced malware analysis training session 7 malware memory forensics
Cysinfo Cyber Security Community
 
PPTX
Stack-Based Buffer Overflows
Daniel Tumser
 
PPTX
Anti-Virus Evasion Techniques and Countermeasures
n|u - The Open Security Community
 
PPTX
Reversing & malware analysis training part 2 introduction to windows internals
securityxploded
 
PPTX
Advanced Malware Analysis Training Session 5 - Reversing Automation
securityxploded
 
PPTX
Advanced malware analysis training session4 anti-analysis techniques
Cysinfo Cyber Security Community
 
PPTX
Buffer overflow explained
Teja Babu
 
PPTX
Advanced Malware Analysis Training Session 11 - (Part 2) Dissecting the Heart...
securityxploded
 
PDF
Buffer overflow attacks
Sandun Perera
 
PPTX
Reversing & malware analysis training part 1 lab setup guide
securityxploded
 
PDF
JProfiler / an introduction
Tommaso Torti
 
PPT
Perl Modules
stn_tkiller
 
PPTX
Reversing & Malware Analysis Training Part 11 - Exploit Development [Advanced]
securityxploded
 
PPTX
Reversing malware analysis trainingpart9 advanced malware analysis
Cysinfo Cyber Security Community
 
Dynamic Binary Instrumentation
Cysinfo Cyber Security Community
 
SEH based buffer overflow vulnerability exploitation
Payampardaz
 
Basic buffer overflow part1
Payampardaz
 
Reversing & malware analysis training part 3 windows pe file format basics
securityxploded
 
Advanced Malware Analysis Training Session 2 - Botnet Analysis Part 1
securityxploded
 
Buffer overflow
قصي نسور
 
Advanced malware analysis training session 7 malware memory forensics
Cysinfo Cyber Security Community
 
Stack-Based Buffer Overflows
Daniel Tumser
 
Anti-Virus Evasion Techniques and Countermeasures
n|u - The Open Security Community
 
Reversing & malware analysis training part 2 introduction to windows internals
securityxploded
 
Advanced Malware Analysis Training Session 5 - Reversing Automation
securityxploded
 
Advanced malware analysis training session4 anti-analysis techniques
Cysinfo Cyber Security Community
 
Buffer overflow explained
Teja Babu
 
Advanced Malware Analysis Training Session 11 - (Part 2) Dissecting the Heart...
securityxploded
 
Buffer overflow attacks
Sandun Perera
 
Reversing & malware analysis training part 1 lab setup guide
securityxploded
 
JProfiler / an introduction
Tommaso Torti
 
Perl Modules
stn_tkiller
 
Reversing & Malware Analysis Training Part 11 - Exploit Development [Advanced]
securityxploded
 
Reversing malware analysis trainingpart9 advanced malware analysis
Cysinfo Cyber Security Community
 

Viewers also liked (20)

PPTX
Reversing malware analysis training part2 introduction to windows internals
Cysinfo Cyber Security Community
 
PPTX
Reversing malware analysis training part1 lab setup guide
Cysinfo Cyber Security Community
 
PDF
Security Analytics using ELK stack
Cysinfo Cyber Security Community
 
PPTX
Reversing malware analysis training part7 unpackingupx
Cysinfo Cyber Security Community
 
PPTX
Advanced malware analysis training session1 detection and removal of malwares
Cysinfo Cyber Security Community
 
PPTX
Advanced malware analysis training session3 botnet analysis part2
Cysinfo Cyber Security Community
 
PPTX
Reversing malware analysis training part10 exploit development basics
Cysinfo Cyber Security Community
 
PDF
Linux Malware Analysis
Cysinfo Cyber Security Community
 
PPTX
Advanced malware analysis training session11 part2 dissecting the heart beat ...
Cysinfo Cyber Security Community
 
PPTX
Advanced malware analysis training session6 malware sandbox analysis
Cysinfo Cyber Security Community
 
PPTX
Advanced malware analysis training session8 introduction to android
Cysinfo Cyber Security Community
 
PPTX
Reversing malware analysis training part11 exploit development advanced
Cysinfo Cyber Security Community
 
ODP
Introduction to Binary Exploitation
Cysinfo Cyber Security Community
 
PPTX
Advanced malware analysis training session10 part1
Cysinfo Cyber Security Community
 
PPTX
XXE - XML External Entity Attack
Cysinfo Cyber Security Community
 
PDF
ATM Malware: Understanding the threat
Cysinfo Cyber Security Community
 
PPT
Image (PNG) Forensic Analysis
Cysinfo Cyber Security Community
 
PPT
Malware Detection using Machine Learning
Cysinfo Cyber Security Community
 
PPTX
Automating malware analysis
Cysinfo Cyber Security Community
 
PPTX
Malicious Client Detection using Machine learning
Cysinfo Cyber Security Community
 
Reversing malware analysis training part2 introduction to windows internals
Cysinfo Cyber Security Community
 
Reversing malware analysis training part1 lab setup guide
Cysinfo Cyber Security Community
 
Security Analytics using ELK stack
Cysinfo Cyber Security Community
 
Reversing malware analysis training part7 unpackingupx
Cysinfo Cyber Security Community
 
Advanced malware analysis training session1 detection and removal of malwares
Cysinfo Cyber Security Community
 
Advanced malware analysis training session3 botnet analysis part2
Cysinfo Cyber Security Community
 
Reversing malware analysis training part10 exploit development basics
Cysinfo Cyber Security Community
 
Linux Malware Analysis
Cysinfo Cyber Security Community
 
Advanced malware analysis training session11 part2 dissecting the heart beat ...
Cysinfo Cyber Security Community
 
Advanced malware analysis training session6 malware sandbox analysis
Cysinfo Cyber Security Community
 
Advanced malware analysis training session8 introduction to android
Cysinfo Cyber Security Community
 
Reversing malware analysis training part11 exploit development advanced
Cysinfo Cyber Security Community
 
Introduction to Binary Exploitation
Cysinfo Cyber Security Community
 
Advanced malware analysis training session10 part1
Cysinfo Cyber Security Community
 
XXE - XML External Entity Attack
Cysinfo Cyber Security Community
 
ATM Malware: Understanding the threat
Cysinfo Cyber Security Community
 
Image (PNG) Forensic Analysis
Cysinfo Cyber Security Community
 
Malware Detection using Machine Learning
Cysinfo Cyber Security Community
 
Automating malware analysis
Cysinfo Cyber Security Community
 
Malicious Client Detection using Machine learning
Cysinfo Cyber Security Community
 
Ad

Similar to Reversing malware analysis training part4 assembly programming basics (20)

PDF
Reversing & malware analysis training part 4 assembly programming basics
Abdulrahman Bassam
 
PPTX
Basic ASM by @binaryheadache
camsec
 
PPT
Malware Analysis - x86 Disassembly
Natraj G
 
PPT
Assembly language
Piyush Jain
 
PDF
CNIT 127 Ch 1: Before you Begin
Sam Bowne
 
PDF
CNIT 127 Ch Ch 1: Before you Begin
Sam Bowne
 
PPTX
Intro to reverse engineering owasp
Tsvetelin Choranov
 
PDF
lec15_x86procedure_4up.pdf
hasan58964
 
PPT
8086 arch instns
Ram Babu
 
PDF
Stale pointers are the new black
Vincenzo Iozzo
 
PDF
Reverse Engineering Dojo: Enhancing Assembly Reading Skills
Asuka Nakajima
 
PDF
The Stack and Buffer Overflows
UTD Computer Security Group
 
PDF
CNIT 126 4: A Crash Course in x86 Disassembly
Sam Bowne
 
PPT
chapt_5+6AssemblyLanguagecompleteclear.ppt
mubashrabashir540
 
PPTX
C++ and Assembly: Debugging and Reverse Engineering
corehard_by
 
PDF
X86 assembly & GDB
Jian-Yu Li
 
PPTX
Practical Malware Analysis: Ch 4 A Crash Course in x86 Disassembly
Sam Bowne
 
PPTX
Introduction to Assembly Language
ApekshaShinde6
 
PPTX
Coal (1)
talhashahid40
 
PDF
Cracking for beginners - copy (2)
BAHADUR SINGH THAKUR
 
Reversing & malware analysis training part 4 assembly programming basics
Abdulrahman Bassam
 
Basic ASM by @binaryheadache
camsec
 
Malware Analysis - x86 Disassembly
Natraj G
 
Assembly language
Piyush Jain
 
CNIT 127 Ch 1: Before you Begin
Sam Bowne
 
CNIT 127 Ch Ch 1: Before you Begin
Sam Bowne
 
Intro to reverse engineering owasp
Tsvetelin Choranov
 
lec15_x86procedure_4up.pdf
hasan58964
 
8086 arch instns
Ram Babu
 
Stale pointers are the new black
Vincenzo Iozzo
 
Reverse Engineering Dojo: Enhancing Assembly Reading Skills
Asuka Nakajima
 
The Stack and Buffer Overflows
UTD Computer Security Group
 
CNIT 126 4: A Crash Course in x86 Disassembly
Sam Bowne
 
chapt_5+6AssemblyLanguagecompleteclear.ppt
mubashrabashir540
 
C++ and Assembly: Debugging and Reverse Engineering
corehard_by
 
X86 assembly & GDB
Jian-Yu Li
 
Practical Malware Analysis: Ch 4 A Crash Course in x86 Disassembly
Sam Bowne
 
Introduction to Assembly Language
ApekshaShinde6
 
Coal (1)
talhashahid40
 
Cracking for beginners - copy (2)
BAHADUR SINGH THAKUR
 
Ad

More from Cysinfo Cyber Security Community (20)

PDF
Understanding Malware Persistence Techniques by Monnappa K A
Cysinfo Cyber Security Community
 
PDF
Understanding & analyzing obfuscated malicious web scripts by Vikram Kharvi
Cysinfo Cyber Security Community
 
PDF
Getting started with cybersecurity through CTFs by Shruti Dixit & Geethna TK
Cysinfo Cyber Security Community
 
PPTX
Emerging Trends in Cybersecurity by Amar Prusty
Cysinfo Cyber Security Community
 
PDF
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
Cysinfo Cyber Security Community
 
PDF
Closer look at PHP Unserialization by Ashwin Shenoi
Cysinfo Cyber Security Community
 
PDF
Unicorn: The Ultimate CPU Emulator by Akshay Ajayan
Cysinfo Cyber Security Community
 
PDF
The Art of Executing JavaScript by Akhil Mahendra
Cysinfo Cyber Security Community
 
PDF
Reversing and Decrypting Malware Communications by Monnappa
Cysinfo Cyber Security Community
 
PPTX
DeViL - Detect Virtual Machine in Linux by Sreelakshmi
Cysinfo Cyber Security Community
 
PPTX
Analysis of android apk using adhrit by Abhishek J.M
Cysinfo Cyber Security Community
 
PDF
Understanding evasive hollow process injection techniques monnappa k a
Cysinfo Cyber Security Community
 
PPTX
Security challenges in d2d communication by ajithkumar vyasarao
Cysinfo Cyber Security Community
 
PPTX
S2 e (selective symbolic execution) -shivkrishna a
Cysinfo Cyber Security Community
 
PPTX
Dynamic binary analysis using angr siddharth muralee
Cysinfo Cyber Security Community
 
PPTX
Bit flipping attack on aes cbc - ashutosh ahelleya
Cysinfo Cyber Security Community
 
PDF
POS Malware: Is your Debit/Credit Transcations Secure?
Cysinfo Cyber Security Community
 
PPTX
Introduction to ICS/SCADA security
Cysinfo Cyber Security Community
 
PDF
Format string vunerability
Cysinfo Cyber Security Community
 
PPTX
Deep Web - what to do and what not to do
Cysinfo Cyber Security Community
 
Understanding Malware Persistence Techniques by Monnappa K A
Cysinfo Cyber Security Community
 
Understanding & analyzing obfuscated malicious web scripts by Vikram Kharvi
Cysinfo Cyber Security Community
 
Getting started with cybersecurity through CTFs by Shruti Dixit & Geethna TK
Cysinfo Cyber Security Community
 
Emerging Trends in Cybersecurity by Amar Prusty
Cysinfo Cyber Security Community
 
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
Cysinfo Cyber Security Community
 
Closer look at PHP Unserialization by Ashwin Shenoi
Cysinfo Cyber Security Community
 
Unicorn: The Ultimate CPU Emulator by Akshay Ajayan
Cysinfo Cyber Security Community
 
The Art of Executing JavaScript by Akhil Mahendra
Cysinfo Cyber Security Community
 
Reversing and Decrypting Malware Communications by Monnappa
Cysinfo Cyber Security Community
 
DeViL - Detect Virtual Machine in Linux by Sreelakshmi
Cysinfo Cyber Security Community
 
Analysis of android apk using adhrit by Abhishek J.M
Cysinfo Cyber Security Community
 
Understanding evasive hollow process injection techniques monnappa k a
Cysinfo Cyber Security Community
 
Security challenges in d2d communication by ajithkumar vyasarao
Cysinfo Cyber Security Community
 
S2 e (selective symbolic execution) -shivkrishna a
Cysinfo Cyber Security Community
 
Dynamic binary analysis using angr siddharth muralee
Cysinfo Cyber Security Community
 
Bit flipping attack on aes cbc - ashutosh ahelleya
Cysinfo Cyber Security Community
 
POS Malware: Is your Debit/Credit Transcations Secure?
Cysinfo Cyber Security Community
 
Introduction to ICS/SCADA security
Cysinfo Cyber Security Community
 
Format string vunerability
Cysinfo Cyber Security Community
 
Deep Web - what to do and what not to do
Cysinfo Cyber Security Community
 

Recently uploaded (20)

PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Digital Circuits, important subject in CS
contactparinay1
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 

Reversing malware analysis training part4 assembly programming basics

  • 2. Disclaimer The Content, Demonstration, Source Code and Programs presented here is "AS IS" without any warranty or conditions of any kind. Also the views/ideas/knowledge expressed here are solely of the trainer’s only and nothing to do with the company or the organization in which the trainer is currently working. However in no circumstances neither the trainer nor Cysinfo is responsible for any damage or loss caused due to use or misuse of the information presented here.
  • 3. Acknowledgement  Special thanks to null & Garage4Hackers community for their extended support and cooperation.  Thanks to all the Trainers who have devoted their precious time and countless hours to make it happen. www.SecurityXploded.com
  • 4. Reversing & Malware Analysis Training This presentation is part of our Reverse Engineering & Malware Analysis Training program. Currently it is delivered only during our local meet for FREE of cost.
  • 5. Who am I #1 Amit Malik (sometimes DouBle_Zer0,DZZ)  Member Cysinfo  Security Researcher  RE, Exploit Analysis/Development, Malware Analysis  Email: [email protected]
  • 6. Who am I #2 Swapnil Pathak  Member SecurityXploded  Security Researcher  RE, Malware Analysis, Network Security  Email: [email protected]
  • 7.  Intro to x86-32  Assembly Language  Instructions  Stack Operations  Calling conventions  Demo
  • 8.  32 bit instruction set architectures based on Intel 8086 CPU  Address a linear address space up to 4GB  8, 32 bit General Purpose Registers (GPR)  6,16 bit Segment Registers  EFLAGS and EIP register  Control Registers (CR0-CR4) (16 bits)  Memory Management Registers Descriptor Table Registers (GDTR, IDTR, LDTR)  Debug Registers ( DR0-DR7)
  • 9.  Register ◦ Storage Locations. ◦ Much faster access compare to memory locations.  EAX: Accumulator , mostly stores return values from functions (APIs)  EBX: Base index (for use with arrays)  ECX: Counter  EDX: Data/general  ESI: Source index for string operations.
  • 10.  EDI: Destination index for string operations.  ESP: Stack pointer for top address of the stack.  EBP: Stack base pointer for holding the address of the current stack frame.  EIP: Instruction pointer. Holds the program counter, the next instruction address.  Segment registers: ◦ Used to address particular segments of memory ( code, data, stack ) !) CS: Code !!) SS: Stack !!!) ES: Extra !V) DS: Data V) FS, GS
  • 12.  Bit field of states  Status Flags ◦ Carrry (CF) : set when an arithmetic carry/borrow has been generated out of the MSB. ◦ Zero (ZF) : set when an arithmetic operation result is zero and reset otherwise. ◦ Sign (SF) : set when an arithmetic operation set the MSB i.e. the result value was negative. ◦ Trap (TF ) : when set permits operation of processor in single-step. Mostly used by debuggers. ◦ Interrupt (IF) : determines whether the CPU should handle maskable hardware interrupts. ◦ Direction (DF) : determines the direction (left-to-right or right-to-left) of string processing. ◦ Overflow (OF) : indicates arithmetic overflow.
  • 13.  Low level programming language  Symbolic representation of machine codes, constants.  Assembly language program consist of sequence of process instructions and meta statements  Assembler translates them to executable instructions that are loaded into memory and executed.  Basic Structure [label] : opcode operand1, operand2 opcode – mnemonic that symbolize instructions  Example. ◦ MOV AL, 61h => 10110000 01100001
  • 14. ADD dst, src - Adds the values of src and dst and stores the result into dst. - For example ADD EAX, 1 SUB dst, src - Subtracts src value from dst and stores the result in dst. - For example SUB EAX, 1 CMP dst, src - Subtracts src value from dst but does store the result in dst - Mostly used to set/reset decision making bits in EFLAGS register such as ZF - For example CMP EAX, EBX
  • 15. MOV dst, src - Moves data from src (left operand) to destination (right operand) - For example mov EDI, ESI Note : - Both operands cannot be memory locations. - Both the operands must be of the same size LEA dst, src - Stands for Load Effective Address. - Computes the effective address of src operand and stores it in dst operand. - For example LEA ECX,[EBX + 5] Note: - Generally brackets denote value at memory locations. - In case of LEA it does simple arithmetic and stores it in dst
  • 16. XOR dst, src - Performs a bitwise exclusive OR operation on the dst and src and stores the result in dst. - Each bit of the result is 1 if the corresponding bits of the operands are different, 0 if the corresponding bit are same Note : - When used with same register clears the contents of the register - Optimized way to clear the register. Better than MOV EAX, 0
  • 17. REP - Used with string operations - Repeats a string instruction until ECX (counter register) value is equal to zero. - For example REP MOVS byte ptr DS:[EDI], DS:[ESI] LOOP - Similar to loops in high level languages - Used to execute sequence of instructions multiple times. - For example MOV ECX, 10 Test : INC EBX INC EAX LOOP Test
  • 18. TEST dst, src - Performs bitwise logical and between dst and src - Updates the Zero flag bit of the EFLAGS register - Mostly used to check if the return value of the function is not zero - For example TEST EAX, EAX INT 3h - Breakpoint instruction - Used by debuggers to stop execution of the program at particular instruction
  • 19. CALL address - Performs two functions - Push address of the next instruction on stack (return address) - Jump to the address specified by the instruction - For example CALL dword ptr [EAX+4] RET - Transfers the control to the address previously pushed on the stack by CALL instruction - Mostly denotes the end of the function
  • 20. Jump instructions - Categorized as conditional and unconditional - Unconditional jump instructions - JMP (Far Jump) – E9 – (Cross segments) - JMP ( Short Jump ) – EB – (-127 to 128 bytes) - JMP ( Near Jump ) – E9 – (in a segment) - For example JMP EAX - Conditional jump instructions - Jumps according to bit flags set in the EFLAGS register - JC, JNC, JZ, JNZ, JS, JNS, JO, JNO - Unsigned comparisons JA, JAE, JB, JBE - Signed comparisons JG, JGE, JL, JLE - Usually followed by CMP instruction
  • 21. PUSH operand - Pushes operand on the stack - Decrements the stack pointer register by operand size - For example PUSH EAX POP operand - Stores the value pointed by the stack pointer in operand - Increments the stack pointer register by operand size - For example POP EAX Note: POP/PUSH EIP is an invalid instruction PUSHF, POPF
  • 22.  Describes how the arguments are passed and values returned by functions.  Steps performed when a function is called ◦ Arguments are passed to the called function ◦ Program execution is transferred to the address of the called function ◦ Called function starts with lines of code that prepare stack and registers for use within the function. Also known as function prologue.  For e.g. push ebp mov ebp, esp or with enter instruction ◦ Called function ends with lines of code that restore stack and registers set initially. Also known as function epilogue.  For e.g. mov esp, ebp pop ebp ret or with leave instruction ◦ Passed arguments are removed from the stack, known as stack cleanup. Can be performed by both calling function or called function depending on the calling convention used.
  • 23.  __cdecl (C calling convention) ◦ Arguments are passed from right to left and placed on the stack ◦ Stack cleanup is performed by the caller ◦ Return values are stored in EAX register ◦ Standard calling convention used by C compilers  __stdcall (Standard calling convention) ◦ Arguments are passed from right to left and placed on the stack ◦ Stack cleanup is performed by the called function ◦ Return values are stored in EAX register ◦ Standard calling convention for Microsoft Win32 API  __fastcall (Fast calling convention) ◦ Arguments passed are stored in registers for faster access  Thiscall ◦ Arguments are passed from right to left and placed on the stack. this pointer placed in ECX - Standard calling convention for calling member functions of C++ classes
  • 24.  Stack is a LIFO (Last In First Out) type data structure  Stacks grows downward in memory, from higher memory address to lower memory address  PUSH decrement the stack pointer i.e ESP  POP Increment the stack pointer i.e ESP  Each function has its own stack frame  Function prologue setup the stack frame for each function  Local variable of a function are stored into its stack frame
  • 27.  Each function creates its own stack.  Caller function stack: known as parent stack.  Called function stack: known as child stack. For e.g. main(){ ASM Pseudo: sum(); _main: } 123: push ebp 124: mov ebp,esp 125: sub esp,val 126: call _sum 127: mov esp,ebp 128: pop ebp 129: ret
  • 31.  #include <stdio.h>  /*  Author: Amit Malik  http://www.securityxploded.com - Compile in Dev C++  */  int mysum(int,int);  int main()  {  int a,b,s;  a = 5;  b = 6;  s = mysum(a,b); // call mysum function  printf("sum is: %d",s);  getchar();  }  int mysum(int l, int m) // mysum function  {  int c;  c = l + m;  return c;  }
  • 33.  64 bit instruction set architectures based on Intel 8086 CPU  Address a linear address space up to 16TB  16, 64 bit General Purpose Registers (GPR)  6, 16 bit Segment Registers  RFLAGS and RIP register  Control Registers (CR0-CR4) and CR8 (16 bits)  Memory Management Registers Descriptor Table Registers (GDTR, IDTR, LDTR) size expanded to 10 bytes  Debug Registers ( DR0-DR7)

Editor's Notes

  • #28: The first three instructions (123,124,125) are known as prologue. And last three instructions(127,128,129) are know as epilogue. When main call the the sum it push the address of next instruction on stack..means 127 on stack and then create its stack. See next slides.
  • #29: Here main is preparing its stack. EBP (base pointer) register is used to track the variables. So we need to push parent function ebp on the stack so that when function return to parent function it can start normally.
  • #30: The instruction mov ebp,esp setting the stack for main(or setting the ebp for main to track variables). And sub esp, val is creating the space for local variables of main function. Although in e.g. we have no local variable but this is for illustrative purpose. NOTE: As we can see in the above pic that stack grows downward (from higher memory address to lower memory address) means something [ebp+val] point to parameters for function (can be pass by value or pass by reference) and everything [ebp-val] point to the local variable for that function. *val- can be any value in hex..like 3,4,a,b etc. etc. Note: ret (startup) address is the address of next instruction in startup function. Explanation of startup function is beyond the scope of this presentation. But main function return 0 or 1 to startup function. Means process successfully completed or error.
  • #31: Now main is calling sum. The first task is to push the address of next instruction means address 127 on stack. So that when function sum return it returns to 127 so that program execution continue in a normal way. Please note that no (another) instruction is required to push ret(127) on stack because call sum will do it for us.. Similar to like main, sum will creates its stack with similar instructions and also destroy its stack with similar instructions (127,128,129). Note: The instructions to create stack and destroy stack.. may vary with compiler to complier and are the issues of compiler optimization..for eg. Some compilers user push reg. instead of sub esp,val for integers.