備忘録

備忘録

x64dbgにテーマを適応する方法

Ⅰ. はじめに

タイトルの通り「x64dbgにテーマを適応する方法」です。
f:id:kagasu:20180624174457p:plain

Ⅱ. やり方

1. git cloneする
git clone https://github.com/ThunderCls/x64dbg_vs_dark
2. style.css と icons フォルダを x64dbg.exe と同じ階層にコピーする
3. visual_studio_dark_theme.ini を x64dbgで読み込む

https://gist.github.com/ThunderCls/4dcc4b8c1cace8c9cae5612fc696d465
f:id:kagasu:20180624181244p:plain

以上です

LuaでUUIDバージョン4を生成する方法

Ⅰ. はじめに

タイトルの通り「LuaでUUIDバージョン4を生成する方法」です。

Ⅱ. サンプルプログラム

math.randomseed(os.time())
local random = math.random

local function uuid()
    local template ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
    return string.gsub(template, '[xy]', function (c)
        local v = (c == 'x') and random(0, 0xf) or random(8, 0xb)
        return string.format('%x', v)
    end)
end

-- テスト
for i = 1, 5 do
  myuuid = uuid()
  print(myuuid)
end

実行結果

794b1cd7-e8eb-468d-bf52-0d2287a54b9f
224d30ab-e3aa-4927-92d8-2aa521f86b25
d59b8a64-9ae3-430b-a391-53cb6dbf3619
463ffd53-7f1b-4326-b50e-b3a7a829c8b5
c19c1725-e269-4690-8f02-a4d1f6492d48

Steamのファイルを自動ダウンロードする方法

Ⅰ. はじめに

タイトルの通り「Steamのファイルを自動ダウンロードする方法」です。

サンプルとしてPUBG(PLAYERUNKNOWN'S BATTLEGROUNDS)のTslGame.exeだけを自動ダウンロードする方法をこの記事で紹介します。

Ⅱ. やり方

1. DepotDownloader をダウンロードする

https://github.com/SteamRE/DepotDownloader/releases

2. start.sh を作成する

AppID はこちらのWebサイトから確認できます。
https://steamdb.info/apps/

$ vim /path/to/DepotDownloader/start.sh

#!/bin/bash
cd /path/to/DepotDownloader
dotnet DepotDownloader.dll -app 578080 -username your_steam_usename -password your_steam_password -filelist file.txt
3. file.txt を作成する
$ vim /path/to/DepotDownloader/file.txt
TslGame.exe
4. cronに1時間毎にDepotDownloaderを起動する設定を追加する
$ crontab -e
0 * * * * /path/to/DepotDownloader/start.sh

実行結果

f:id:kagasu:20180616154241p:plain
f:id:kagasu:20180616154640p:plain

Fridaでjava.security.MessageDigestをhookする方法

Ⅰ. はじめに

タイトルの通り「Fridaでjava.security.MessageDigestをhookする方法」です。

この記事は以下のように"hoge"のMD5を取得するdigest()メソッドをhookする事を想定して書かれています。

MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] result = md5.digest("hoge".getBytes());

Ⅱ. やり方

1. hook.js
var Base64a = {
  encode: (function(i, tbl) {
      for(i=0,tbl={64:61,63:47,62:43}; i<62; i++) {tbl[i]=i<26?i+65:(i<52?i+71:i-4);} //A-Za-z0-9+/=
      return function(arr) {
          var len, str, buf;
          if (!arr || !arr.length) {return "";}
          for(i=0,len=arr.length,buf=[],str=""; i<len; i+=3) { //6+2,4+4,2+6
              str += String.fromCharCode(
                  tbl[arr[i] >>> 2],
                  tbl[(arr[i]&3)<<4 | arr[i+1]>>>4],
                  tbl[i+1<len ? (arr[i+1]&15)<<2 | arr[i+2]>>>6 : 64],
                  tbl[i+2<len ? (arr[i+2]&63) : 64]
              );
          }
          return str;
      };
  }()),
  decode: (function(i, tbl) {
      for(i=0,tbl={61:64,47:63,43:62}; i<62; i++) {tbl[i<26?i+65:(i<52?i+71:i-4)]=i;} //A-Za-z0-9+/=
      return function(str) {
          var j, len, arr, buf;
          if (!str || !str.length) {return [];}
          for(i=0,len=str.length,arr=[],buf=[]; i<len; i+=4) { //6,2+4,4+2,6
              for(j=0; j<4; j++) {buf[j] = tbl[str.charCodeAt(i+j)||0];}
              arr.push(
                  buf[0]<<2|(buf[1]&63)>>>4,
                  (buf[1]&15)<<4|(buf[2]&63)>>>2,
                  (buf[2]&3)<<6|buf[3]&63
              );
          }
          if (buf[3]===64) {arr.pop();if (buf[2]===64) {arr.pop();}}
          return arr;
      };
  }())
};

function hookMessageDigest() {
  var classMessageDigest = Java.use("java.security.MessageDigest");
  classMessageDigest.digest.overload('[B').implementation = function (arg1) {
    console.log("[*] digest called");
    console.log(Base64a.encode(arg1));
    return this.digest(arg1);
  }
  console.log("[*] digest modified")
}

setImmediate(function () {
  console.log("[*] Starting script");

  Java.perform(function() {
    hookMessageDigest();
  })
})
2. 実行する
frida -U -l hook.js -f tld.hoge.app --no-pause

実行結果

[*] Starting script
[*] digest modified
aG9nZQ==
[*] digest called

Ubuntu にデスクトップ環境をインストールする方法

Ⅰ. はじめに

タイトルの通り「Ubuntu にデスクトップ環境をインストールする方法」です。
VPSでレンタルしたコマンドラインのみのUbuntuにデスクトップ環境をインストールし、VNC接続で操作できるようにする事を想定しています。

Ⅱ. やり方

1. VNCサーバをインストール
apt-get install vnc4server
2. VNCのパスワードを設定する
vncpasswd
3. VNCを起動し、終了させる。

xstartupファイルを作成させる事が目的です。

vncserver :1
vncserver -kill :1
4. xstartupファイルを編集する
vim ~/.vnc/xstartup
#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
exec gnome-session &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus -n &
gnome-terminal &
5. 必要なパッケージをインストールする
apt-get install -y gnome-core gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
6. VNCサーバをポート1で起動する
vncserver :1
7. UltraVNC等で接続する

f:id:kagasu:20180613193602p:plain

実行結果

f:id:kagasu:20180613194151p:plain