-
Loading encrypted shellcode at runtime - A CTF writeup
Recently I came across a rather interesting problem during the ASD CTF, which was jointly hosted by ANU and ASD (Australian Signals Directorate). It was a reveres engineering challenge but what caught my eye was that it utilizes a somewhat sophisticated technique that many malware and anti-cheats/AVs use to dissuade static analysis during reve... Read More
-
Bypass code detection with polymorphic code engine
Link to project on github Recognizing malware is one of, if not the most important part of protection software such as Anti-Virus or Anti-Cheat softwares. Much like how the human immune system works, these softwares will often look for identifiable features of suspected programs, which can then by used to identify future copies of the same pro... Read More
-
Decentralized peer-to-peer chatting using Python
Decentralization, and with it peer-to-peer (p2p), technologies has gradually become more popular with the advent of “Web 3.0”. This project aims to utilize several key concepts, such as UDP hole punching and signalling/rendezvous servers to implement a p2p chatting application using Python. What is peer to peer (p2p) Peer to peer communicatio... Read More
-
Using CNNs to autonomously play videogames
Using AI to play videogames has been nothing new. For instance, OpenAI’s OpenAI Five famously defeated the world champions of “Dota 2”, a team based MOBA game, in 2018. However, typically, videogame AIs use something called ‘Reinforcement Learning’. Essentially, each action the AI takes is given a certain reward. For instance, if the AI kills a... Read More
-
Writing a custom malloc and free implementation using C
Dynamic memory and malloc have been a staple feature in the C programming language. It is both feared and respected by people, as it provides great power but is also very easy to screw up. However, most people have never wondered what goes on under malloc, and just take things for granted. In this article, we will be exploring “under the hood” m... Read More
-
Generating Music using Recurrent Neural Networks
Music and speech is similar in many ways. Both are considered “sequence data”, meaning both almost always appear in sequences, and each data point is dependent on the previous datapoint. Both also contain “sequential patterns”, where there will exists patterns of small sequences of data. RNNs, or Recurrent Neural Networks, are especially suite... Read More
-
Performing a mid-function trampoline hook using C++
Hooking, function hooking or function detouring, refers to the act of rerouting a program’s code execution in order to modify the behavior of a particular function, or intercept its parameters. It is a very popular technique used by reverse engineers, hackers and the likes, and could be very powerful when used correctly. Trampoline hooking is a ... Read More
-
Using Markov Chains to simulate human speech
Nowadays there are many sophisticated ways to approach NLP, most of them involves neural networks. For example, OpenAI’s GPT2 has achieved phenomenonal results in NLP and can be used in a variety of fields. However, can something as simple as Markov Chains compete with sophisticated techniques like RNNs, or even better, GPT-2? Hint: It can’t bu... Read More
-
Using web drivers to automate typing races in Python
The power of web automation is apparent, whether it is automating a tedious task, or performing automated testing on a website. However, with great power comes great responsibility. Web automation tools can be easily abused, spam being the main issue. Today we will examine the use of web automation in a slightly less nefarious manner, automating... Read More