【技巧】逆向時如何快速找到變量的生成方式

這幾天一直在搞某團的一個滑動驗證碼,裏面有些變量的生成方式若是你不看完他的全部代碼,一步一步調試的話,是很難找到的,若是你說要看完他的所有的代碼的話,這成本就太大了,因此,今天就教你們一個技巧,就是 HOOK, hook 能夠理解爲鉤子,我這裏的話就是捕捉到本身想要的變量的獲取值和設置值的地方。下面開始總體。cookie

hook js 須要用到一個 js 的函數,Object.defineProperty(),這方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現有屬性, 並返回這個對象。裏面有三個參數,分別是:函數

  • 要 hook 的對象
  • 要 hook 對象的屬性
  • 須要從新定義以後的屬性

下面開始舉例子。網站

咱們以前搞過一些網站的 cookie,這些我當時是直接搜索 cookie 的值來查找它的生成位置的,可是不是全部的網站均可以直接尋找的,還有就是太浪費時間,這時候就須要咱們用到 hook 了,我這裏就簡單貼一個 hook cookie 的代碼:spa

(function() {
    'use strict';
​
    Object.defineProperty(document, 'cookie', {
        get: function() {
            console.log('Getting cookie');
            return document.cookie;
        },
        set: function(val) {
            console.log('Setting cookie', val);
            debugger;
            return val
        },
    });
​
​
})();複製代碼

這裏就直接捕捉了 cookie 的 get 和 set 方法,通常咱們只須要捕捉 set 方法便可,把上面的代碼放在油猴插件上運行一遍便可,而後再刷新網站你就會看到這個了:插件

image

image

這個時候看到本身想要的 cookie 的話,就去查看右邊的調用棧就能夠了,這樣子找出它的生成位置就很簡單了,剩下的就是本身的分析了。debug

上面這個方法雖然很方便,但不是萬能的。若是咱們想要獲取某一個對象的某一個變量的話,並且這一個對象不是全局對象,好比 window 或者 document,這樣子就獲取不到了,要不你看這裏:調試

image

這裏是想要獲取 _ 對象的 fL 的值的生成方式,若是你直接搜 fL 的話是找不到結果的,由於這些變量名字早就混淆過了,這時候你會想說,不是能夠 hook 嗎?是啊,那咱們試一試:code

image

代碼很容易,直接運行 + 刷新網站,直接給你報錯,更別說會有斷點給你了。cdn

image

這時候就須要另一個東西了,須要用到咱們的 fiddler,這可不僅是一個抓包軟件,咱們能夠利用這個軟件,讓咱們在指定網站上的請求重定向到咱們本身指定的文件,而後再配合咱們剛剛學的 hook 技術,這樣子咱們想要的變量的生成方式就直接浮出水面了。對象

這裏先把咱們須要重定向的原文件拷貝下來,而後把咱們的 hook 代碼 加在這個對象的定義的裏面:

image

又在 fiddler 上重定向:

image

若是不會的話,本身百度哈,這裏不是這篇文章的重點。

配置完了從新刷新網站,這時候你想要的結果就來了:

image

是否是就出來了,這個時候再查看右邊的調用棧的信息就能夠了,是否是很是容易?so easy。

hook 不止能夠捕捉變量的值,還能夠hook 指定的函數,這裏就暫時不說了,尚未找到應用的例子,若是往後遇到,會寫出來給你們。

最後

以上就是本篇文章的全部內容了,若是對你有幫助,麻煩點個,謝謝啦!另外某團的滑動已經解出來了,因爲不可抗力緣由,就不公開源碼了,可是我下週會寫篇文章說說裏面須要注意的點。最後,贊越多,更新越快,你懂得!

END

image

點贊越多,更新越快

相關文章
相關標籤/搜索