DH.J

πŸ’» Research

V8 Debug & GDB Plugin

In this article, we will write how to debug with GDB for V8.

Donghyeon JeongΒ·Β·38 min read

Installation - GDB

bash

# recommend: pwndbg or gef debugger

[GEF]
# using curl
$ bash -c "$(curl -fsSL https://gef.blah.cat/sh)"

# using wget
$ bash -c "$(wget https://gef.blah.cat/sh -O -)"

# or manually
$ wget -O ~/.gdbinit-gef.py -q https://gef.blah.cat/py
$ echo source ~/.gdbinit-gef.py >> ~/.gdbinit

Add Plugin - V8

- This assumes that the v8 repository was fetched in the previous post.

- If you haven't fetched the v8 repository yet, see the previous article.

bash

vi ~/.gdbinit

# add line
source <v8path>/tools/gdb-v8-support.py
source <v8path>/tools/gdbinit

Start Debugging

- Navigate to the path to the built binaries in the v8 repository and run the following command


cd <v8path>/out/x64.release
image
image

![[a] object memory addr = 0x16d50004842d / addr map: 0x16d50004842d-0x1

*** Since v8 uses pointer compression, you can only view 32 address in memory.

* Pointer Compression: https://v8.dev/blog/pointer-compression**](https://prod-files-secure.s3.us-west-2.amazonaws.com/ddfb90e3-766a-4fa2-b58c-bd09d4b4e865/ea933ed9-9509-4096-a2da-7cf9e933fc8c/Screenshot_2024-05-09_at_11.14.43_AM.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4667IMJDJIG%2F20261011%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20261011T231209Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEK%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJIMEYCIQDCfZoF0lgzVr5tbq7BHHqXpFptH2P1c0LsE1Yrzu7YkwIhAP%2FaTh%2FC1YXDfc8t6o%2BeQvYA1US%2BJkmKNIFXboDUgfNqKv8DCHgQABoMNjM3NDIzMTgzODA1Igy5HXmrGftI7c5YXIkq3AMy8Xm0T5Jfwff1x35rJsqaHhLSK9kqx3q8JjJ1s1iuA1HScMIQcQLaJUnG4CUJhHDpGl9bKia4NI0I1Y791Fc%2BqamnsP9JbOQfapl5%2FnyaBTuvJPVIyDZhLFSZhToN6QgwWuGd9vtGnmP7zR3zBQrkb4mYoUZCTMqT%2FprDOsgU3MizfML7h%2FeeMKfTZbrIQkEk5vxm%2F%2FZXeolnS9YUWf5KcNX3siQHHckFpcZM5oC3qhV4gSo10Z%2FJ8GgppgflEXe8U2IUN2O06k%2FfzwkHztbCZWgf3BBLYtrauSOuhsifwGlYoMRfDOpPl%2BbChz3SPgaJ3ryaXCv4p5XuulR3Xypj0G0m8goqo6d9aJPqoUpCMpD5C2ecNnaea%2FwFreJM1qgpkFOFC9v3yq67rdii4Hsg37nZEWbyB6j8lO600PDCt1Jdj6VwZB7bAFcb5CafHejkblwjeQPluYEUNWoxXELE4ckhSWXsVroDJcRdiOYU%2BHpbFbnBUf4YqIUdx81QMmcn%2BoHb2JTHIeGMmxwNBMslPeFXBT9elmBhqDyO2xc%2BavTUGDDZ%2FFQhk22HMAemH4ZptShIsPFijQwfLnCc5dq1t5HS%2Bk%2F%2BG62HyuckCzEiHLx3zaQHnBXr7UMVQjDlnbDWBjqkAWA74VGpdNylH2mR%2BFXa4hwA2eLZ4juqzL%2FRW8QO8Xuwng%2FL6IFHzy7tVb19FIeMckrKycFNbolJXDQ%2BnYzC6rPgFFVUaqjfJ2yLX1e8Z%2BcZkf%2Bgd%2F%2BMmQtOksDFyfZ7xoPSKUeqM4xou9t80IxpHUriB4lcpUt%2BZNe8qu3y7sawRwqU4irknPraOFOBMDt2Ov48o20fASCZc8qFWDN%2B5%2BcjMSl%2B&X-Amz-Signature=1732ddcfe1c1e755f0339f6f92d3a14faf45c7df89f7a1a2800ffb656a181f3c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

![elements = 0x16d5004841d

0x16d50004841c = map / 0x16d50004841c+0x8 = length](https://prod-files-secure.s3.us-west-2.amazonaws.com/ddfb90e3-766a-4fa2-b58c-bd09d4b4e865/b1acfb97-519c-48b0-817c-1fea4f6cc43b/Screenshot_2024-05-09_at_12.50.46_PM.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB4667IMJDJIG%2F20261011%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20261011T231209Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEK%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLXdlc3QtMiJIMEYCIQDCfZoF0lgzVr5tbq7BHHqXpFptH2P1c0LsE1Yrzu7YkwIhAP%2FaTh%2FC1YXDfc8t6o%2BeQvYA1US%2BJkmKNIFXboDUgfNqKv8DCHgQABoMNjM3NDIzMTgzODA1Igy5HXmrGftI7c5YXIkq3AMy8Xm0T5Jfwff1x35rJsqaHhLSK9kqx3q8JjJ1s1iuA1HScMIQcQLaJUnG4CUJhHDpGl9bKia4NI0I1Y791Fc%2BqamnsP9JbOQfapl5%2FnyaBTuvJPVIyDZhLFSZhToN6QgwWuGd9vtGnmP7zR3zBQrkb4mYoUZCTMqT%2FprDOsgU3MizfML7h%2FeeMKfTZbrIQkEk5vxm%2F%2FZXeolnS9YUWf5KcNX3siQHHckFpcZM5oC3qhV4gSo10Z%2FJ8GgppgflEXe8U2IUN2O06k%2FfzwkHztbCZWgf3BBLYtrauSOuhsifwGlYoMRfDOpPl%2BbChz3SPgaJ3ryaXCv4p5XuulR3Xypj0G0m8goqo6d9aJPqoUpCMpD5C2ecNnaea%2FwFreJM1qgpkFOFC9v3yq67rdii4Hsg37nZEWbyB6j8lO600PDCt1Jdj6VwZB7bAFcb5CafHejkblwjeQPluYEUNWoxXELE4ckhSWXsVroDJcRdiOYU%2BHpbFbnBUf4YqIUdx81QMmcn%2BoHb2JTHIeGMmxwNBMslPeFXBT9elmBhqDyO2xc%2BavTUGDDZ%2FFQhk22HMAemH4ZptShIsPFijQwfLnCc5dq1t5HS%2Bk%2F%2BG62HyuckCzEiHLx3zaQHnBXr7UMVQjDlnbDWBjqkAWA74VGpdNylH2mR%2BFXa4hwA2eLZ4juqzL%2FRW8QO8Xuwng%2FL6IFHzy7tVb19FIeMckrKycFNbolJXDQ%2BnYzC6rPgFFVUaqjfJ2yLX1e8Z%2BcZkf%2Bgd%2F%2BMmQtOksDFyfZ7xoPSKUeqM4xou9t80IxpHUriB4lcpUt%2BZNe8qu3y7sawRwqU4irknPraOFOBMDt2Ov48o20fASCZc8qFWDN%2B5%2BcjMSl%2B&X-Amz-Signature=9224312b6e2ab4c9e649afe94ca06ed944ca1d1f518242cee4ed2da6b37db85e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)