<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          electron程序逆向分析心得

          共 1558字,需瀏覽 4分鐘

           ·

          2020-11-11 04:59

          electron 是 GitHub 發(fā)布的跨平臺桌面應用開發(fā)工具,支持 Web 技術開發(fā)桌面應用,其本身是基于 C++ 開發(fā)的,GUI 核心來自于 Chrome,而 JavaScript 引擎使用 v8。
          https://www.oschina.net/p/electron?hmsr=aladdin1e1


          最近接觸到一個用electron開發(fā)的軟件,要對軟件做一些逆向分析。

          發(fā)現(xiàn)跟常見的win32 api開發(fā)的程序還是很不一樣的,以前的分析方法啊技巧在這里用不上了,畢竟軟件大部分功能是由html、js等開發(fā)的。

          源碼

          electron軟件發(fā)布時,一般都將源碼打包在apps/resources/app.asar中,通過asar解壓能夠輕松拿到軟件核心的js源碼。

          npm install asar -g
          cd apps
          asar extract app.asar app //解壓拿到源碼
          asar pack app app.asar //重新打包

          app.asar一般都沒有做進一步的加密處理,所以拿到源碼不難。當然不排除有的廠商可能在這方面做了一定的保護,就需要我們自己去逆向找到解密方法了,可以參考coco2d等。

          拿到的js源碼一般都會做一定的混淆,通過搜索js混淆技術和反混淆、格式化等,基本可以恢復到能夠方便閱覽的源碼。

          如果想驗證某些功能,或者做些修改,可以通過重打包然后替換app.asar。

          F12

          做js開發(fā)的同學,最常用的快捷鍵多半就是f12了。electron核心也是使用的chrome,那是不是可以用f12來調(diào)試呢。

          理想很豐滿,現(xiàn)實很殘酷。

          electron開發(fā)者在開發(fā)時,肯定會使用f12,但是發(fā)布時就不會把調(diào)試功能屏蔽了,不然底褲不都被扒了。

          不過嘛,他雖然關了,但是我們可以給打開嘛,自己給他扒出來。

          方法如下:

          asar extract app.asar app //解壓拿到源碼
          mainWindow.webContents.openDevTools();//找到main.js,加入這行代碼
          asar pack app app.asar //重新打包,替換原始app.asar

          然后我們就可以開心的像開發(fā)一樣調(diào)試了。

          如果覺得這樣太麻煩了,另外再提供一條思路,有興趣的同學可以折騰一下,做個通用的工具。

          翻翻electron相關源碼,寫個工具,hook openDevTools,讓其正常工作。

          WebContents::WebContents
          WebContents::OpenDevTools
          .SetMethod("openDevTools", &WebContents::OpenDevTools)
          .SetMethod("toggleDevTools", &WebContents::ToggleDevTools)

          more

          通常情況下,如果僅僅是js代碼的逆向和修改。通過上面的兩節(jié),加上調(diào)試基本都能搞定了。

          可能有些情況下,js無法搞定。

          1. js加密了,未找到解密方法,無法拿到js源碼

          2. js混淆嚴重,無法恢復,不好修改

          此時可能可以試試hook內(nèi)核的一下東西,可以通過翻閱chrome、electron、v8的源碼對比分析。

          比如想對Canvas做些修改,js層又不好弄,那么就可以找到electron在C代碼層實現(xiàn),做一些事情。

          class HTMLCanvasElement

          最后提一句,所有代碼都編譯在發(fā)布程序的exe中,可以通過字符串等特征,對比源碼分析,找到需要的功能。

          瀏覽 526
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月丁香激情六月 | 影音先锋成人在线 | 麻豆精品无码国产 | 一本久久精品一区二区 | 国产菊门残忍扩张视频 |