- 22
- 113 386
HackVlix
Germany
Приєднався 6 лют 2022
On this channel you can find videos on my small information security projects.
Be sure to also visit my second channel, MathVlix, where I upload comprehensive lectures on mathematics.
Be sure to also visit my second channel, MathVlix, where I upload comprehensive lectures on mathematics.
Algebraic Foundations I - Groups | Chapter 2: Morphisms of groups
When studying algebraic structures, we are interested in the maps between them that are "compatible" with their structure. In the case of groups, such maps are called homomorphisms, and here we introduce them, their basic properties and many examples. We go on to study the kernel of a group homomorphism, which is the subgroup that is mapped to the neutral element. It is an important tool in studying homomorphisms and groups. In the last part, we discover that the automorphisms of a group (bijective homomorphisms from the group to itself) form a group themselves.
Sections
00:00:00 Greetings
00:00:42 1. Homomorphisms of groups
00:03:30 Definition of homomorphism, isomorphism, endomorphism, automorphism
00:09:22 First properties and examples of homomorphisms
00:39:17 2. The kernel
00:39:28 Definition of the kernel of a homomorphism
00:40:02 Kernel theorem
00:48:36 Cosets of the kernel
01:00:43 Modular arithmetic as an example
01:09:20 3. Automorphism groups
01:16:22 Inner autormorphisms (conjugations)
01:30:46 The center of a group
This video was made using LaTeX Beamer, OmniGraffle, LaTeXit and SlidePilot.
#maths #algebra #groups #grouptheory #subgroups #symmetry #permutations #integers #homomorphism #kernels #automorphism
#modulararithmetic #isomorphism
Sections
00:00:00 Greetings
00:00:42 1. Homomorphisms of groups
00:03:30 Definition of homomorphism, isomorphism, endomorphism, automorphism
00:09:22 First properties and examples of homomorphisms
00:39:17 2. The kernel
00:39:28 Definition of the kernel of a homomorphism
00:40:02 Kernel theorem
00:48:36 Cosets of the kernel
01:00:43 Modular arithmetic as an example
01:09:20 3. Automorphism groups
01:16:22 Inner autormorphisms (conjugations)
01:30:46 The center of a group
This video was made using LaTeX Beamer, OmniGraffle, LaTeXit and SlidePilot.
#maths #algebra #groups #grouptheory #subgroups #symmetry #permutations #integers #homomorphism #kernels #automorphism
#modulararithmetic #isomorphism
Переглядів: 33
Відео
Algebraic Foundations I - Groups | Chapter 1: Definition and basic properties of groups
Переглядів 1215 місяців тому
We compare algebraic properties of the integers, the permutations of a finite set, and the symmetries of a circle and those of a triangle. In doing so, we find they have certain properties in common, which lead us to the definition of a "group". Then find some basic properties of groups and study subgroups, which are subsets of groups that are groups in their own right. Sections 00:00:00 Greeti...
Algebraic Foundations of Cryptography - Introduction
Переглядів 1 тис.5 місяців тому
This course will teach the most fundamental algebraic structures on a university level: Groups, rings and fields, and then some others. These structures are fundamental for the understanding of modern cryptography. #algebra #groups #rings #fields #cryptography
COBOL for the sh*ts and giggles - Chapter 5 B-Side: Emulating file streams in COBOL
Переглядів 12111 місяців тому
COBOL does not provide file stream functionality (such as C's fread(...)) by default. Here, we emulate fread in COBOL, albeit with certain limitations. Files for this course: tinyurl.com/46jsvhkp 00:00 Greetings 00:14 File streams 04:31 C's fread(...) as a model 06:44 fread_cob's arguments 12:51 Sharing files between main and subprograms 15:10 Implementing fread_cob 19:34 Calling fread_cob from...
COBOL for the sh*ts and giggles - Chapter 5: File handling
Переглядів 9811 місяців тому
COBOL programs assign internal file names to files in the operating system. To these, we can apply the common file operations such as reading, writing, appending. However, these operations have to be performed on a "per-record" basis, that is, always writing/reading a full pre-determined record for a given file. There are three types of files in COBOL, sequential files (data has to be accessed ...
COBOL for the sh*ts and giggles - Chapter 4 B-Side: Reverse shell in COBOL
Переглядів 145Рік тому
We learn how to write a reverse shell in GnuCOBOL. As COBOL cannot do any networking on its own, this is a good opportunity to learn how to call the C socket API (Unix) from COBOL. Files for this course: tinyurl.com/46jsvhkp 00:00 Greetings 00:25 What is a reverse shell? 05:09 C vs COBOL data types 06:21 socket (for the connection) 10:25 connect (to remote IP:port) 11:13 sockaddr_in struct (in ...
COBOL for the sh*ts and giggles - Chapter 4: Modularization
Переглядів 95Рік тому
COBOL allows modularization in the form of subprograms (encountered already in Chapter 3) that can be linked either statically or dynamically with a main program. We will learn how to do both here for the GnuCOBOL compiler. In addition, COBOL copybooks allow the reuse of source code by copying it into COBOL programs from a text file (similar to C's include statement). Finally, we explore how to...
COBOL for the sh*ts and giggles - Chapter 3 B-Side: Pretty-printing a matrix
Переглядів 201Рік тому
In this addendum to Chapter 3, we use what we learned about COBOL control flow to write a subprogram that displays a matrix of arbitrary dimensions in a nice and readable way on the terminal. Files for this course: tinyurl.com/46jsvhkp Sections 00:00 Greetings 02:33 What it should look like 03:18 Main program 09:04 What the subprogram should do 11:22 What it should do, graphically 13:31 Local v...
COBOL for the sh*ts and giggles - Chapter 3: Control flow
Переглядів 363Рік тому
We're getting to the good stuff: Control flow in COBOL. First, we learn a little about formatting input and output on the terminal. Then we learn about conditional execution and loops. Procedure or function calls in COBOL can be realized either through branching to a section/paragraph in the code, or by linking an external subprogram. Finally, we learn how to use COBOL's built-in sorting and se...
COBOL for the sh*ts and giggles - Chapter 2: Data types
Переглядів 997Рік тому
In the second chapter, we learn how data is defined in COBOL. There are elementary data items that describe either arithmetic variables or strings, and there are complex data structures, we call them records here, that are composed of multiple data items. All of these data structures exist only as singletons. Tables are COBOL's version of arrays, which offer the only option to create multiple (...
Is this still Cyber Security, or just shameless clickbait?! -- Red Pandas in Melbourne Zoo
Переглядів 116Рік тому
Lazy little buggers!
COBOL for the sh*ts and giggles - Chapter 1: The structure of COBOL programs
Переглядів 35 тис.Рік тому
We learn about the column layout of COBOL code, the structure of COBOL programs, comprising divisions, sections and paragraph, and about punctuation. Files for this course: tinyurl.com/46jsvhkp Further reading/watching: @RobertElderSoftware COBOL punchcards for tax returns tinyurl.com/mvxuey2h GnuCOBOL Programmer's Guide tinyurl.com/ysxjjtds Sections 00:00 Greetings 00:26 1. Layout of COBOL cod...
COBOL for the sh*ts and giggles - Introduction
Переглядів 35 тис.Рік тому
Some background and history on the charmingly weird COBOL programming language from 1959, and a first COBOL program. Files for this course: tinyurl.com/46jsvhkp Sections 00:00 Greetings 01:52 What is COBOL? 17:06 GnuCOBOL compiler 21:03 Get GnuCOBOL 22:45 Use GnuCOBOL 26:43 Hello World! #COBOL #GnuCOBOL #IBMCOBOL #programming #free #onlinecourses
Basic ideas of cryptography - A non-technical overview
Переглядів 21 тис.2 роки тому
In this video, I want to introduce you to the basic ideas and applications of modern cryptography. The goal is to convey the principles, and I will not go into technical details and use only very little mathematics for illustration purposes. The main applications of cryptography are encryption and authentication, and in this video we will see what the principles of private key cryptography (ali...
Please also subscribe to my Math channel!
Переглядів 5462 роки тому
If like the videos on HackVlix, you are certainly interested in cyber security. So there's a good chance you might be interested in mathematics! I want to recommend you check out my mathematics channel, MathVlix, here on UA-cam at ua-cam.com/channels/a6MSKH6Ypk5VKtezdRkFqA.html (like and subscribe!).
Is this still Cyber Security, or just shameless clickbait?! -- Quokkas in Adelaide
Переглядів 2732 роки тому
Is this still Cyber Security, or just shameless clickbait?! Quokkas in Adelaide
Quick macOS ARM64 bind shell (no explanations)
Переглядів 2262 роки тому
Quick macOS ARM64 bind shell (no explanations)
Quick macOS ARM64 reverse shell (no explanations)
Переглядів 3802 роки тому
Quick macOS ARM64 reverse shell (no explanations)
Shellcode for FreeBSD and Raspberry Pi OS
Переглядів 3442 роки тому
Shellcode for FreeBSD and Raspberry Pi OS
Shellcode for macOS on M1 chips - Part 3: Writing a reverse shell
Переглядів 1,4 тис.2 роки тому
Shellcode for macOS on M1 chips - Part 3: Writing a reverse shell
Shellcode for macOS on M1 chips - Part 2: Writing a bind shell
Переглядів 2,3 тис.2 роки тому
Shellcode for macOS on M1 chips - Part 2: Writing a bind shell
Shellcode for macOS on M1 chips - Part 1: Quick overview of ARM64 assembly language
Переглядів 13 тис.2 роки тому
Shellcode for macOS on M1 chips - Part 1: Quick overview of ARM64 assembly language
Hello! In 46:38 you say that X0 is written into the lower order byte of the stack. Since apple silicon is little-endian, this means that X0 is written into the "first" byte of the two-byte stack alignment? This is a bit confusing to me because the stack grows "downward", so what would be the lower order byte of it, a lower, or higher address?
I hope this will clarify your issue: (1) Each stack entry consists of 128 bits, which we can think of as 2 chunks of 64 bits. If the Stack Pointer currently points to address A (top of the stack), then writing something onto the stack will fill up the bytes at addresses A, A+1, A+2, ... , A+15. Just to be clear: In the image in the video I assume that the lower addresses _within_ a stack entry start on the left. (2) The growing of the stack (towards lower addresses) refers to the initial addresses of the stack entries, which by (1) are 128 bits apart. For example, if the current top of the stack is at address A, then pushing something onto the stack will make the Stack Pointer point to address A-16, which is reflected in the parameter #-16! in the STR instruction. (Check: This new stack top includes addresses (A-16), (A-16)+1, ... , (A-16)+15, so that it stops precisely at the address A, which is the beginning address of our previous stack top.) (3) The register X0 is 64 bits (8 bytes) in size, so it will occupy half of a stack entry. The STR instruction as stated in the video will store X0 at the current address A of the Stack Pointer, which points to the lowest address of the current stack top. So the 8 bytes that make up X0 will be written to the bytes at A, A+1, A+2, ... , A+7 on the stack. These are what I call the "lower order bytes" of the stack. Strictly speaking, this does not depend on a little-endian or big-endian convention, since the operations involved do not in any way depend on that. It would be the responsibility of the programmer to make sure the data is stored in the register in the correct manner and the pushed to the stack in the correct order.
@@hackvlix Thank you so much for the very detailed explanation. Now I think I've got it! Thanks!
This video/series is the GOAT. Thanks for this gem <3
Glad you like it :)
😊
Cobol, a very verbose language? Made for women? 😂
It does not make sense to read a text in a rather slow way. People can read themself. Audio books are for kids or shallow entertainment.
I could put less content on my slides, then what I say would not appear like reading them. Would that be fine? But seriously - upon closer listening you might notice that often I am not just literally reading the slides but also give additional commentary (granted, this might be more noticable in other videos). I believe that it can help many people retain their attention if they are not just reading something, but can aditionally listen to someone explaining it. Sure, this might not be the preferred mode of studying for everyone, e.g. some people might prefer to just read a book by themselves. But there's always the option to simply not watch my videos and get yourself that book. I'm speaking too slowly? Thankfully, UA-cam offers the feature to watch the video on 1.5x or 2x speed. Not interested in a particular part I am explaining? UA-cam allows you to skip over it until something more interesting comes up. The timestamps in box might be helpful here. Don't care for the explanations and just want to see the coding bits? Again, just skip forward, even though I think it is helpful to get something explained in principle first and then see how it is done in practice. Given all these possibilities to customise your learning experience on UA-cam, I prefer to err on the side of completeness by providing rather too much, of which the audience my decide to leave it out, rather than providing too little.
A
Great tutorial on ARM64, one of the best on UA-cam. Thank you for sharing it with us! However, I have to say, for a reduced instruction set, ARM64 instruction set seems quite confusing to me. Sometimes it makes simple things quite complex. Sometimes it lacks some consistency on its syntax. I mean, it is common to have analogous operations with very different syntax sometimes. In the end, "reduced" does not mean easier nor simpler ¯\_(ツ)_/¯
Glad that you like it... and, yes, RISC definitely does not mean reduced complexity for the programmer.
🦾🥳
Ni
Awesome series, really liking it so far.
Thanks, glad you like it. 🙂 I hope I get a video on file operations out soon - stay tuned!
Fantastic explanation and very useful material. Thank you.
Thanks, glad you like it!
What's the name of the instruction set Apple uses on their chip?
M1: ARMv8.5-A M2, M3: ARMv8.6-A You can find these in the LLVM source code (search for "apple" or whatever chip you are looking for): github.com/llvm/llvm-project/blob/main/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@hackvlix Thanks. Do you know what are the general purpose registers that can be safely used by the user in ARMv8.5/6-A. I read somewhere that they were X0-X30, but then I read somewhere else that X18 should not be touched, and that X8 serves a specific purpose. which one is true?
@@younesmdarhrialaoui643 Some remarks at 6:18 in the video. A nice overview is given in this graphic: documentation-service.arm.com/static/5fbd26f271eff94ef49c7018
@@hackvlix Thank you very much, you're amazing. Here is something I don't understand though: They call the X0-X30 general purpose registers meaning they can be used for anything the user wants them to be used for. But the weird thing is that some of these registers shouldn't be touched like X18, or X29 (the frame pointer). If I store a value in X29 and do some math it will have different consequences then if I did it on an "actual" gp register. Can you explain to me this confusion?
@@younesmdarhrialaoui643 No, using X29 for some operations will not have different consequences than using any "normal" register. But the problem is that by overwriting X29 you might mess up the stack frame and cause a crash when a program tries to unwind the stack with the overwritten frame pointer, that's why it's better to not use it. As for X18, I do not know what Apple has reserved this for, but it is suggested not to use it.
cool stuff :)
Glad you like it. 😊
Thank you! Would love to see more (total) beginner Assembly for Silicon videos!
Writing assembly and printing "Hello world" is more exciting than any Hello World in any other language. Is it just me?
Except for COBOL perhaps... just kidding, it's true, in Assembly, "Hello World" requires you to do some actual work, whereas for higher languages, it usually serves to give a first feel of the new language.
Thanks a lot! Clear and concise..also very good teaching 😁
When you said "punctuation" I immediately thought "syntax." In my experience, the compiler will tell you if you put the period in the wrong place or left one out. Think of it like the semicolon in other programming languages.
Yes, thankfully it will. With COBOL, it's a bit trial and error finding out where the compiler accepts/demands/rejects a period. Perhaps it also depends on the particular compiler.
Though there is a difference between the COBOL period and the semicolon in other languages (because, hey, let's not make it too easy!). The COBOL period is not just a statement terminator, so in some contexts, say IF-THEN-ELSE statements, which COBOL deems "sentences", there may be only one period to for the whole sentence. It's not always helpful for readability if there are a few instructions with several parameters that are not separated by periods.
লিক হাো
Thank you very much for such a clear and complete explanation! This is exactly what I've been looking for!
Thanks, I'm happy it helps.
God level content. Thx
Haha, thanks - glad you find it helpful 🤗
Amazing content, thx
Extremely cute cybersecurity specialists hard at work! 🐾
😍
Gold? Too light.
Thank you!!!
You literally stole your octopus image from the book Other Minds. Peter Godfrey-Smith owns the copyright for that image.
Haha, nope. The octopus is from Ernst Haeckel's book "Kunstformen der Natur" (1904). It is not copyrighted.
r/confidentlywrong
Very valuable, thank you very much. Great voice, it makes listening really fun!
Thanks, I'm glad you find it helpful. As for the voice... "geez, do I really sound like this?" 😉
I get the "ld: library not found for -lSystem" error on my m1. Do you have any idea why? (I have xcode installed)
Sorry, I don't really know what the issue is. What path do you get when you run xcrun -sdk macosx --show-sdk-path ?
Great content. You are a great teacher!
Thanks! Glad you like it.
Where did you learn all of this? This content is amazing
Glad you like it. I've had some familiarity with Intel assembly for quite some time, so it's hard to say exactly where I learned it. There are a few differences between Intel and ARM, but they a rather easy to understand if you already know one of the two. As for ARM assembly, I mostly learned it from the book in my first reference, and the link in the second reference contains the details to apply it to macOS. The technical minutiae such as the bitwise encoding of the ARM instructions can be found in the Arm Architecture Reference Manual (third reference above).
Thank you very much for this high-quality videos - einfach genial! ♥️
You're welcome. Glad you like it.
Hi, just wanted to add to the many thank you's here. Sincerely, thank you. Im studying CS and taking an Assembly course. The professor has geared the course towards windows and Linux and x86_64 based machines and I have been left on my own to figure out ARM64 architecture. Your video just helped me get my stuff together. I have been trying for a week and my assignment is due tomorrow. THANK YOU SO MUCH!!!
Great to hear! 😀 Good luck with your studies!
😍
Thanks! Found this video while looking to program in ARM assembly on my new Mac and this helped a lot!
very clear tutorial. I tried playing around with the return function btw to use it as a jump. If you guess how you are very clever. ``` .text .global _start .align 4 _start: adr x30, _start ret ```
would like to see more on mac os security :)
Noted. :) As I said, I have no particular idea what to do there right now.
@@hackvlix tcc bypass, dylib injection 🙂 might be good
@@hackvlix Also PAC in m1 I don't have m1 so I have no idea how PAC works. if possible
thank you 😊
Lmao sa
Thanx for this vidoe :) Very helpful
tu canal vale oro
Muchas gracias. Qué bueno que te guste.
Hey man, I seem to be getting this issue, any thoughts? error: unknown AArch64 fixup kind! adr x1, helloworld
Hm, this is a bit puzzling for me. This error occurs when the assembler cannot resolve the address of a label. Just to check - you have used the "as" and "ld" commands as described in the video? Could it be that you put the label "helloworld" in the ".data" section? In that case, the ADR instruction as used here would not find it.
@@hackvlix, this seems to have fixed the error for some reason haha adrp x1, helloworld@PAGE add x1, x1, helloworld@PAGEOFF
@@hackvlix And yeah, seems I put .text and .data labels in my code, whoops
@@brook1598 For longer code, it is probably better to use the .data segment. The ADRP instruction makes it possible to defer address resolution to the linker if the assembler cannot resolve the address. This is actually an interesting addition to the video.
@@hackvlix Ahhh okay interesting, this is my first time learning any assembly and it's been super interesting. Apart from using these awesome videos you've produced here would you say that "Programming with 64-bit ARM Assembly Language" with the additional "Hello Silicon" repo is enough to get me started? Would you recommend any other resources in addition to the ones in the description? I just want to thank you for making these videos, these are super helpful and in a format that is interesting and visually appealing, especially with the examples you give. Keep up the great work!
Thank you so much for videos
Thanks for watching, glad you liked it.
Thanks very much!
Glad you like it!
So cute!!
Thanks for the video! I recommend using audacity to remove background noises from the video, it can help improve the overall quality and it's pretty simple to use.
Thanks! I will try out Audacity.
Thank you so much for doing these videos! I am in a CPU architecture course learning ARM assembly on a raspberry pi, I’ve been really hoping to move what I’ve been learning on the pi, to the M1. I have really been struggling finding resources that have allowed me to make any progress. YOUR VIDEOS ARE EXACTLY WHAT IVE BEEN LOOKING FOR! Immediately subscribed! I can’t wait to see where this channel goes!
Oh, first comment on the channel ever. 😀 Thanks a lot, I'm glad you liked it.