Wstęp do Reverse engineeringu

Podobne dokumenty
Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Programowanie niskopoziomowe

Architektura komputerów. Asembler procesorów rodziny x86

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

Metody Realizacji Języków Programowania

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Jerzy Nawrocki, Wprowadzenie do informatyki

Programowanie komputera

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Architektura komputerów

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

Struktura i działanie jednostki centralnej

Wykład 4. Środowisko programistyczne

Politechnika Świętokrzyska

Architektura Systemów Komputerowych

Sterowanie pracą programu

Metody Realizacji Języków Programowania

Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

Lista Rozkazów: Język komputera

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Adam Kotynia, Łukasz Kowalczyk

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Architektura typu Single-Cycle

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

Architektura Systemów Komputerowych

START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Reverse Engineerging. Dawid Zarzycki

Pracownia Komputerowa wykład V

1. Operacje logiczne A B A OR B

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Programowanie w asemblerze Środowiska 64-bitowe

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Technika mikroprocesorowa I Wykład 2

Sprzęt i architektura komputerów

Programowanie mikrokontrolera 8051

Programowanie Niskopoziomowe

Zuzanna Hartleb i Artur Angiel

Sprzęt i architektura komputerów

Unity 3D - pierwsze skrypty

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

PROCESORY ARM TRUDNO ZNALEŹĆ PROCESORY O TAK LICZNYCH, ORYGINALNYCH, NOWYCH, POMYSŁOWYCH ROZWIĄZANIACH!

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Programowanie w asemblerze Linkowanie

Architektura systemów komputerowych. Lista instrukcji procesora

DSM51 operacje przesylania danych i operacje arytmetyczne strona 1

Teoria gier. Jakub Cisło. Programowanie z pasją maja 2019

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008.

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Programowanie w asemblerze ARM wprowadzenie

elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

czyli jak porządkować swoje dane

1 Ogolnie o asemblerach. 2 Zarys architektury MIPS

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Architektura komputerów

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Programowanie w asemblerze Architektury równoległe

Floating Point Unit Koprocesor umożliwia działania na liczbach ułamkowych (zmiennoprzecinkowych) 8 rejestrów 80-bitowych: st0,,st7 Typy danych

Programowanie w asemblerze Architektura procesora

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

2. Architektura mikrokontrolerów PIC16F8x... 13

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

Programowanie w asemblerze Obliczenia zmiennopozycyjne

Informacje o aktualizacji oprogramowania

CPU architektura i rejestry

Programowanie w asemblerze MIPSa

Shellcody a architektura MIPS na systemach IRIX. Adam Zabrocki.

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Return-oriented exploiting

Ćwiczenie nr 6. Programowanie mieszane

Podstawy programowania w języku C i C++

Programowanie Systemów Wbudowanych

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

architektura komputerów w 1 1

Pracownia Komputerowa wykład IV

Projektowanie Urządzeń Cyfrowych

Architektura typu multi cycle

Instytut Teleinformatyki

Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci

UTK jednostki wykonawczej EU (Ex ecution Unit), jednostki steruj c ej CU,

Cel wykładu. Przedstawienie działania exploitów u podstaw na przykładzie stack overflow.

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

Optymalizacja wykonania programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Transkrypt:

Wstęp do Reverse engineeringu

O mnie Agnieszka Bielec Eternal pracuję w CERT Polska jako Malware Analyst CTFy z p4 prowadze bloga eternal.red lubie ścianki wpinaczkowe i rower twitter

Reverse Engineering - co to takiego? proces badania programu w celu ustalenia jak on dokładnie działa lub jak działają jego konkretne mechanizmy W języku polskim: analiza wsteczna

A do czego może się przydać? Odtworzenie źrodeł programu modyfikowanie programu do którego nie mamy źródeł tworzenie hackow /modów do gier sprawdzenie dlaczego program nam się wywala

Zmodyfikujmy gre Icy Tower 1.3.1

Co to za plik?

UPX - co to takiego? Jest jednym z packerów

Co to packer? Packery służą do kompresji plików wykonywalnych

Co to packer?

Co to packer? Uruchomienie programu

Co to packer? Uruchomienie programu

rozpakowanie UPX a

W jakim języku został napisany Icy Tower?

W jakim języku został napisany plik? metoda 1: strings

W jakim języku został napisany plik? metoda 1: strings

W jakim języku został napisany plik? metoda 1: strings

W jakim języku został napisany plik? metoda 1: strings

W jakim języku został napisany plik? metoda 1: strings metoda 2: Detect It Easy (DIE)

Prosta modyfikacja programu - hexedytorem Start Game -> Rozpocznij Gre hexedytor HxD

Nazwy funkcji

Nazwy funkcji w innej wersji Icy Towera 1.5

strip - program służący do usuwania symboli z plików wykonywalnych

To jak znajdziemy funkcję odpowiedzialną za skok? użyjemy do tego debuggera x64dbg 1. PPM on code -> Analysis -> Analyse Module 2. Menu -> View -> Functions 3. PPM -> Set breakpoint on all commands 4. Rób wszystko, wyłącz breakpointy, a później skocz

Początek funkcji odpowiedzialnej za skok

Asembler x86-32 - Jak działają skoki warunkowe? Asembler posiada zbiór instrukcji które wykonują operacje na liczbach i ustawiają flagi w rejestrze EFLAGS. Przykładowe instrukcje to: test cmp sub add Przykładowe flagi rejestru EFLAGS to: ZF (zero flag) - wynik operacji wyniósł zero SF (sign flag) - wynik operacji jest liczbą ujemną - najstarszy bit jest ustawiony na 1 CF (carry flag) - wystąpił integer overflow (unsigned) - gdy wynik operacji nie zmieści się w pamięci docelowej OF (overflow flag) - wystąpił integer overflow (signed)

Rejestr EFLAGS Jest to 32-bitowy rejestr w którym poszczególne bity symbolizują flagi obrazek ściągnięty z: link 1 - flaga ustawiona, 0 - flaga wygaszona

Instrukcja test test a, b - wykonuje operacje and na 2 liczbach i ustawia flagę ZF jeśli wynikiem było 0, wynik operacji and nie jest nigdzie zapisany test a, a - ustawia ZF jeśli a==0

Instrukcja test test a, b - wykonuje operacje and na 2 liczbach i ustawia flagę ZF jeśli wynikiem było 0, wynik operacji and nie jest nigdzie zapisany test a, a - ustawia ZF jeśli a==0 Przykład: test 2, 2? test 0, 0? test 3, 4? test 1, 3?

Instrukcja test test a, b - wykonuje operacje and na 2 liczbach i ustawia flagę ZF jeśli wynikiem było 0, wynik operacji and nie jest nigdzie zapisany test a, a - ustawia ZF jeśli a==0 Przykład: test 2, 2 ZF<-0 test 0, 0? test 3, 4? test 1, 3?

Instrukcja test test a, b - wykonuje operacje and na 2 liczbach i ustawia flagę ZF jeśli wynikiem było 0, wynik operacji and nie jest nigdzie zapisany test a, a - ustawia ZF jeśli a==0 Przykład: test 2, 2 ZF<-0 test 0, 0 ZF<-1 test 3, 4? test 1, 3?

Instrukcja test test a, b - wykonuje operacje and na 2 liczbach i ustawia flagę ZF jeśli wynikiem było 0, wynik operacji and nie jest nigdzie zapisany test a, a - ustawia ZF jeśli a==0 Przykład: test 2, 2 ZF<-0 test 0, 0 ZF<-1 test 3, 4 ZF<-1 test 1, 3?

Instrukcja test test a, b - wykonuje operacje and na 2 liczbach i ustawia flagę ZF jeśli wynikiem było 0, wynik operacji and nie jest nigdzie zapisany test a, a - ustawia ZF jeśli a==0 Przykład: test 2, 2 ZF<-0 test 0, 0 ZF<-1 test 3, 4 ZF<-1 test 1, 3 ZF<-0

Skoki warunkowe w asemblerze je/jz [adres] - jump if zero flag is set jne [adres]- jump if not zero flag is set inne

Inne instrukcje asemblera x86 mov a, b - a<-b [...] w mov oznacza dereferencje ret - wychodzimy z funkcji xor a, b - a<- a xor b fld, fldz, fadd, fcomp itp - to funkcje operujące na koprocesorze (ułamkach) - nie zamierzamy się w to bawić na konferencji

Początek funkcji odpowiedzialnej za skok (demo)

Reverse engineering to też odtwarzanie źródeł programu

Użyjmy dekompilatora! x64dbg (snowman) - open source

Użyjmy dekompilatora! IDA Pro (Hex-Rays) - nie open source potrafi dekompilować x86, x86-64, ARM, MIPS

Inne dekompilatory RetDec - open source - x86, ARM, MIPS, PowerPC, PIC32 (tylko 32 bitowe architektury)

Gry multiplayer

Dziękuję za uwagę

Referencje