Bug head Developer's BLOG

Bug head 開発者としての情報発信、また雑事

MinorityClean X1 改造方法リリース

これは公開しないこと、圧力あります。

ソースコード

; Copyright (c) Hiroyuki Yokota (oryaaaaa)
Global NewList Buffer.s()
Global NewList PMP_N.s()
AddElement(PMP_N()) : PMP_N() = "NOP Rbx"
AddElement(PMP_N()) : PMP_N() = "NOP Rcx"
AddElement(PMP_N()) : PMP_N() = "NOP Rbp"
AddElement(PMP_N()) : PMP_N() = "NOP Rdi"
AddElement(PMP_N()) : PMP_N() = "NOP R8"
AddElement(PMP_N()) : PMP_N() = "NOP R10"
AddElement(PMP_N()) : PMP_N() = "NOP R12"
AddElement(PMP_N()) : PMP_N() = "NOP R14"
AddElement(PMP_N()) : PMP_N() = "NOP Rax"
AddElement(PMP_N()) : PMP_N() = "NOP Rdx"
AddElement(PMP_N()) : PMP_N() = "NOP Rsp"
AddElement(PMP_N()) : PMP_N() = "NOP Rsi"
AddElement(PMP_N()) : PMP_N() = "NOP R9"
AddElement(PMP_N()) : PMP_N() = "NOP R11"
AddElement(PMP_N()) : PMP_N() = "NOP R13"
AddElement(PMP_N()) : PMP_N() = "NOP R15"

Global NewList PMP_B.s()
AddElement(PMP_B()) : PMP_B() = "XCHG Rbx, Rbx"
AddElement(PMP_B()) : PMP_B() = "XCHG Rcx, Rcx"
AddElement(PMP_B()) : PMP_B() = "XCHG Rbp, Rbp"
AddElement(PMP_B()) : PMP_B() = "XCHG Rdi, Rdi"
AddElement(PMP_B()) : PMP_B() = "XCHG R8, R8"
AddElement(PMP_B()) : PMP_B() = "XCHG R10, R10"
AddElement(PMP_B()) : PMP_B() = "XCHG R12, R12"
AddElement(PMP_B()) : PMP_B() = "XCHG R14, R14"
AddElement(PMP_B()) : PMP_B() = "XCHG Rax, Rax"
AddElement(PMP_B()) : PMP_B() = "XCHG Rdx, Rdx"
AddElement(PMP_B()) : PMP_B() = "XCHG Rsp, Rsp"
AddElement(PMP_B()) : PMP_B() = "XCHG Rsi, Rsi"
AddElement(PMP_B()) : PMP_B() = "XCHG R9, R9"
AddElement(PMP_B()) : PMP_B() = "XCHG R11, R11"
AddElement(PMP_B()) : PMP_B() = "XCHG R13, R13"
AddElement(PMP_B()) : PMP_B() = "XCHG R15, R15"

Global NewList PSC_ALL.s()
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rbx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rcx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rbp"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rdi"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R8"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R10"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R12"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R14"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rax"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rdx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rsp"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP Rsi"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R9"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R11"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R13"
AddElement(PSC_ALL()) : PSC_ALL() = "NOP R15"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rbx, Rbx"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rcx, Rcx"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rbp, Rbp"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rdi, Rdi"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R8, R8"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R10, R10"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R12, R12"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R14, R14"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rax, Rax"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rdx, Rdx"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rsp, Rsp"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG Rsi, Rsi"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R9, R9"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R11, R11"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R13, R13"
AddElement(PSC_ALL()) : PSC_ALL() = "XCHG R15, R15"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rax" ;1 A13
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rbx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rcx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rdx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rsp"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rsi"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rdi"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rbp"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R8"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R9"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R10"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R11"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R12"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R13"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R14"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R15"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rax" ;2 A13
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rbx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rcx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rdx"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rsp"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rsi"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rdi"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT Rbp"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R8"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R9"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R10"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R11"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R12"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R13"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R14"
AddElement(PSC_ALL()) : PSC_ALL() = "NOT R15"

Global RandomSeedN.i, CodeLoop.i
!XOR Rax, Rax
!MOVNTI [v_RandomSeedN], Rax
!RDSEED Rax
!MOVNTI [v_RandomSeedN], Rax
; $F=4 bit , 24 = $Fx6
RandomSeedN = RandomSeedN & $FFFFFF
RandomSeed(RandomSeedN)

For CodeLoop=1 To 1024
  RandomizeList(PSC_ALL())
  ForEach PSC_ALL()
    AddElement(Buffer()) : Buffer() = PSC_ALL()        
  Next
Next
For CodeLoop=1 To 256
  RandomizeList(PMP_N())
  ForEach PMP_N()
    AddElement(Buffer()) : Buffer() = PMP_N()        
  Next
  RandomizeList(PMP_B())
  ForEach PMP_B()
    AddElement(Buffer()) : Buffer() = PMP_B()        
  Next
Next
For CodeLoop=1 To 12
  RandomizeList(PMP_B())
  ForEach PMP_B()
    AddElement(Buffer()) : Buffer() = PMP_B()        
  Next
Next

CreateFile(2, "@:\MinorityClean_201912_A101_Generated_Code_.txt")
ForEach Buffer()
  WriteStringN(2, "!"+Buffer())
Next
CloseFile(2)

どこへ?

; Copyright (c) Hiroyuki Yokota (oryaaaaa)
!Start_Program:
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP ;8
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP
!FNOP ;16
IncludeFile "MinorityClean_201912_A101_Generated_Code_.txt"
CuresPartner_4096ms
IncludeFile "MinorityClean_OnlyMyRailgun_2e_MMX.pbi"
XCHG_bx_cx_ax_dx
IncludeFile "MinorityClean_OnlyMyRailgun_2e_MMX.pbi"
!EMMS

これで完成です。

ソースコードの共有は出来ますが、EXEの公開は出来ません。MinorityClean XIII より効果がありますので、64ビットレジスタだけにする方法は圧力あって、公開版にはできません。インテルドライバで XCHG AX, AX というコードなど、これらを XCHG RAX, RAX へ変更するだけで、ジッターの原因は解決する見通しであるからです。

 

この方法は、ネット公開しようとしますと、人生がめちゃくちゃになる圧力が起きる状況ですので、とても危険です。この方法が良いけれど、問題点として、クラッシュさせたいEXEをクラッシュできなくなる裏の問題が生じます。