Tasga
30.01.2026, 05:49
Недавно на нейкой CTF площадке мне надо было в сыром дампе стековой памяти процесса найти канарейку (просто дамп, а-ля px @ rsp, т.е в дебаггере не открыть, просто байты). Сам быдлоскрипт, конечно, правильно определил, но существуют ли какие-то человеческие способы для такой нестандартной задачи ?
Скрипт прилагаю, можете поржать над моими потугами
Python:
from
collections
import
Counter
from
pwn
import
u64
adrs
=
[
]
with
open
(
"pid-4018-7ffc1efb8000-7ffc1efd9000"
,
"rb"
)
as
file
:
dmp
=
file
.
read
(
)
for
i
in
range
(
0
,
len
(
dmp
)
,
8
)
:
sub
=
dmp
[
i
:
i
+
8
]
if
(
u64
(
sub
)
!=
0
)
and
(
'0x7FF'
not
in
str
(
hex
(
u64
(
sub
)
)
)
)
and
(
len
(
str
(
hex
(
u64
(
sub
)
)
)
)
==
18
)
and
(
str
(
hex
(
u64
(
sub
)
)
)
[
-
2
:
]
==
'00'
)
:
adrs
.
append
(
u64
(
sub
)
)
counts
=
Counter
(
adrs
)
print
(
hex
(
max
(
counts
,
key
=
counts
.
get
)
)
)
Скрипт прилагаю, можете поржать над моими потугами
Python:
from
collections
import
Counter
from
pwn
import
u64
adrs
=
[
]
with
open
(
"pid-4018-7ffc1efb8000-7ffc1efd9000"
,
"rb"
)
as
file
:
dmp
=
file
.
read
(
)
for
i
in
range
(
0
,
len
(
dmp
)
,
8
)
:
sub
=
dmp
[
i
:
i
+
8
]
if
(
u64
(
sub
)
!=
0
)
and
(
'0x7FF'
not
in
str
(
hex
(
u64
(
sub
)
)
)
)
and
(
len
(
str
(
hex
(
u64
(
sub
)
)
)
)
==
18
)
and
(
str
(
hex
(
u64
(
sub
)
)
)
[
-
2
:
]
==
'00'
)
:
adrs
.
append
(
u64
(
sub
)
)
counts
=
Counter
(
adrs
)
(
hex
(
max
(
counts
,
key
=
counts
.
get
)
)
)