1 265
Підписники
Немає даних24 години
-37 днів
+730 днів
Архів дописів
1 265
This is a Project Working on Reverse Engineering the Apple G13 GPU Architecture
https://github.com/dougallj/applegpu
@reverseengine
1 265
CVE-2025-50168-pwm2owm-berlin-2025
https://github.com/D4m0n/CVE-2025-50168-pwn2own-berlin-2025/tree/main/P2O
@reverseengine
1 265
First known AI-powered Ransomware
https://x.com/ESETresearch/status/1960365364300087724
@reverseengine
1 265
What I Learned from Reverse Engineering Windows Containers
https://unit42.paloaltonetworks.com/what-i-learned-from-reverse-engineering-windows-containers
@reverseengine
1 265
Automation in Reverse Engineering: String Decryption
https://synthesis.to/2021/06/30/automating_string_decryption.html
@reverseengine
1 265
Reverse Engineering Go Binaries with Ghidra
https://cujo.com/reverse-engineering-go-binaries-with-ghidra
@reverseengine
1 265
Analysing a 1-day Vulnerability in the Linux Kernel's TLS Subsyste
https://faith2dxy.xyz/2025-10-02/kCTF-TLS-nday-analysis/
@reverseengine
1 265
Acunetix Premium Plus OnPremise with API Discovery
v 25.8.250820089
https://cloud.proxy-bar.org/s/5KhtUcpx3Cxln0Y
1 265
DWARF as a Shared Reverse Engineering Format
https://lief.re/blog/2025-05-27-dwarf-editor/
@reverseengine
1 265
Reverse engineering the Obfuscated TikTok VM
https://github.com/LukasOgunfeitimi/TikTok-ReverseEngineering
@reverseengine
1 265
اگه مطالب رو دوست داشتید استار هم بزنید لطفا (:
If you liked the content, please star it (:
1 265
Part 6 Buffer OverflowUnderstanding the Crash and the Structure of the Function Frame on the Stack In this part, we are going to see what exactly happens behind the scenes when a buffer overflow causes a crash. After this part, we should understand why overwriting data on the stack changes the return address. What are the components of a function frame? And how can these components be viewed and analyzed with gdb. When a function is called in C, the system creates a space on the stack for that function. We call this space the function frame. Each frame contains these parts. Local variables of the function Parameter values Saved RBP or base pointer for return Saved return address which the function returns to after the function completes If more data is written to the local buffer than the limit, these important values are overwritten in the frame And as a result, the program crashes on return or jumps to the wrong address This code helps us see the function frame and crash and analyze it in gdb
#include <stdio.h> #include <string.h> void crash(char *input) { char buffer[16]; printf("address of buffer: %p\n", buffer); strcpy(buffer, input); printf("done copying\n"); } int main(int argc, char **argv) { if (argc < 2) { printf("usage: %s input\n", argv[0]); return 1; } crash(argv[1]); printf("returned safely\n"); return 0; }Execution and analysis commands
gcc -g file4.c -o file4
gdb --args ./file4 $(python3 -c "print('A'*40)")After running the program in gdb, perform these steps
break crash run info frame x/32x $rbp x/32x $rspHere you can see that the buffer is below the saved RBP Every byte you write out of the buffer will eventually reach the saved RBP and then the return address To view the crash
continueThe program crashes with a segmentation fault error See the return path with the following command
backtraceAnd check the last return address with this command
info registers ripFull explanation When executing the crash function, the system first saves the current RBP Then it moves the RSP down to provide the necessary space for local variables In this new buffer space, Yes When we write data larger than the buffer size, first the data is written to local variables, then to RBP, and then to the return address At the moment the function wants to return, the wrong value is read from the stack and RIP jumps to the wrong address, which causes a segmentation fault Interesting part You can see the difference before and after the overflow in gdb with this command
Before strcpy x/32x $rbp-32
After strcpy x/32x $rbp-32You can see that the A bytes have filled all the space between the buffer and the return address This is the reason for the program crash
