Compare commits

...

10 Commits

Author SHA1 Message Date
1f3538e47d added first article 2023-07-14 00:00:51 +02:00
26d46413f1 fix typo 2023-07-13 19:31:16 +02:00
cf08ced0fb add runlocal 2023-07-13 19:19:19 +02:00
ecaa29f7c6 test webhook 2023-07-13 19:14:27 +02:00
3df256f4da remove stupid gay stuff 2023-07-13 16:52:19 +02:00
f2413fca02 fixed links 2023-07-13 16:51:21 +02:00
7053c9d6d9 fixed links 2023-07-13 16:50:45 +02:00
27907d4938 fixed links 2023-07-13 16:49:47 +02:00
adb6084255 fix permission chmod 2023-07-13 16:47:47 +02:00
8c0d6a699c added gitkeep 2023-07-13 16:35:16 +02:00
5 changed files with 372 additions and 388 deletions

View File

@ -5,4 +5,6 @@ default: all
all: embed libdzonerzy libdzonerzy-gen all: embed libdzonerzy libdzonerzy-gen
runlocal: embed libdzonerzy-runlocal
clean: clean-tools clean-libdzonerzy clean: clean-tools clean-libdzonerzy

View File

@ -21,7 +21,7 @@ SITE_DIST = dist/site
AWK_UTIL = awk '/^\s*\[[0-9]+\]\s+([^\.].+)/ {print $$2}' AWK_UTIL = awk '/^\s*\[[0-9]+\]\s+([^\.].+)/ {print $$2}'
AWK_UTIL_NOCRLF = awk '/^\s*\[[0-9]+\]\s+([^\.].+)/ {printf $$2" "}' AWK_UTIL_NOCRLF = awk '/^\s*\[[0-9]+\]\s+([^\.].+)/ {printf $$2" "}'
PANDOC_ARGS = --standalone --table-of-contents --section-divs --email-obfuscation=references --css=main.css --include-after-body=$(RAW_DIST)/footer.html PANDOC_ARGS = --standalone --table-of-contents --section-divs --email-obfuscation=references --css="/main.css" --include-after-body=$(RAW_DIST)/footer.html --include-after-body=$(RAW_DIST)/scripts.html
libdzonerzy: libdzonerzy:
@echo "/* DO NOT EDIT THIS FILE - it is machine generated */" > $(SRC_DIR)/res.h @echo "/* DO NOT EDIT THIS FILE - it is machine generated */" > $(SRC_DIR)/res.h
@ -38,11 +38,18 @@ libdzonerzy-dump:
libdzonerzy-gen: libdzonerzy-dump libdzonerzy-gen: libdzonerzy-dump
@mkdir -p $(SITE_DIST)/assets/ @mkdir -p $(SITE_DIST)/assets/
@mkdir -p $(SITE_DIST)/articles/
@$(foreach page, $(wildcard $(RAW_DIST)/pages/*), $(PANDOC) $(PANDOC_ARGS) --from=markdown --to=html --output=$(shell echo $(SITE_DIST)/$(notdir $(page)) | sed 's/\.md/\.html/') $(page);) @$(foreach page, $(wildcard $(RAW_DIST)/pages/*), $(PANDOC) $(PANDOC_ARGS) --from=markdown --to=html --output=$(shell echo $(SITE_DIST)/$(notdir $(page)) | sed 's/\.md/\.html/') $(page);)
@$(foreach article, $(wildcard $(RAW_DIST)/articles/*), $(PANDOC) $(PANDOC_ARGS) --from=markdown --to=html --output=$(shell echo $(SITE_DIST)/articles/$(notdir $(article)) | sed 's/\.md/\.html/') $(article);)
@cp $(RAW_DIST)/main.css $(SITE_DIST)/main.css @cp $(RAW_DIST)/main.css $(SITE_DIST)/main.css
@cp $(RAW_DIST)/main.js $(SITE_DIST)/main.js
@cp $(RAW_DIST)/sitemap.xml $(SITE_DIST)/sitemap.xml @cp $(RAW_DIST)/sitemap.xml $(SITE_DIST)/sitemap.xml
@cp -r $(RAW_DIST)/embed/* $(SITE_DIST)/assets/ @cp -r $(RAW_DIST)/embed/* $(SITE_DIST)/assets/
@chmod -R 666 $(SITE_DIST)/* @cp $(DIST)/libdzonerzy.so $(SITE_DIST)/libdzonerzy.so
@chmod -R 755 $(SITE_DIST)/*
libdzonerzy-runlocal: libdzonerzy libdzonerzy-gen
@cd $(SITE_DIST) && python3 -m http.server 8080
clean-libdzonerzy: clean-libdzonerzy:
@echo "/* DO NOT EDIT THIS FILE - it is machine generated */" > $(SRC_DIR)/res.h @echo "/* DO NOT EDIT THIS FILE - it is machine generated */" > $(SRC_DIR)/res.h

0
src/include/.gitkeep Normal file
View File

View File

@ -20,216 +20,256 @@ Copyright:
// this is a shared object library // this is a shared object library
#define MAIN_CSS \ #define MAIN_CSS \
CSS_COMMENT("main.css") \ CSS_COMMENT("main.css") \
CSS_NEWLINE() \ CSS_NEWLINE() \
CSS_SELECTOR("html,body") \ CSS_SELECTOR(":root") \
CSS_PROPERTY("margin", "0") \ CSS_PROPERTY("--main-link-color", "#215fc2") \
CSS_PROPERTY("padding", "0") \ CSS_END_SELECTOR() \
CSS_PROPERTY("width", "100%") \ CSS_SELECTOR("html,body") \
CSS_END_SELECTOR() \ CSS_PROPERTY("margin", "0") \
CSS_SELECTOR("body") \ CSS_PROPERTY("padding", "0") \
CSS_PROPERTY("font-family", "monospace") \ CSS_PROPERTY("width", "100%") \
CSS_PROPERTY("font-size", "1.23em") \ CSS_PROPERTY("height", "100vh") \
CSS_PROPERTY("background-color", "#ddd") \ CSS_END_SELECTOR() \
CSS_PROPERTY("display", "flex") \ CSS_SELECTOR("body") \
CSS_PROPERTY("flex-direction", "column") \ CSS_PROPERTY("font-family", "monospace") \
CSS_END_SELECTOR() \ CSS_PROPERTY("font-size", "1.23em") \
CSS_SELECTOR("#title-block-header, #TOC") \ CSS_PROPERTY("background-color", "#ddd") \
CSS_PROPERTY("border", "1px solid #222") \ CSS_PROPERTY("display", "flex") \
CSS_PROPERTY("border-radius", "15px") \ CSS_PROPERTY("flex-direction", "column") \
CSS_PROPERTY("background-color", "#ccc") \ CSS_END_SELECTOR() \
CSS_PROPERTY("color", "#000") \ CSS_SELECTOR("#title-block-header, #TOC") \
CSS_PROPERTY("margin", "1em") \ CSS_PROPERTY("border", "1px solid #222") \
CSS_PROPERTY("padding", "1em") \ CSS_PROPERTY("border-radius", "15px") \
CSS_END_SELECTOR() \ CSS_PROPERTY("background-color", "#ccc") \
CSS_SELECTOR("footer") \ CSS_PROPERTY("color", "#000") \
CSS_PROPERTY("border", "1px solid #222") \ CSS_PROPERTY("margin", "1em") \
CSS_PROPERTY("border-radius", "15px") \ CSS_PROPERTY("padding", "1em") \
CSS_PROPERTY("background-color", "#ccc") \ CSS_END_SELECTOR() \
CSS_PROPERTY("color", "#000") \ CSS_SELECTOR("footer") \
CSS_PROPERTY("margin", "1em") \ CSS_PROPERTY("border-top", "1px solid #222") \
CSS_PROPERTY("padding", "1em") \ CSS_PROPERTY("background-color", "#ccc") \
CSS_PROPERTY("flex-shrink", "0") \ CSS_PROPERTY("color", "#000") \
CSS_PROPERTY("display", "flex") \ CSS_PROPERTY("padding", "1em") \
CSS_PROPERTY("flex-direction", "column") \ CSS_PROPERTY("flex-shrink", "0") \
CSS_PROPERTY("justify-content", "center") \ CSS_PROPERTY("display", "flex") \
CSS_PROPERTY("align-items", "center") \ CSS_PROPERTY("flex-direction", "column") \
CSS_PROPERTY("font-size", "0.9em") \ CSS_PROPERTY("justify-content", "center") \
CSS_END_SELECTOR() \ CSS_PROPERTY("align-items", "center") \
CSS_SELECTOR("div.hearth") \ CSS_PROPERTY("font-size", "0.9em") \
CSS_PROPERTY("display", "flex") \ CSS_END_SELECTOR() \
CSS_PROPERTY("justify-content", "center") \ CSS_SELECTOR("div.hearth") \
CSS_PROPERTY("align-items", "center") \ CSS_PROPERTY("display", "flex") \
CSS_PROPERTY("margin-left", "0.2em") \ CSS_PROPERTY("justify-content", "center") \
CSS_PROPERTY("margin-right", "0.2em") \ CSS_PROPERTY("align-items", "center") \
CSS_PROPERTY("font-size", "1.5em") \ CSS_PROPERTY("margin-left", "0.2em") \
CSS_PROPERTY("padding", "0px") \ CSS_PROPERTY("margin-right", "0.2em") \
CSS_PROPERTY("animation", "bounce 1s infinite") \ CSS_PROPERTY("font-size", "1.5em") \
CSS_PROPERTY("color", "#d00000") \ CSS_PROPERTY("padding", "0px") \
CSS_END_SELECTOR() \ CSS_PROPERTY("animation", "bounce 1s infinite") \
CSS_SELECTOR("b.author") \ CSS_PROPERTY("color", "#d00000") \
CSS_PROPERTY("color", "#000") \ CSS_END_SELECTOR() \
CSS_PROPERTY("text-transform", "uppercase") \ CSS_SELECTOR("b.author") \
CSS_END_SELECTOR() \ CSS_PROPERTY("color", "#000") \
CSS_SELECTOR("p.author::before") \ CSS_PROPERTY("text-transform", "uppercase") \
CSS_PROPERTY("text-transform", "lowercase") \ CSS_END_SELECTOR() \
CSS_PROPERTY("font-weight", "normal") \ CSS_SELECTOR("p.author::before") \
CSS_PROPERTY("content", "'by '") \ CSS_PROPERTY("text-transform", "lowercase") \
CSS_END_SELECTOR() \ CSS_PROPERTY("font-weight", "normal") \
CSS_SELECTOR("p.date::before") \ CSS_PROPERTY("content", "'by '") \
CSS_PROPERTY("text-transform", "lowercase") \ CSS_END_SELECTOR() \
CSS_PROPERTY("font-weight", "normal") \ CSS_SELECTOR("p.date::before") \
CSS_PROPERTY("content", "'written on '") \ CSS_PROPERTY("text-transform", "lowercase") \
CSS_END_SELECTOR() \ CSS_PROPERTY("font-weight", "normal") \
CSS_SELECTOR("p.date") \ CSS_PROPERTY("content", "'written on '") \
CSS_PROPERTY("text-transform", "capitalize") \ CSS_END_SELECTOR() \
CSS_PROPERTY("font-weight", "bold") \ CSS_SELECTOR("p.date") \
CSS_END_SELECTOR() \ CSS_PROPERTY("text-transform", "capitalize") \
CSS_SELECTOR("p.author") \ CSS_PROPERTY("font-weight", "bold") \
CSS_PROPERTY("text-transform", "uppercase") \ CSS_END_SELECTOR() \
CSS_PROPERTY("font-weight", "bold") \ CSS_SELECTOR("p.author") \
CSS_END_SELECTOR() \ CSS_PROPERTY("text-transform", "uppercase") \
CSS_SELECTOR("h1.title") \ CSS_PROPERTY("font-weight", "bold") \
CSS_PROPERTY("text-align", "center") \ CSS_END_SELECTOR() \
CSS_END_SELECTOR() \ CSS_SELECTOR("h1.title") \
CSS_SELECTOR("section") \ CSS_PROPERTY("text-align", "center") \
CSS_PROPERTY("margin", "1em") \ CSS_END_SELECTOR() \
CSS_PROPERTY("flex", "1 0 auto") \ CSS_SELECTOR("section") \
CSS_END_SELECTOR() \ CSS_PROPERTY("margin", "1em") \
CSS_SELECTOR("h1 h2 h3 h4 h5 h6") \ CSS_PROPERTY("flex", "1 0 auto") \
CSS_PROPERTY("font-family", "monospace") \ CSS_END_SELECTOR() \
CSS_PROPERTY("clear", "both") \ CSS_SELECTOR("h1 h2 h3 h4 h5 h6") \
CSS_END_SELECTOR() \ CSS_PROPERTY("font-family", "monospace") \
CSS_SELECTOR("img") \ CSS_PROPERTY("clear", "both") \
CSS_PROPERTY("padding", "2px") \ CSS_END_SELECTOR() \
CSS_PROPERTY("border", "2px dashed #333") \ CSS_SELECTOR("img") \
CSS_PROPERTY("background-color", "#fff") \ CSS_PROPERTY("padding", "2px") \
CSS_PROPERTY("color", "#000") \ CSS_PROPERTY("border", "2px dashed #333") \
CSS_PROPERTY("height", "12em") \ CSS_PROPERTY("background-color", "#fff") \
CSS_PROPERTY("float", "right") \ CSS_PROPERTY("color", "#000") \
CSS_PROPERTY("clear", "right") \ CSS_PROPERTY("height", "12em") \
CSS_PROPERTY("margin-left", "1em") \ CSS_PROPERTY("float", "right") \
CSS_PROPERTY("margin-bottom", "1em") \ CSS_PROPERTY("clear", "right") \
CSS_END_SELECTOR() \ CSS_PROPERTY("margin-left", "1em") \
CSS_SELECTOR("figcaption") \ CSS_PROPERTY("margin-bottom", "1em") \
CSS_PROPERTY("display", "none") \ CSS_END_SELECTOR() \
CSS_END_SELECTOR() \ CSS_SELECTOR("figcaption") \
CSS_SELECTOR("@keyframes bounce") \ CSS_PROPERTY("display", "none") \
CSS_SELECTOR("from, to") \ CSS_END_SELECTOR() \
CSS_PROPERTY("transform", "scale(1, 1)") \ CSS_SELECTOR("@keyframes bounce") \
CSS_END_SELECTOR() \ CSS_SELECTOR("from, to") \
CSS_SELECTOR("25%") \ CSS_PROPERTY("transform", "scale(1, 1)") \
CSS_PROPERTY("transform", "scale(0.9, 1.1)") \ CSS_END_SELECTOR() \
CSS_END_SELECTOR() \ CSS_SELECTOR("25%") \
CSS_SELECTOR("50%") \ CSS_PROPERTY("transform", "scale(0.9, 1.1)") \
CSS_PROPERTY("transform", "scale(1.1, 0.9)") \ CSS_END_SELECTOR() \
CSS_END_SELECTOR() \ CSS_SELECTOR("50%") \
CSS_SELECTOR("75%") \ CSS_PROPERTY("transform", "scale(1.1, 0.9)") \
CSS_PROPERTY("transform", "scale(0.95, 1.05)") \ CSS_END_SELECTOR() \
CSS_END_SELECTOR() \ CSS_SELECTOR("75%") \
CSS_END_SELECTOR() \ CSS_PROPERTY("transform", "scale(0.95, 1.05)") \
CSS_SELECTOR("footer > span") \ CSS_END_SELECTOR() \
CSS_PROPERTY("display", "flex") \ CSS_END_SELECTOR() \
CSS_PROPERTY("text-align", "center") \ CSS_SELECTOR("footer > span") \
CSS_PROPERTY("justify-content", "center") \ CSS_PROPERTY("display", "flex") \
CSS_PROPERTY("align-items", "center") \ CSS_PROPERTY("text-align", "center") \
CSS_END_SELECTOR() \ CSS_PROPERTY("justify-content", "center") \
CSS_SELECTOR("pre, code") \ CSS_PROPERTY("align-items", "center") \
CSS_PROPERTY("min-width", "60vw") \ CSS_END_SELECTOR() \
CSS_PROPERTY("max-width", "80vw") \ CSS_SELECTOR("pre, code") \
CSS_PROPERTY("max-height", "500px") \ CSS_PROPERTY("min-width", "60vw") \
CSS_PROPERTY("overflow", "auto") \ CSS_PROPERTY("max-width", "80vw") \
CSS_PROPERTY("font-size", "1.1em") \ CSS_PROPERTY("max-height", "500px") \
CSS_PROPERTY("font-family", "monospace") \ CSS_PROPERTY("overflow", "auto") \
CSS_PROPERTY("border-radius", "0.5em") \ CSS_PROPERTY("font-size", "1.1em") \
CSS_END_SELECTOR() \ CSS_PROPERTY("font-family", "monospace") \
CSS_SELECTOR("blockquote, pre") \ CSS_PROPERTY("border-radius", "0.5em") \
CSS_PROPERTY("padding", "1em") \ CSS_END_SELECTOR() \
CSS_PROPERTY("border", "1px solid #111") \ CSS_SELECTOR("blockquote, pre") \
CSS_PROPERTY("background-color", "#9a9091") \ CSS_PROPERTY("padding", "1em") \
CSS_PROPERTY("color", "#111") \ CSS_PROPERTY("border", "1px solid #111") \
CSS_PROPERTY("clear", "both") \ CSS_PROPERTY("background-color", "#9a9091") \
CSS_PROPERTY("padding-top", "0.25em") \ CSS_PROPERTY("color", "#111") \
CSS_PROPERTY("padding-bottom", "0.25em") \ CSS_PROPERTY("clear", "both") \
CSS_END_SELECTOR() \ CSS_PROPERTY("padding-top", "0.25em") \
CSS_SELECTOR("div.sourceCode") \ CSS_PROPERTY("padding-bottom", "0.25em") \
CSS_PROPERTY("display", "flex") \ CSS_END_SELECTOR() \
CSS_PROPERTY("flex-direction", "column") \ CSS_SELECTOR("div.sourceCode") \
CSS_PROPERTY("justify-content", "center") \ CSS_PROPERTY("display", "flex") \
CSS_PROPERTY("align-items", "center") \ CSS_PROPERTY("flex-direction", "column") \
CSS_END_SELECTOR() \ CSS_PROPERTY("justify-content", "center") \
CSS_SELECTOR("pre::-webkit-scrollbar") \ CSS_PROPERTY("align-items", "center") \
CSS_PROPERTY("display", "none") \ CSS_END_SELECTOR() \
CSS_SELECTOR("pre::-webkit-scrollbar") \
CSS_PROPERTY("display", "none") \
CSS_END_SELECTOR() \
CSS_SELECTOR("a") \
CSS_PROPERTY("text-decoration", "none") \
CSS_PROPERTY("color", "var(--main-link-color)") \
CSS_END_SELECTOR() \
CSS_SELECTOR("a:visted") \
CSS_PROPERTY("color", "var(--main-link-color)") \
CSS_END_SELECTOR() \
CSS_SELECTOR(".modal") \
CSS_PROPERTY("position", "fixed") \
CSS_PROPERTY("top", "0") \
CSS_PROPERTY("left", "0") \
CSS_PROPERTY("width", "100%") \
CSS_PROPERTY("height", "100%") \
CSS_PROPERTY("background-color", "rgba(0,0,0,0.7)") \
CSS_PROPERTY("z-index", "9999") \
CSS_PROPERTY("cursor", "zoom-out") \
CSS_END_SELECTOR() \
CSS_SELECTOR(".modal img") \
CSS_PROPERTY("min-height", "80vh") \
CSS_PROPERTY("max-height", "80vh") \
CSS_PROPERTY("width", "auto") \
CSS_PROPERTY("max-width", "95vw") \
CSS_PROPERTY("position", "absolute") \
CSS_PROPERTY("top", "50%") \
CSS_PROPERTY("left", "50%") \
CSS_PROPERTY("transform", "translate(-50%, -50%)") \
CSS_PROPERTY("margin", "0") \
CSS_END_SELECTOR() \
CSS_SELECTOR(".zoomable") \
CSS_PROPERTY("max-width", "60vw") \
CSS_PROPERTY("max-height", "45vh") \
CSS_END_SELECTOR() CSS_END_SELECTOR()
#define INDEX_MD \ #define INDEX_MD \
MD_META("DZONERZY's Blog", "DZONERZY") \ MD_META("DZONERZY's Blog", "DZONERZY") \
MD_META_CUSTOM("Thursday 12 July 2023") \ MD_META_CUSTOM("Wednesday, July 12, 2023") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_SECTION1("About") \ MD_SECTION1("About") \
MD_IMAGE("Picture of DZONERZY", "assets/dzonerzy.jpg") \ MD_IMAGE_ATTR("Picture of DZONERZY", "assets/dzonerzy.jpg", "class", "zoomable") \
MD_TEXT("Hello world here is dzonerzy, also known as Daniele Linguaglossa,") \ MD_TEXT("Hello world here is dzonerzy, also known as Daniele Linguaglossa,") \
MD_TEXT("I'm an offensive security researcher and developer.") \ MD_TEXT("I'm an offensive security researcher and developer.") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_TEXT("I'm the author of this blog, and I'm using it to share my") \ MD_TEXT("I'm the author of this blog, and I'm using it to share my ") \
MD_TEXT("researches and my projects.") \ MD_TEXT("researches and my projects.") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_TEXT("I'm also the author of the library that powers this blog, ") \ MD_TEXT("I'm also the author of the library that powers this blog, ") \
MD_TEXT("yes you heard right, this blog is powered by a ") \ MD_TEXT("yes you heard right, this blog is powered by a ") \
MD_BOLD("shared object") \ MD_BOLD("shared object") \
MD_TEXT(" that I wrote in C!") \ MD_TEXT(" that I wrote in C!") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_TEXT("You can find the source code of this blog on my ") \ MD_TEXT("You can find the source code of this blog on my ") \
MD_LINK("git repository", "https://cgit.libdzonerzy.so/libdzonerzy.so/tree") \ MD_LINK("git repository", "https://git.libdzonerzy.so/dzonerzy/libdzonerzy.so") \
MD_TEXT(".") \ MD_TEXT(".") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_SECTION1("Projects") \ MD_SECTION1("Projects") \
MD_TEXT("Here is a list of my projects, that I've made in my spare time, some of them are ") \ MD_TEXT("Here is a list of my projects, that I've made in my spare time, some of them are ") \
MD_TEXT("still in development, but I'm working hard to finish them.") \ MD_TEXT("still in development, but I'm working hard to finish them.") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_LIST(MD_BOLD(MD_LINK("libdzonerzy.so", "https://cgit.libdzonerzy.so/libdzonersy.so/tree/"))) \ MD_LIST(MD_BOLD(MD_LINK("libdzonerzy.so", "https://git.libdzonerzy.so/dzonerzy/libdzonerzy.so"))) \
MD_TEXT(" -- libdzonerzy.so is a shared object that I wrote in C, it's a library ") \ MD_TEXT(" -- libdzonerzy.so is a shared object that I wrote in C, it's a library ") \
MD_TEXT("that I use to power this blog.") \ MD_TEXT("that I use to power this blog.") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_LIST(MD_BOLD(MD_LINK("CaptainHook", "https://cgit.libdzonerzy.so/captainhook/tree/"))) \ MD_LIST(MD_BOLD(MD_LINK("CaptainHook", "https://git.libdzonerzy.so/dzonerzy/CaptainHook"))) \
MD_TEXT(" -- CaptainHook is the next-gen hooking framework, it's a library that ") \ MD_TEXT(" -- CaptainHook is the next-gen hooking framework, it's a library that ") \
MD_TEXT("allow to hook functions in a very easy way without knowing the function prototype.") \ MD_TEXT("allow to hook functions in a very easy way without knowing the function prototype.") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_SECTION1("FAQ") \ MD_SECTION1("Articles") \
MD_TEXT("Here is a list of frequently asked questions, if you have any other questions ") \ MD_TEXT("Below you can find a list of my articles, I'm writing articles about ") \
MD_TEXT("feel free to contact me at ") \ MD_TEXT("offensive security and programming, I'm also writing articles about ") \
MD_BOLD("dzonerzy[at]gmail.com") \ MD_TEXT("my projects.") \
MD_TEXT(".") \ MD_NEWLINE() \
MD_NEWLINE() \ MD_LIST(MD_BOLD(MD_LINK("CaptainHook next-gen hooking framework", \
MD_SECTION4(" ") \ "/articles/captainhook-a-next-gen-hooking-framework.html"))) \
MD_NEWLINE() \ MD_TEXT(" -- A different approach to prototype-less hooking.") \
MD_LIST(MD_BOLD("Q: ") MD_TEXT("Why this blog is so ugly?")) \ MD_NEWLINE() \
MD_NEWLINE() \ MD_SECTION1("FAQ") \
MD_TEXT("Because I'm not a web designer, I'm a developer, and I'm not good at ") \ MD_TEXT("Here is a list of frequently asked questions, if you have any other questions ") \
MD_TEXT("designing things, but I'm working on it, I promise.") \ MD_TEXT("feel free to contact me at ") \
MD_NEWLINE() \ MD_BOLD("dzonerzy[at]gmail.com") \
MD_LIST(MD_BOLD("Q: ") MD_TEXT("Why this blog is so fast?")) \ MD_TEXT(".") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_TEXT("Actually this is a static website, so it's very fast.") \ MD_SECTION4(" ") \
MD_NEWLINE() \ MD_NEWLINE() \
MD_LIST(MD_BOLD("Q: ") MD_TEXT("What do you do for living?")) \ MD_LIST(MD_BOLD("Q: ") MD_TEXT("Why this blog is so ugly?")) \
MD_NEWLINE() \ MD_NEWLINE() \
MD_TEXT("I'm the lead offensive security researcher at ") \ MD_TEXT("Because I'm not a web designer, I'm a developer, and I'm not good at ") \
MD_LINK("Sysdig", "https://sysdig.com") \ MD_TEXT("designing things, but I'm working on it, I promise.") \
MD_TEXT(", a cloud security company.") \ MD_NEWLINE() \
MD_NEWLINE() \ MD_LIST(MD_BOLD("Q: ") MD_TEXT("Why this blog is so fast?")) \
MD_LIST(MD_BOLD("Q: ") MD_TEXT("Is Sysdig hiring?")) \ MD_NEWLINE() \
MD_NEWLINE() \ MD_TEXT("Actually this is a static website, so it's very fast.") \
MD_TEXT("Yes, we are always looking for new talents, if you are interested in working ") \ MD_NEWLINE() \
MD_TEXT("with me, feel free to send your resume at ... try to find it :D , ") \ MD_LIST(MD_BOLD("Q: ") MD_TEXT("What do you do for living?")) \
MD_TEXT("hint (") \ MD_NEWLINE() \
MD_BOLD("libdzonerzy.so") \ MD_TEXT("I'm the lead offensive security researcher at ") \
MD_TEXT(").") \ MD_LINK("Sysdig", "https://sysdig.com") \
MD_NEWLINE() \ MD_TEXT(", a cloud security company.") \
MD_TEXT("Michele is gayyyyyyyyyyyyyyyyyyyyyyyy") MD_NEWLINE() \
MD_LIST(MD_BOLD("Q: ") MD_TEXT("Is Sysdig hiring?")) \
MD_NEWLINE() \
MD_TEXT("Yes, we are always looking for new talents, if you are interested in working ") \
MD_TEXT("with me, feel free to send your resume at ... try to find it, after all it's still ") \
MD_TEXT("\"inside\" this blog.") \
MD_NEWLINE()
#define FOOTER_MD \ #define FOOTER_HTML \
MD_RAWTAG("footer", "" \ MD_RAWTAG("footer", "" \
"<span>" \ "<span>" \
"Powered by&nbsp;<a href=\"/libdzonerzy.so\">libdzonerzy.so</a>" \ "Powered by&nbsp;<a href=\"/libdzonerzy.so\">libdzonerzy.so</a>" \
@ -238,12 +278,103 @@ Copyright:
"<span>made with <div class='hearth'>&#10084;</div> by&nbsp;<b class='author'>dzonerzy</b></span>") \ "<span>made with <div class='hearth'>&#10084;</div> by&nbsp;<b class='author'>dzonerzy</b></span>") \
MD_NEWLINE() MD_NEWLINE()
#define SCRIPTS_HTML \
HTML_TAG_OPEN_CONTENT("script", "src=\"/main.js\"", "") \
HTML_TAG_OPEN("script", "type=\"text/javascript\"") \
HTML_RAWTEXT("var _gaq = _gaq || [];") \
HTML_NEWLINE() \
HTML_RAWTEXT("_gaq.push(['_setAccount', 'UA-XXXXX-X']);") \
HTML_NEWLINE() \
HTML_RAWTEXT("_gaq.push(['_trackPageview']);") \
HTML_NEWLINE() \
HTML_RAWTEXT("(function() {") \
HTML_NEWLINE() \
HTML_RAWTEXT("var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;") \
HTML_NEWLINE() \
HTML_RAWTEXT("ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';") \
HTML_NEWLINE() \
HTML_RAWTEXT("var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);") \
HTML_NEWLINE() \
HTML_RAWTEXT("})();") \
HTML_NEWLINE() \
HTML_TAG_CLOSE("script") \
HTML_NEWLINE()
// wait for page ready and then execute the code don't use jQuery
// because it's a static website and I don't want to use external
// libraries
// use a div with class modal to show the image
// the image must maintain the aspect ratio
// the image must be centered
#define MAIN_JS \
HTML_RAWTEXT("function zoomImages() {") \
HTML_NEWLINE() \
HTML_RAWTEXT("var imgs = document.getElementsByClassName('zoomable');") \
HTML_NEWLINE() \
HTML_RAWTEXT("for (var i = 0; i < imgs.length; i++) {") \
HTML_NEWLINE() \
HTML_RAWTEXT("imgs[i].style.cursor = 'zoom-in';") \
HTML_NEWLINE() \
HTML_RAWTEXT("imgs[i].addEventListener('click', function() {") \
HTML_NEWLINE() \
HTML_RAWTEXT("var modal = document.createElement('div');") \
HTML_NEWLINE() \
HTML_RAWTEXT("modal.className = 'modal';") \
HTML_NEWLINE() \
HTML_RAWTEXT("modal.addEventListener('click', function() {") \
HTML_NEWLINE() \
HTML_RAWTEXT("modal.parentNode.removeChild(modal);") \
HTML_NEWLINE() \
HTML_RAWTEXT("});") \
HTML_NEWLINE() \
HTML_RAWTEXT("var img = document.createElement('img');") \
HTML_NEWLINE() \
HTML_RAWTEXT("img.src = this.src;") \
HTML_NEWLINE() \
HTML_RAWTEXT("modal.appendChild(img);") \
HTML_NEWLINE() \
HTML_RAWTEXT("document.body.appendChild(modal);") \
HTML_NEWLINE() \
HTML_RAWTEXT("});") \
HTML_NEWLINE() \
HTML_RAWTEXT("}") \
HTML_NEWLINE() \
HTML_RAWTEXT("}") \
HTML_NEWLINE() \
HTML_RAWTEXT("document.addEventListener('DOMContentLoaded', function() {") \
HTML_NEWLINE() \
HTML_RAWTEXT("zoomImages();") \
HTML_NEWLINE() \
HTML_RAWTEXT("});") \
HTML_NEWLINE()
#define SITEMAP_XML \ #define SITEMAP_XML \
XML_URLSET() \ XML_URLSET() \
XML_URL("https://libdzonerzy.so/index.html") \ XML_URL("https://libdzonerzy.so/index.html") \
XML_URL("https://libdzonerzy.so/sitemap.xml") \ XML_URL("https://libdzonerzy.so/sitemap.xml") \
XML_END_URLSET() XML_END_URLSET()
#define CAPTAINHOOK_MD \
MD_META("CaptainHook - A different approach to prototype-less hooking", "DZONERZY") \
MD_META_CUSTOM("Thursday, July 13, 2023") \
MD_SECTION1("CaptainHook -- A different approach to prototype-less hooking") \
MD_TEXT("CaptainHook is a new hooking framework that allows you to hook ") \
MD_TEXT("functions without the need of a prototype. ") \
MD_NEWLINE() \
MD_TEXT("It uses a different approach to hooking, instead of modifying the ") \
MD_TEXT("function prologue, it before perform the emulation of the function ") \
MD_TEXT("in three different points: ") \
MD_NEWLINE() \
MD_TEXT("1. Before the function is called ") \
MD_NEWLINE() \
MD_TEXT("2. After the function is called ") \
MD_NEWLINE() \
MD_TEXT("3. Before the function returns ") \
MD_NEWLINE() \
MD_LINK("< Back", "/") \
MD_NEWLINE()
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
fprintf(stdout, "https://libdzonerzy.so\n"); fprintf(stdout, "https://libdzonerzy.so\n");
@ -256,6 +387,12 @@ static const char maincss[] = MAIN_CSS;
SECTION("pages/index.md") SECTION("pages/index.md")
static const char indexmd[] = INDEX_MD; static const char indexmd[] = INDEX_MD;
SECTION("footer.html") SECTION("footer.html")
static const char footermd[] = FOOTER_MD; static const char footerhtml[] = FOOTER_HTML;
SECTION("scripts.html")
static const char scriptshtml[] = SCRIPTS_HTML;
SECTION("main.js")
static const char mainjs[] = MAIN_JS;
SECTION("sitemap.xml") SECTION("sitemap.xml")
static const char sitemapxml[] = SITEMAP_XML; static const char sitemapxml[] = SITEMAP_XML;
ARTICLE("captainhook-a-next-gen-hooking-framework")
static const char captainhook[] = CAPTAINHOOK_MD;

View File

@ -77,6 +77,8 @@ Copyright:
#define MD_LINK(x, y) "[" x "](" y ")" #define MD_LINK(x, y) "[" x "](" y ")"
// image macros // image macros
#define MD_IMAGE(x, y) "![" x "](" y ")\n\n" #define MD_IMAGE(x, y) "![" x "](" y ")\n\n"
// image macros with attributes
#define MD_IMAGE_ATTR(x, y, a, v) "![" x "](" y "){" a "=\"" v "\"}\n\n"
// raw html tag macros // raw html tag macros
#define MD_RAWTAG(t, c) "<" t ">" c "</" t ">" #define MD_RAWTAG(t, c) "<" t ">" c "</" t ">"
// new line macros // new line macros
@ -103,180 +105,16 @@ Copyright:
// end urlset macros // end urlset macros
#define XML_END_URLSET() "</urlset>\n" #define XML_END_URLSET() "</urlset>\n"
/*#define STACK_SIZE 10 * 1024 // HTML macros
// html tag macros
enum Flags #define HTML_TAG(t, c) "<" t ">\n" c "</" t ">\n"
{ // html tag macros open
EQ = 1 << 0, #define HTML_TAG_OPEN(t, a) "<" t " " a ">\n"
GT = 1 << 1, // html tag macros with attributes and content
LT = 1 << 2, #define HTML_TAG_OPEN_CONTENT(t, a, c) "<" t " " a ">\n" c "</" t ">\n"
}; // html tag macros close
#define HTML_TAG_CLOSE(t) "</" t ">"
typedef struct machine // html raw text macros
{ #define HTML_RAWTEXT(x) x
uint32_t R; // html new line macros
uint32_t SP; #define HTML_NEWLINE() "\n"
uint32_t FL;
uint8_t *stack;
} machine_t, *pmachine_t;
#define C_START \
int fd[2]; \
char *b = "a"; \
int fd2; \
int *m; \
int a; \
char *c; \
int *p;
#define sys_write(x, y, z) \
__asm__ __volatile__("syscall" \
: \
: "a"(1), "D"(x), "S"(y), "d"(z))
#define sys_pipe(x) \
__asm__ __volatile__("syscall" \
: \
: "a"(22), "D"(x))
#define sys_close(x) \
__asm__ __volatile__("syscall" \
: \
: "a"(3), "D"(x))
#define sys_fork() \
({ \
int ret; \
__asm__ __volatile__("syscall" \
: "=a"(ret) \
: "a"(57)); \
ret; \
})
#define sys_kill(x, y) \
__asm__ __volatile__("movl %0, %%edi;" \
"movl %1, %%esi;" \
"mov $62, %%rax;" \
"syscall;" \
: \
: "r"(x), "r"(y) \
: "edi", "esi", "rax")
// getpid and save to pid variable
#define sys_getpid() \
({ \
int ret; \
__asm__ __volatile__("syscall" \
: "=a"(ret) \
: "a"(39)); \
ret; \
})
#define sys_open(a1, a2, a3) \
({ \
unsigned long ret; \
__asm__ __volatile__("syscall" \
: "=a"(ret) \
: "a"(2), "D"(a1), "S"(a2), "d"(a3) \
: "rcx", "r11", "memory"); \
ret; \
})
#define sys_mmap(a1, a2, a3, a4, a5, a6) \
({ \
unsigned long ret; \
register long r10 __asm__("r10") = a4; \
register long r8 __asm__("r8") = a5; \
register long r9 __asm__("r9") = a6; \
__asm__ __volatile__("syscall" \
: "=a"(ret) \
: "a"(9), "D"(a1), "S"(a2), \
"d"(a3), "r"(r10), "r"(r8), "r"(r9) \
: "rcx", "r11", "memory"); \
ret; \
})
#define sys_munmap(a1, a2) \
asm volatile("syscall" \
: \
: "a"(11), "D"(a1), "S"(a2) \
: "rcx", "r11", "memory");
#define C_SIGPIPE(c) \
sys_pipe(fd); \
sys_close(fd[0]); \
sys_write(fd[1], b, 1); \
__asm__(".byte " #c);
#define C_SIGTRAP(c) \
__asm__("int3"); \
__asm__(".byte " #c);
#define C_SIGILL(j1, j2, x, k) \
__asm__("ud2"); \
__asm__(".byte " #x); \
if (k) \
{ \
__asm__ __volatile__ goto("jmp %l0" \
: \
: \
: \
: j1); \
} \
else \
{ \
__asm__ __volatile__ goto("jmp %l0" \
: \
: \
: \
: j2); \
}
#define C_SIGFPE(c) \
__asm__("mov $1, %rax"); \
__asm__("mov $0, %rbx"); \
__asm__("div %rbx"); \
__asm__(".byte " #c);
#define C_SIGSEGV(c) \
*(int *)0xffffffffffff = 1; \
__asm__(".byte " #c);
#define C_SIGTERM(c) \
sys_kill(process_pid, SIGTERM); \
__asm__(".byte " #c);
#define C_SIGXCPU(c) \
sys_kill(process_pid, SIGXCPU); \
__asm__(".byte " #c);
#define C_SIGSYS(c) \
sys_kill(process_pid, SIGSYS); \
__asm__(".byte " #c);
#define C_SIGBUS(v) \
__asm__("pushf\norl $0x40000,(%rsp)\npopf"); \
a = 0xffffff; \
c = (char *)&a; \
c++; \
p = (int *)c; \
*p = 10; \
__asm__(".byte " #v); \
__asm__("pushf\nxorl $0x40000,(%rsp)\npopf");
#define C_SIGXFSZ(c) \
sys_kill(process_pid, SIGXFSZ); \
__asm__(".byte " #c);
#define C_END \
sys_close(fd[0]); \
sys_close(fd[1]);
#define OP_ADD 0xd1
#define OP_SUB 0x71
#define OP_MUL 0xf7
#define OP_DIV 0x7f
#define OP_MOD 0x3c
#define OP_XOR 0x5a
#define OP_AND 0x2d
#define OP_OR 0x6e*/