A while back I did some work with GlideN64 to perform noise emulation entirely on the GPU.

I stopped working on it. As usual, certain groups of people said this is due to “people being mean”.

So, today, figured I relook at it and see if I could improve on the implementation as last time and see if I can optimize the current implementation.

The implementation this time around is rather simple:

  • Use one line of GLSL for the actual noise generation
  • Scale the coordinates used for the noise seeding according to N64 resolution *properly*
  • Use prime numbers to seed the PRNG more.

This results in *8* lines of GLSL compared to *183* lines of C++.

The shader is as follows:

 

CSGO

Lately I have been playing games after work and on my days off to pass the time. Most of the time its CSGO.

After around 150 hours, started to get better, never going to try competitive though. Still got a long way to go. Its nigh on impossible to play at night, due to medication completely dulling senses and response time. so only chance I can play is at morning and afternoons.

Recordings of other games might go up, depending if they have licensed music of course.

What happened:

  • Played Starcraft for a bit, up to the point of getting into Brood War.

So nice to be able to relax again. Been catching up on CSGO though, haven’t done much new videos.

  • Been working on and off on foo_dsp_effect, gave it its dedicated Git repository this time since I think its big enough for that. Started to add 3 other audio DSPs to the effect array.
  • Finally watched Ghost in the Shell, was a decent enough movie, to me at least.

  • Figured stopping doing Cemu cracking. Would rather do other stuff than constantly cracking the same thing over and over again. People still think I was paid by Exzap a fee to stop doing it, and people will just believe what they want to believe regardless of what was said.
  • That said, made the Cemu hack DLL open source. Figured it might be useful to whoever wants it. It still needs some things like checking memory page permissions as well as optimizations to the pattern search, as well as general additions for patching and inserting code caves.

 

This will be a basic primer in the bypassing of Cemu 1.74x/1.75 DRM. This is subject to change in future versions as Exzap fixes these vulnerabilities.

Tools used:

  • x64dbg with the SwissArmyKnife plugin.
  • MSVC2017 using MinHook (though I tried using libudis86 in the past)

 

1) Start by finding the 64bit hash, you can find it by finding out where the cpuid and harddrive hash meet, as well as the timestamp.

2) Make it always return 0

The function prototype for the hardware hash was found out through basic RE, not using a decompiler.

3) Using hardware breakpoints in the calls that use the 64bit hash method, try to find where the unregistered bytes are flipped and reset them back to known registered state. As in, trace when the 64bit hash fails.

 

4) Kill server calls. Plain killing all network related code is not enough. I found hooking some Wininet calls is enough to do it, though Exzap could detect hooks using some off the shelf protector or some own code.

I found redirecting to localhost is enough for the other network code to succeed.

The full sourcecode for this primer is here: https://github.com/mudlord/cemuhack

No, I wasn’t paid off.

Some of the reasons I stopped developing it are:

  • In my personal life, I recently found things that actually have more meaning than just repeatedly cracking the same thing over and over again. I rather focus on those things. I rather spend the time I have on things now I actually enjoy instead of cracking something I hardly use. Plus, I rather spend time doing things I actually enjoy with the time I have these days, like a normal person would.
  • I cannot fight Exzap, its clear pirating Cemu hardly made a dent in his profit base.
  • I learnt what I wanted to know from Cemu’s DRM system. I learnt a great deal about x64 reversing in the process and worked out some new ways for myself on cracking things.

Just from a traffic report for the month/week.

  • VBA-M is explained due to my avatars.
  • cs.rin.ru is fine, since I know there is a presence of some people who use Cemu there.
  • Yandex is probably some Russian forum, so, again, fine.
  • 4chan is, as expected.

What I don’t expect nor like is the adfly or zytpirwai links. Personally I wish those would go the heck away since I would rather they link to my blog like Reddit and cs.rin does. I wish there was a way to starve adfly links of oxygen.

Get a decent crosshair:

Read this for moar info. Seriously

Turns out it can make a massive difference. I wish I knew crosshairs were as configurable as this in games. Who knew, right?

Sorry for not shit like coding your emulators or libretro frontends, or EXE/DLL packers, or audio DSP plugins.

Well actually, I am not sorry at all. I like having a life outside programming all the time.

Yes, I buy games with the money I make from work. I am a terrible human being for not making Cemu cracks constantly so Exzap can improve his DRM so in turn it helps his money stream.

Heck, I should go back to playing Bulletstorm and CSGO even if they are deemed shit games…I heard Yooka-Laylee sucks too. Even though I bought it at launch and rebought Bulletstorm even though I did my own GFWL emulator DLL just to play the original Bulletstorm…

What happened:

  • Did the 1.7.4 line of Cemu cracks. Turns out they were absolute shitshows. I am disgusted at myself that I let them out in the state they are in.  Turns out I should have been testing games more than I should have since there was some things wrong with them.
  • Turns out Starcraft 1.18 was released in beta and played that. Still playing it.
  • Did some CSGO videos on my youtube channel.
  • Worked sporadically on the libretro loader. Found out why the timing was so busted. Now need to overhaul the retro_run call routine for the DLLs so timing, and hence audio is fixed. Using Windows resamplers this time, pondering switching to Xaudio2 instead of DirectSound.

One thing that annoys me about GitHub is the current theme it uses.

Looked quite garish, and I personally couldn’t stand it at all.

So I did this.

Looks much nicer to me on Windows. YMMV.

If anyone wants it the GreaseMonkey script to do this is here.