Sovellusten hakkerointi
Application hacking and vulnerabilites

Find vulnerabilities in your app - before criminals do.

This is "Application hacking" in Finnish: "Sovellusten hakkerointi ja haavoittuvuudet". In nerd speak, it's reverse engineering. You'll learn Ghidra, gdb and similar.

Co-taught with Lari Iso-Anttila. Sold out, queue started.

Visitor: Otto Ebeling hacked crypto and got big money - legally and ethically. (Maybe OSINT his Ltd 2023)

Update: Extra group started!

Course nameSovellusten hakkerointi ja haavoittuvuudet
Study guideSovellusten hakkerointi ja haavoittuvuudet ICI012AS3A kurssikuvaus, toteutus ICI012AS3A-3004;
Timing2026 period 1, early autumn (w34-w41) (schedule)
Credits5 ECTS
ClassesPasila, classroom pa5001 (Tero) and pa3005 (Lari), bring your laptop. Thu 14:00-16:45.
Max students30, sold out, queue started Extra group, good change for a place.
LanguageFinnish (+reading and writing in English)
RemoteNo, fully contact in Pasila classroom, mandatory participation
Feedback4.3 - 4.8 / 5 Excellent feedback Five star experience
ServicesMoodle: Sovellusten hakkerointi ja haavoittuvuudet. Laksu. Voluntary extra: Tero's list.
TeachersTero Karvinen and Lari Iso-Anttila
First class2026-08-20 w34 Thu 14:30 pa5001, bring your laptop. (Yes, first time starts half an hour later)
EnrollExtra group starting, come to the first class! Sold out. For a change at a place from the queue, enroll in Peppi and come to the first class.

This page will be updated before and during the course.

Schedule

Thursdays 14:00-16:45 in Pasila, classroom pa5001. Bring your laptop!

DayPreliminary Topic
2026-08-20 w34 Thu1. Starts 14:30 Introduction. Warm-up task. Overview. 16:00 Visitor: Janne: Standards and frameworks.
2026-08-27 w35 Thu2. 14:00 normal start time. Hacking in and fixing vulnerabilities from source code, web as example.
2026-09-03 w36 Thu3. Vierailija Otto Ebeling. Web hacking teardown.
2026-09-10 w37 Thu4. Cryptography. Ghidra.
2026-09-17 w38 Thu5. Dynamic analysis. Debuggers and gdb.
2026-09-24 w39 Thu6. Embedded systems.
2026-10-01 w40 Thu7. Happy Hacking Day No regular classes - visit Happy Hacking Day instead.
2026-10-08 w41 Thu8. Capture the Flag. Tero and Lari.

This is an advanced course, so topics may change as the course progresses. We expect only the topics change, the dates and the hours are expected to stay unchanged.

Prerequisites

At the start of the course, you should know:

  • Programming basics
  • Linux basics
  • Installing Linux on a virtual machine on your own laptop

For this Finnish implementation, you should be able to speak Finnish fluently; and read and write Finnish and English.

Prior knowledge acquired in any way is acceptable. Knowledge can be obtained, for example, from "Linux Servers" or "Programming 1" courses, but self-study is also fine.

Prerequisites may be verified with a survey if necessary, and course participants may be selected based on an initial test if needed.

You can review or learn the skills below before the course if you wish. If you already know the topics, you don't need the review package.

Review Package

If you already know these things, you don't need the review package. You don't have to learn these specific languages. If an initial test is held during the course, questions won't be limited to the review package content.

Programming Basics

  • The course involves coding and reading code
  • Any language works (e.g., Python or C).
  • Some students say that C is new to them but very useful in reverse engineering.
  • Variable, data types (int, float, string, array/list), conditional statement (if-else), loops (for, while), function, class (class, object), execution order
  • You can write simple programs
  • You can read programming language and library manuals; and search the web for solutions to simple problems

If you want to review Python on Linux, you can start writing code like this:

$ python3
>>> print("Hello, Tero!")
>>> exit()

$ nano hello.py

And here you can write your program:

print("Hello, Tero!")

Save in nano with ctrl-X, y, enter. I personally install the 'micro' editor when I code more.

$ python3 hello.py
Hello, Tero!

And the language basics are explained here:

I often review languages by writing a bunch of easy warm-up programs.

Linux Basics

Linux is used as a tool. Basic skills are sufficient. The course does not require extensive Linux administration skills.

  • Using the command line
  • Root privileges (sudo)
  • Package management (apt-get)
  • Directory structure (e.g., /home/tero/, /etc/, /, /var/log, /usr/bin/, /usr/local/bin/)
  • Logs (sudo journalctl -n 20; /var/log/apache2/error.log)

Learn the commands from: Karvinen 2020: Command Line Basics Revisited

The easiest way to review is to install Linux on a virtual machine and play with it.

Installing Linux on a Virtual Machine

  • For example, installing Debian in VirtualBox (instructions below)
  • You can use other virtualization solutions if you can adapt and solve related challenges yourself (e.g., QEMU, lib-virt, virt-manager...)

Students have installed hundreds of Linuxes with this installation guide: Install Debian on Virtualbox - Updated 2024

(For Macintosh users: Apple Macintosh M1, M2, M3, M4... is not suitable for the course. Macs use arm64 architecture, course requires amd64 (x86-64). It's recommended to bring a regular PC laptop for the course, as many applications and virtual machines used in exercises are only available for this more common amd64 architecture. We recommend bringing an amd64-based laptop running Linux or Windows.)

Previous Implementations

Application Hacking and Vulnerabilities ICI012AS3AE-3001 (English) ja ICI012AS3A-3003 (Finnish) 2026p3 alkukevät

All implementations "Application Hacking and Vulnerabilities"

Homework

Homework report links are submitted to Laksu 24 hours before the contact session. After submitting your own assignment, you peer-assess two classmates' assignments.

Homework is done and reported after each class. Assignments can be published anywhere and the link submitted to Laksu. Homework reports must be in a format viewable directly in a browser, as a regular HTML web page. No odt, no odp, no ppt, no docx, no doc, no pdf. Homework cannot be submitted by email. Links are submitted to Laksu and then two works are peer-assessed. Free web hosting is available from WordPress.com, GitHub.com, and Gitlab.com.

Assignments are official only after they are given at the end of class. Even if the assignment might sometimes be on the web page before class, they should not be done in advance, as they are evaluated according to the given assignment. Significant changes may be made before confirmation.

Homework is reviewed at the next meeting, problems are solved together, and oral feedback is given. The grade for the homework package is given only at the end of the course, but assignments must still be submitted 24 hours before the next class. Those who don't start completing the course by submitting assignments will be removed from the course. Publishing is voluntary but highly recommended. If for some reason you don't dare or otherwise don't want to publish, you can put the work on a web page behind a password (the same password for all homework) and share this password with classmates. If tests on homework topics are held during classes, their points are included in the homework assessment.

Homework must be done by experimenting on a computer and reporting the course of events, unless otherwise stated in the specific subsection. Reports must contain information that can verify the exercises were done and not fabricated.

All sources used must be cited in the report: course assignment page, classmates' reports, man pages, books. The citation must show which information came from which source. If you ask AI for advice, it must be cited as a source, naming the AI model and specifics. AIs hallucinate; it's recommended to verify the information. Summaries or essays must not be generated with AI or similar techniques; they must be written yourself. It is forbidden to generate text with AI, as your classmates will be reading what you wrote.

Homework Tasks

We embed homework here in a new way, email teacher if you cannot see the tasks.

Adminstrivia: This page will update before and during the course. Human verified machine translation was used for parts of this page.