2017-03-21: Next livestream: creating Binary Ninja plugins (by carstein)

Tomorrow (Wednesday, 22nd of March) at 8pm CET on my weekly Hacking Livestream I'll be joined by Michal 'carstein' Melewski to talk about creating plugins for Binary Ninja. Well, actually Michal will talk and show how to do it, and I'll play the role of the show's host. The plan for the episode is the following (kudos to carstein for writing this down):

1. Little intro to Binary Ninja - 5 minutes
2. Working with Binary Ninja API - console and headless processing
- how to use console effectively
- documentation

3. Basics of API
- Binary view
- Functions,
- Basic Blocks
- Instructions,
- Low Level Intermediate Language (infinite tree)

4. Syscall problem,
- first scan in console,
- simple annotation (getting parameter value)
- going back the instruction list
- detecting same block?

5. Future of API and what can you do with it?
- links to presentation (ripr, type confusion)

See you tomorrow!

P.S. We'll have a single personal Binary Ninja license to give away during the livestream, courtesy of Vector 35 folks (thanks!). Details will be revealed on the stream.

Read more... [ 0 comments ]

2017-03-16: Asmloader, adresy względne i bezwzględne

Z perspektywy czasu jednym z błędów, które zrobiłem tworząc kurs asemblera na YouTube parę lat temu było wprowadzenie mechanizmu ASLR (a raczej: zdanie się na istniejący mechanizm ASLR w mmap/VirtualAlloc) przy wyborze adresu, pod który ma zostać załadowany kod maszynowy do uruchomienia. O ile sam mechanizm dobrze obrazuje realia współczesnych systemów operacyjnych, o tyle triki, które trzeba używać przy adresowaniu relatywnym w x86-32 wprowadzają trochę niepotrzebnego zamieszania dla osób początkujących. Lepszym rozwiązaniem byłoby zaczęcie od jednego, zdefiniowanego adresu gdzie zostanie załadowany program i korzystanie z adresowania bezwzględnego, i wprowadzenie ASLR w połowie/pod koniec serii. Niemniej jednak wyszło jak wyszło, więc od czasu do czasu pojawiają się pytanie o to, dlaczego nie można w łatwy sposób zaadresować fragmentów kodu lub danych korzystając z asmloadera. Poniższy post jest de facto fragmentem odpowiedzi na jedno z takich pytań, której udzieliłem chwilę temu w komentarzach na YT, ale po namyśle zdecydowałem, że może zainteresuje ona więcej osób (a przynajmniej będę miał do czego linkować w przyszłości).

Komentarz na YT autorstwa Kapa PL, zacytowany w całości (istotne z uwagi na przykładowy kod):

Nie rozumiem dlaczego tak nie może być :/ ET to nie jest adres danej linijki kodu ?

[bits 32]
push ET
call [ebx+3*4];printf
add esp,4
push 0
call [ebx];exit

ET:db 'Hello World',0xa,0

Czytaj dalej... [ 2 komentarze ]

Five newest or recently updated notes (these are unfinished posts, code snippets, links or commands I find useful but always forget, and other notes that just don't fit on the blog):

Click here for a list of all notes.

EN Security papers and research notes

Some conference slides are linked at the bottom of this page.

EN Selected vulnerabilities

The full list of vulnerabilities discovered by me (including collaborative work) can be found here (please note that the list might be out of date).

The Google Application Security / Research site might also contain some of my findings.

EN Coding (selected posts)
EN Tools and libraries
  • PiXieServ is a simplified PXE (network boot) server for Windows and Linux-based OS, created for testing of very small home-made OS. See also the post about it.
  • ExcpHook, a system-wide exception monitor for Windows XP 32-bit. Useful if you're fuzzing something that doesn't like having a debugger attached.
  • Ent is an entropy measuring tool for reverse engineering reconnaissance (see also a post explaining how to use it).
  • HiperDrop is a simple command line process memory dumper for Windows, with a few different work modes.
  • asmloader - this little app executes headerless machine code (compiled assembly code). It's meant to be an aid in learning/teaching and playing with assembly, as well as the right tool when you just need to execute some machine code.
  • NetSock is a simple socket/networking lib/wrapper for C++ I've wrote back in 2003 and update from time to time - I use it for most of my network-enabled projects.
PL Videotutoriale i podcasty [ 0 views | 0 videos | 0 subscribers ]

Subscribe to me on YouTube W wolnym czasie prowadzę videocasty na żywo o programowaniu, reverse engineeringu oraz hackingu/security:

Livestream | Kanał na YT | Archiwum starszych odcinków

Najnowszy odcinek: Gynvael's Livestream: OSDev #5 (17.06.2016 19:00)
[ 38 thumbs up | 5 comments | 1 115 views ]

Dodatkowo: ReverseCraft - starsza seria podcastów o reverse engineeringu i assembly.

PL Edukacyjnie (wybrane posty)

Dla programistów:

Security / hacking:

  • Hacking - jak uczyć się security/hackingu i spać spokojnie.

Dodatkowo, kilka przemyśleń na temat odnajdywania się na rynku pracy w IT:

PL Programowanie (wybrane posty)

← trochę więcej postów jest po angielskojęzycznej stronie.

PL Gamedev i GFX (wybrane posty)

Grafika generowana proceduralnie:

【 design & art by Xa / Gynvael Coldwind 】 【 logo font (birdman regular) by utopiafonts / Dale Harris 】