ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
از اینکه تا اینجا از من حمایت کردید خیلی ممنونم من سعی می‌کنم تمام مطالبی که ارائه میدم بهترین باشن و امیدوارم که از اونا خوشتون بیاد و احساس خوبی داشته باشید همه تون رو دوست دارم.
الون 🩶

Thank you so much for supporting me so far. I try to make all the content I provide the best and I hope you like it and feel good I love you all.
Alone 🖤
29
Dynamic Code Mutation  Anti-Debug Evasion سطح متوسط تا پیشرفته


چالش: نرم‌افزارهایی که کدشون به‌صورت داینامیک تغییر میکنه و چند لایه Anti-Debug پیچیده دارن فانکشن‌ها یا چک‌ها داخل runtime درست میشن یا رمزگذاری میشن روش‌ های معمول مهندسی معکوس جواب نمیدن


ابزارها



x64dbg یا WinDbg
برای trace سطح پایین و بررسی memory

Frida یا Python
برای hook و دستکاری runtime

IDA یا Ghidra
برای استخراج الگوریتم‌های رمزگذاری و ساختار باینری


تکنیک‌ها


گرفتن snapshot از memory قبل و بعد از اجرای هر بخش و تشخیص تغییرات کد یا داده‌ ها


هوک کردن فانکشن‌ های runtime-generated یا رمزگذاری شده


بایپس چک‌ها با patch یا تغییر مقادیر در memory بدون تغییر فایل اصلی


مقابله با Anti-Debug پیچیده مانند timing check، ptracing یا self-debug detection


تمرین عملی


برنامه‌ای با runtime-generated code اجرا بشه و snapshot از memory گرفته شه


تفاوت‌ ها تحلیل و فانکشن‌ های runtime-generated یا رمزگذاری شده hook باید بشن



بایپس چک‌ها با patch یا تغییر مقادیر داخل memory انجام میشه


اثر bypass بررسی و داده ها یا رشته‌ ها استخراج باید بشن


ترکیبruntime code generation ، dynamic patching و automation روش‌ های معمول RE رو شکست میده

تمرین واقعی نزدیک به نرم‌افزار های صنعتی و محافظت‌ شده

امکان ساخت یک framework کوچیک semi-automated RE برای bypass چند برنامه



Dynamic Code Mutation Anti-Debug Evasion

Challenge: Applications modify their code dynamically and have multiple layers of complex Anti-Debug techniques
Functions or checks are generated or encrypted at runtime

Traditional reverse engineering methods often fail

Tools

x64dbg or WinDbg for low-level tracing and memory inspection

Frida or Python for runtime hooking and manipulation

IDA or Ghidra for extracting encryption algorithms and binary structure


Techniques

Take snapshots of memory before and after executing each section to detect code or data changes

Hook runtime-generated or encrypted functions

Bypass checks by patching or modifying memory values without touching the original file

Counter complex Anti-Debug mechanisms such as timing checks ptracing or self-debug detection

Practical Exercise

Run a program with runtime-generated code and take memory snapshots

Analyze differences and identify runtime-generated or encrypted functions

Hook identified functions
Bypass checks using memory patches or value modifications
Verify the effect of bypass and extract relevant data or strings

Combination of runtime code generation dynamic patching and automation defeats standard RE methods

Realistic Exercise

Simulate an industrial-level protected software
Optionally build a small semi-automated RE framework for bypassing multiple programs
6
شناخت توابع کتابخونه‌ای Standard Library در باینری


چرا این مهمه؟

بیشتر برنامه‌ها پر از صدا زدن تابع‌ های استاندارد هستن مثل:

strcmp, strncmp, strcpy

memcpy, memset

printf, scanf

malloc, free



وقتی دارید یه باینری رو آنالیز میکنید اگه سریع بتونید تشخیص بدید که فلان کد داره strcmp اجرا میکنه کلی از وقتتون صرفه‌ جویی میشه




وقتی Import Table وجود داره

خیلی ساده‌ست: توی IDA/Ghidra یا هر ابزار دیگه اسم توابع رو تو Import Table میبینید
مثلا:
call _strcmp


اینجا هیچ کاری لازم نیست اسمش مشخصه




وقتی Import Table خراب یا پاک شده

اینجا دیگه اسم‌ ها رو نداریم باید از روی الگوی رفتاری Pattern بفهمیم تابع چیه

مثال – strcmp:

mov al, [esi]     ; str1 کاراکتر از
mov cl, [edi]     ; str2 کاراکتر از
cmp al, cl        ; مقایسه
jne not_equal
test al, al       ;   به صفر رسیدیم؟
jne loop



این الگو مقایسه بایت‌ به‌ بایت توقف وقتی کاراکتر صفر شد نشونه‌ی یه strcmp یا شبیهشه

مثال  memcpy:

mov al, [esi]     ;  src اپلود از
mov [edi], al     ;  deast ذخیره در
inc esi
inc edi
dec ecx
jnz loop


این یعنی یه کپی ساده از حافظه  همون memcpy




Inline

خیلی وقتا مخصوصا با Optimization این توابع مستقیم توی کد ظاهر میشن اون موقع باید حواستون باشه که از روی الگو تشخیص بدید



تکنیک کمکی در RE:

توی IDA/Ghidra میتونید یه تابع بدون اسم رو پیدا کنید و بعد از روی رفتارش مثلا همین حلقه کپی حافظه بهش Label بدید:

sub_401000 → memcpy_like


اینجوری دفعه بعد که دیدینش راحت‌ تر تشخیص میدید


خیلی مهمه!

چون خیلی از CrackMe ها و حتی باینری‌های واقعی از همین توابع برای چک کردن پسورد یا مقایسه داده استفاده میکنن سریع تشخیص بدید strcmp هست مستقیم میرید دنبال آرگومان‌هاش که پسورد اونجاست



تمرین پیشنهادی:

یه کد C با strcmp و memcpy بنویسید

خروجی اسمبلی رو ببینید

بعد همون کد رو با Optimization (-O2) بسازید و دوباره ببینید

سعی کنید چشمی تشخیص بدید که الگوی strcmp هست یا memcpy


Identifying Standard Library Functions in Binary

Why is this important?

Most programs are full of calling standard functions like:

strcmp, strncmp, strcpy

memcpy, memset

printf, scanf

malloc, free


When you are analyzing a binary if you can quickly recognize that a certain code is executing strcmp it will save you a lot of time

When there is an Import Table

It is very simple: in IDA/Ghidra or any other tool you will see the names of the functions in the Import Table

For example:

call _strcmp


Nothing is needed here, the name is specific

When the Import Table is corrupted or deleted

Here we no longer have the names we have to figure out what the function is from the Pattern behavior

Example – strcmp:

mov al, [esi] ; str1 character from
mov cl, [edi] ; str2 character from
cmp al, cl ; compare
jne not_equal
test al, al ; did we reach zero?
jne loop


This pattern compares byte by byte stops when the character is zero which is a sign of a strcmp or similar

Example memcpy:

mov al, [esi] ; src upload from
mov [edi], al ; deast save to
inc esi
inc edi
dec ecx
jnz loop


This means a simple copy of the memory the same as memcpy

Inline

Many times especially with Optimization, these functions appear directly in the code, then you should be careful to recognize them by the pattern

Helpful technique in RE:

In IDA/Ghidra you can find an unnamed function and then label it based on its behavior for example this memory copy loop:

sub_401000 → memcpy_like


This way, you will recognize it more easily the next time you see it

Very important!

Since many CrackMes and even real binaries use these functions to check passwords or compare data you can quickly identify strcmp by going straight to its arguments where the password is

Suggested exercise:

Write some C code with strcmp and memcpy

See the assembly output

Then build the same code with Optimization (-O2) and see it again

Try to visually identify whether the pattern is strcmp or memcpy
6
پچ داینامیک با hook (Frida)


آنالیز و مانیتور یک فانکشن در زمان اجرا روی نمونه مجاز بدون تغییر فایل


ابزار
Frida

برای پیدا کردن آدرس نام تابع Ghidra IDA

روش

ادرس یا نام تابع هدف رو داخل IDA/Ghidra پیدا کنید


با Frida به پروسس attach یا اونو اجرا کنید


تابع رو hook کنید و پارامترهاشو مقدار بازگشتیشون رو لاگ کنید


لاگ‌ها رو بررسی و منطق تابع رو مستندسازی کنید

دستور اجرا

frida -f "C:\path\sample.exe" -l hook.js --no-pause



Dynamic Patching with Hooking Using Frida


Analyze and monitor a function at runtime on a legitimate sample without modifying the file itself

Tools:

Frida for hooking and runtime inspection

IDA or Ghidra for locating function addresses or names

Workflow

Identify the target function
Use IDA or Ghidra to find the address or name of the function you want to monitor


Attach or launch the process with Frida

You can attach to a running process or start it under Frida’s control


Hook the function
Use Frida to intercept the function call capture its parameters and log its return value


Analyze the logs
Check the captured input and output to understand the functions behavior and document its logic



Example Frida command:

frida -f "C:\path\sample.exe" -l hook.js --no-pause
3
پچ ایمن برای باینری با checksum

درک کار checksum یا integrity در یک برنامه آموزشی بدون اینکه قانون نقض بشه

ابزار:
IDA یا Ghidra
دیباگر مثل x64dbg یا WinDbg ابزار ثبت لاگ

روش:

فانکشن یا نقطه ای که checksum محاسبه میشه پیدا کنید

بررسی کنید چه ورودی هایی روی محاسبه تاثیر دارن و زمان محاسبه کیه
جریان داده ها رو مستندسازی کنید و رفتار برنامه وقتی checksum اشتباه باشه رو ثبت کنید

تمرین:

یک باینری نمونه بسازید که checksum داخلی داشته باشه مسیر محاسبه اون رو تحلیل و در یک جدول کوچیک گزارش کنید


Safe patch Analysis of Binaries with Checksum


Understand how a checksum or integrity mechanism works in an educational binary without violating any rules

Tools:

IDA or Ghidra for static analysis
Debugger like x64dbg or WinDbg for runtime observation
Logging tools for recording program behavior

Workflow:

Locate the checksum function or the point where checksum is calculated


Examine which inputs affect the checksum and when the calculation occurs


Track data flow and document program behavior when checksum verification fails



Exercise:

Create a sample binary with an internal checksum Analyze the calculation path and report it in a small table
4
IMG_1905.JPG
1.6 MB
ARM 32 Bit Assembly Basics Cheat Sheet
5
Media is too big
VIEW IN TELEGRAM
ساخت بدافزار FUD با استفاده از زبان C

How To Make FUD Malware Using C Language
10
Packt.Ghidra.Software.Reverse-Engineering.for.Beginners.pdf
74.7 MB
👾 Ghidra Software

Reverse-Engineering for Beginners, 2nd Edition: Master the art of debugging, from understanding code to mitigating threats (2025)
Author: David Alvarez Perez
🔥73
آنالیز استاتیک ساده

هدف:
یادگیری بررسی یک برنامه بدون اجرا شدن و استخراج اطلاعات مهم: توابع رشته‌ها و نقاط ورودی

ابزارهای مورد نیاز

IDA یا Ghidra

Strings

PEview یا CFF Explorer


مراحل قدم به قدم

بررسی رشته‌ها


تصویر خروجی strings روی برنامه ساده:

Hello World!

Enter your name:

توضیح: این رشته‌ها اطلاعات مهم برنامه رو نشون میدن


دیاسمبل کردن برنامه



متن IDA/Ghidra با نمایش Entry Point و توابع اصلی:

Main
Sub_401000


توضیح: توابع اصلی رو پیدا کنید و ببینید رشته‌ها چگونه استفاده میشن


شناسایی نقاط ورودی



متن PE Header با علامت Entry Point:

Entry Point: 0x401000


توضیح: این نقطه اولین جایی که برنامه اجرا میشه


بررسی Import Table



متن Import Table در PE view:

KERNEL32.dll
  - GetModuleHandleA
  - CreateFileA
  - ReadFile


توضیح: نشون میده برنامه از چه توابع خارجی و منابعی استفاده میکنه


نکات مهم:

هیچ برنامه‌ای اجرا نمیشه پس ریسک آلوده شدن سیستم وجود نداره

همیشه با نسخه کپی یا در ماشین مجازی کار کنید



Simple Static Analysis

Objective:
Learn to examine a program without running it and extract important information: functions strings and entry points

Tools Required

IDA or Ghidra

Strings

PEview or CFF Explorer

Step-by-Step

Examining Strings

Image of the output of strings on a simple program:

Hello World!

Enter your name:


Explanation: These strings show important information about the program

Disassembling the program

IDA/Ghidra text showing the Entry Point and main functions:

Main
Sub_401000


Explanation: Find the main functions and see how the strings are used

Identifying entry points

PE Header text with Entry Point:

Entry Point: 0x401000


Explanation: This is the first place the program is executed

Checking the Import Table

Import Table text in PE view:

KERNEL32.dll
- GetModuleHandleA
- CreateFileA
- ReadFile


Explanation: Shows what external functions and resources the program uses

Important notes:

No program is executed so there is no risk of system infection

Always work with a copy or in a virtual machine
6