Feeds:
文章
留言

Blazor WebAssembly 筆記

最近試玩 Blazor WebAssembly 有點小小心得來筆記一下。

首先要了解這個東西要先知道WebAssembly

“WebAssembly is a new type of code that can be run in modern web browsers — it is a low-level assembly-like language with a compact binary format that runs with near-native performance and provides languages such as C/C++ and Rust with a compilation target so that they can run on the web. It is also designed to run alongside JavaScript, allowing both to work together. " ~ MDN

簡單的說就一種可以在瀏覽執行的程式,這個程式可以使用 C、Rust或C#產生 .wasm 檔案,這個檔案是可攜的,最初在只能在瀏覽器執行,現在已經逐漸可在各種程式語言中執行,可以把它想像成 Web 版的 .dll 或 .so。

Blazor 是使用 HTML+CSS+C# 的一種網頁開發框架,與傳統的HTML+CSS+Javascript差異就是替換掉 Javascript 成為 C#,如此一來對於C#開發人員就可以充分使用.NET生態圈資源,不過雖然替換掉 Javascript其實本質上還是網頁開發,所以真的要用到進階效果還是不得不用或了解。

Blazor分成 Blazor Server 和 Blazor WebAssembly兩種,Blazor Server 是將 Blazor 元件運作在 ASP.NET Core Server,前後台透過 SignalR(WebSocket)即時通訊處理事件和畫面渲染,不過這個不是本文討論的方向。Blazor WebAssebly則是純前端運作,他有趣的點是用 WebAssembly 實作了.NET Runtime,因此可以在瀏覽器上執行 .NET 程式(符合 .NET Standard),如果你啟動 Blazor WebAssembly 應用然後 透過 Chrome DevTools 觀察可以發現下載了幾個關鍵檔案 blazor.webassembly.jsblazor.boot.jsondotnet.wasm(或dotnet-3.2.0.js) 和 一堆 DLL 如下圖

如果你第二次載入可能就看不到,因為這些檔案被快取了

link text

依據觀察 blazor.webassembly.js 是用來啟動 .net runtime,而應用相關配置描述參考 blazor.boot.json,然後開始下載相關檔案並啟動應用。如果你下載 .DLL 來觀察還可以發現他真的是 .NET DLL

對照原始碼

然後再觀察渲染部分

可以發現還是透過 HTML+CSS 進行渲染

事件處理則可以從 Counter 範例觀察

本質還是 Javascript,不過應該封裝成 WebAssembly 可以相互調用的介面。

所以總結來說 Blazor WebAssembly 可以理解為瀏覽器上運行的 .NET Runtime WebAssembly 版本,這樣使得.NET的程式可以直接運行在瀏覽器上。

嗯… 很像曾經出現過的 Flash/Silverlight/Applet 運作模型只是這次跑在 Web 標準之上,因此換個角度來想這個架構也不是只能用於 .NET,如果其他語言如 Java/Python/PHP 也提供對應的 WebAssembly 版本 Runtime 也可以達到相同的效果。也許不久之後可以看到有人實作 Python 版本…

會想寫這篇是因為 Boss 有個,大家都知道

來源Jhane Chou

對, 夢幻般的工具解決大部分人的需求,只是畫面太醜(動態產生),因此顧問(把這個名詞整體水平拉低了許多)提供了許多解法如Vue/Flutter Web,但是 N年(對, 單位是)過去了還是那個醜樣,持續提出新技術繼續唬爛,我猜他下一個要提的是使用 Blazor WebAssembly… 對這就是寫這篇的目的,來來來 下好離手 XD

哈哈… 本來第一次是B 終於調整成 A+ 留作紀念….

可以連到這個網站測試一下 https://www.ssllabs.com/ssltest/analyze.html

 

三國志 14 試玩

雖然玩簡單模式, 也是打挺久的, 雖然別人比較不會來打你 XD

 

這時期董卓果然厲害, 沒觸發呂布沙董卓事件, 兩個繼續爽爽用, 本來 5 虎將只差黃忠, 結果關羽半途居然棄我而去, 連劉備也喚不回, 老虎勝3隻…

 

2020.3.29

 

終於集結五虎將

我要諸葛亮…. 還沒出山

 

董公啊

稱王了

廢漢稱帝了 還沒統一

離間+趨虎吞狼+勸降也是挺不錯

取得司馬懿

208 年取得周瑜, 龐統, 孫策和孫權, 郭嘉掛了, 改用周瑜當軍師, 諸葛亮還沒出山

209 年終於取得諸葛亮,

順便娶黃月英

210年

周瑜死了… 給了諸葛亮一本老子智力變成 110(100+10)聘為軍師

小喬死了

呂布死了(居然比董卓還早掛)

公孫瓚, 顏良, 文醜死了

211年孫策死了

213年關興加入
… 玩著玩著 君主董卓就歸天, 任命黃月英為君主想不到一堆家臣跑光

rgnz9fj

單挑畫面

ocl7abe

最後是黃月英統一天下 orz

dhme66h

Hyperledger Fabric 2.0 測試

 

從上次紀錄 1.0 都 2017年, 最近 2.0 剛釋出嘗鮮一下, 幾點心得

  • 不要在需要 Proxy 才能上網的環境架設! 不要在需要 Proxy 才能上網的環境架設! 不要在需要 Proxy 才能上網的環境架設!
  • 從簡單的 chaincode-docker-devmode 開始
    • 雖然官方教學是用 first-network
    • 文件不一定都對, 看 Source Code 一定對 (再次想到侯捷的名言)
    •  錯誤訊息很難懂, 看 Source Code 一定對
      • 比如說 “error getting chaincode deployment spec for mycc: exit status 1″

不過 2.0 最重要的 FabToken 還不知道怎麼玩…..


2020.2.10 更新, 完成 First Netowork

透過 peer lifecycle 手動新增 chincode

hp0f0en

話說以前遊戲破解都會說"開啟 PC Tools 搜尋 xx xx xx xx 修改為 yy yy yy yy" 當時很好奇為什麼改了這計個數字就可以不用密碼本玩遊戲, 當時的技術水平無法理解, 下圖真是讓人熟悉的畫面

圖片來源

雖然之前用 IDA 修改過 ARM64 的組語, 不過一直沒機會試試 x86 的組語, 剛好最近有個專案有綁定 key 導致無法順利測試, 想說用 IDA 試試, 運氣真好(定位到目標還是很困難,可能還是要補強動態分析)破解成功. 紀錄一下思路.

1. IDA 7.0 使用正確版本載入 .dll, 由於該應用是 32 為版本, 所以使用 ida.exe 而非 ida64.exe

 

2. 搜尋字串

 

3. 跳到字串定義的 Address

4. 列出參照這個字串的相關函數

5. 跳到代碼的 Address

6. 圖表模式

7. 在往上尋找參照, 可以發現 “sub_101ECC10″ 返回值必須不為 0 , 所以只要讓她永遠返回 1 就不用 key 啦

遇到問題

1. 產生偽代碼時出現 “xxxxx: positive sp value has been found" , 網路上說調整 sp 可以修正, 不過實作上卻出現 “call analysis failed", 這個問題還需要再看有何解法, 網路另有一說法是 IDA Pro 7.2+ 有自動修正這個問題, 不過沒有版本可以驗證.

2. IDA 的 16 進位檢視的位址和實際檔案位置不同有點奇怪, 之前分析 ARM 不會有這個問題

KOF ALLSTAR

2019.12.13 更新

這次玩的很低調居然只活了半個月…. 還好有留下一畫面作紀念

很好奇如果沒有人檢舉系統是如何偵測的

 


















虧我玩得這麼低調, 還是被鎖了…. 不過修改這個遊戲倒是困擾我挺久的, 最終修改成果

  • 技能冷卻固定 0.5s
  • 無敵
  • 攻擊力固定 90萬

緬懷一下…. 遊戲真的設計的蠻好玩, 值得推一下… 也許鐵拳角色出來再去註冊一個新帳號 XDDD

 

nim 1.0.2 練習

nim 終於出了 1.x, 不過剛出來時真的不穩定, 連 httpclient 都有問題, 今天再次嘗試 1.0.2 終於沒有低級錯誤, 準備用個小題目來試寫, 就選定酷狗音樂的歌曲和歌詞下載, 體驗後發現效果還不錯, 檔案體積也很小, 完全可攜沒有依賴, 不知道可不可以交叉編譯 …

涉及版權, 就紀錄一些編譯結果

沒有任何依賴

檔案不到 1M

 

Debug

Release

Release+UPX 剩下3xxk

 

工具提供的功能