Elvith Ma'for

Former Reddfugee, found a new home on feddit.de. Server errors made me switch to discuss.tchncs.de. Now finally @ home on feddit.org.

Likes music, tech, programming, board games and video games. Oh… and coffee, lots of coffee!

I � Unicode!

  • 1 Post
  • 311 Comments
Joined 2 years ago
cake
Cake day: June 21st, 2024

help-circle

  • Not OP. I’m dual booting Windows and Fedora. Fedora supports secure boot, so everything works out of the box. The only thing that annoys me are the Nvidia drivers. Those need a kernel module that you need to compile yourself. And all kernel modules need to be signed for secure boot.

    In theory, it’s still easy: At first, Fedora boots with a precompiled and signed nouveau driver, that supports secure boot - so you can use your PC after the install. When you install the NVidia Driver, akmods etc gets setup automatically. Also they automatically generate a key pair for you and mokutil allows you to send that key to your UEFI, so that you can install it on the next boot. So it’s just reboot, load the key once in the UEFI and after the reboot the official driver is running. After every kernel upgrade akmods should automatically recompile the module, sign it with your key (now known by your UEFI) and it just works.

    In practice… For me it’s a 50:50 if the akmods auto build works. So, after a kernel upgrade, I usually reboot, wait for the build to fail to a Desktop in 1024×768 and then have to open a terminal and type akmods --rebuild --force. After the build and an additional reboot everything works again.






  • Im inclined to answer with “Yesn’t”

    Yes, the problem is readability. You can get “better” code of you know the exact tooling and settings for compilation, as you can then better guess what optimisations and tricks were used (by the compiler) and you may be able to “undo” them. There are so many places where this will only let you make guesses. You write a loop in your code, the compiler removes the loop and replaced it with another construct that may be a bit faster to execute, but may be way harder to understand - or tedious to change if you need to edit it especially if it’s not a simple change (character can now run faster!) but needs new functionality that would completely break this optimisation (but it’d be trivial to add in the original code).

    Also all context is removed. You won’t work with code like this:

    (Both pseudocode, not bothered to make a real example that maybe even compiles)

    if keyPressed(MOVE_RIGHT){
      player.speed = min(player.MAX_SPEED, player.speed + player.acceleration*frametime)
    }
    else{
       player.speed = player.speed * player.MOVEMENT_DAMPENING * frametime
    }
    

    You’d get something like this:

    int *fi93836290= 0x7363728
    int *fi22425 = &fi93836290+0x23
    fi22425 = fun7362782(0x63627)? fun42638(...)
    //and so on
    

  • I don’t know.

    The gist is… When you write a program/game/… You write source code and then compile it - that means translating the source code into machine readable code. While certain things do usually get lost in this process (e.g. function names, variable names, etc.) you can see the resulting machine code and make a valid assumption about how the original code looked like. This is not a 1:1 reconstruction, but will yield code that should compile to the (basically) same result as the original game.

    If you hit a Jackpot, you find a version of the program/game that was used for testing. Those often contain many pieces of information that would otherwise be stripped from the end result (e.g. aforementioned variable names, function names and so on). If not, it’s a puzzle solved with guess work and experience.

    If you know some specifics about the game (which language was it written in, what compiler was used in which version,…) you can get some better results, as you can take patterns in the machine code and translate them back into what the original code was probably looking like based on the tools used.

    In the end it’s sadly almost everytime still a manual process in which you look at the resulting source code, make some educated guesses based on patterns that are usually used when programming and specific functions that are probably contained in a game and then check those assumptions by changing the code and see if your changes affect the part of the program you thought you were dealing with.

    Say you assume a specific variable/value is the maximum walking speed of the character. Then you change it and try to play the game and see if you can walk faster now. If so, label this value accordingly and go on to the next unknown piece of the puzzle.




  • And don’t listen to the promises of big companies with billion-funds, they cook with water like the rest of us.

    Oh, yeah, I remember when one of our super important core systems was migrated to SaaS. My system was interfacing with it, so I got notified about the migration to make a plan. I basically told them: “We’re using $API to connect to your system. Tell me the new hostnames and IP ranges and ports and I will configure the firewall on our end. Also, our connector for your migrated system will be deployed in $IP-range so please allow these inbound connections in your firewall.”

    Half a year later I got a message: “Yeah, we just found out, that $SaaS-provider never configured the firewall after our tickets and everything is reachable from the public internet. We’re forcing them to lock down the system now. Can you please tell us again from where you connect to us?”


  • If you put any data anywhere, assume it will be contained in a breach in the future. Blue teaming is hard. You have to be perfect every time. Red teaming is easy. You just have to wait till the blue team makes a simple mistake…

    Mails sent to a company? Their or your mail account will be breached one day.

    Account details on a webpage? Their user database will be leaked.

    Your cloud drive, ect.

    Even your data on your NAS at home or on your PC could get accessed in one way or another, you’re just a zero day and an unfortunate click away from disaster.

    On the upside, as long as you do not have a target on your back, patch your stuff in a timely manner and keep some hygiene in configs, secops … You should be fine, as most automated attacks aren’t that high level and target the low hanging fruits. But that doesn’t make you completely safe.




  • Same, I only used it in the end as some kind of „fuck it, let’s go and break everything while searching some missed secrets“. I don’t want to completely let it destroy the game, but as a grand finale in post game content? Count me in!

    At least they don’t mention, that they adjusted Stendhal, which I feel is broken in more ways than Game Breaking Death.

    I absolutely love the idea of presets for Lumina as it encourages tweaking builds more. Now I should be able to just save a working build in one slot and a tweaked version in another and directly compare them and even restore the previous version easily.