Image by Gerd Altmann at Pixabay

In this blog post I’m writing down some personal thoughts about the design of microservices architectures. These considerations are for the readers but also for me as a reminder for the future.

Do Not Over-Engineer The Technologies

Most of the time the companies that adopt microservices based architecture out there, at least in Italy, are made of young people like me, that are always excited about using the most modern technologies. In my opinion this is not the proper choice for projects that are not for R&D: while R&D development teams are allowed to dare with such choices, if the client I’m working for has…


I’ve started my journey into the software world when, a long time ago, I was exposed to the game hacking community of Metin2. Honestly I never understood what was actually going on under the hood. Today, that I’ve grown up, I want to challenge myself to see if I’m actually able to do something fun myself, without copying and pasting pieces of software as a script kiddie.

In this post I will do some reverse engineering and dynamic instrumentation on the AmongUs APK, on a running android device, to get my player move faster than it should ( aka speed…


Photo by Graham Holtshausen on Unsplash

It was a long time I was waiting for the opportunity to refine my Kubernetes abilities. I have this 5$ (20Gb Hdd, 2GB Ram) machine from OVH and I’ve decided to build with it a single node Kubernetes cluster with:

  1. Microk8s as a simple plug-and-play implementation of Kubernetes
  2. Traefik as our ingress controller and certificate provider, it will handle for us the process of generating and renewing the certificates for our DNS Domain! that’s awesome.
  3. Docker Registry image deployed, as a private and authenticated docker-registry to push our private images with ease.

General Advices

if you fail while configuring the cluster just…


Getting out from this versioning guerrilla with docker

Four rock formation by nicollazzi xiong

When dealing with python versioning you can easily get lost with all the possible combinations of your favorite library version, and the versions of the interpreter. Many different projects, specially the ones involving Tensorflow and Keras, require a very specific library version to run. Many other projects are not well designed for retro- or forward-compatibility between python2 and python3. …


Linux Memory Cheat Sheet, containing useful Tools and Concepts about Linux Kernel memory management.

Linux Virtual Memory Map: Virtual Addresses ranges

As we can see from the /Documentation/x86/x86_64/mm.txt kernel memory map documentation the following virtual addresses regions are available:

0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
hole caused by [48:63] sign extension
ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole
ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory
ffffc80000000000 - ffffc8ffffffffff (=40 bits) hole
ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space
ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole
ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB)
... unused hole ...
ffffff0000000000 - ffffff7fffffffff (=39 bits) %esp fixup stacks
... unused hole ...
ffffffff80000000…


This is the story of how I got my AVD Device work with a custom kernel.

I will not describe here a global solution, of running a any Android Version on top of any Linux Kernel version, since even running the same steps with different <Adroid Version, Kernel Version> pairs will result in not working AVDevices. You will either get a black screen AVD or a SegFault error when booting. We all know that properly building a working Linux Kernel, specially in this corner cases, involves a little of magic. …


This story is about using LiME on Android AVDs to Dump RAM images and analyzing them with Volatility.

After the previous post about being able to Use a Custom Kernel with Android AVDs, I’ve started investigating how to do some basic forensic analysis with Volatility on a running AVD. I came across a module called LiME that was shown to be usefull to dump RAM images for forensic analysis with Volatility. So, now I will walk through my experience of:

  1. Modifying the AVD’s Linux Kernel to be able to dynamically load Modules

2. Cross-compiling the LiME module for the Linux…

Gabrio Tognozzi

Software Engineer, passionate about Cybersecurity.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store