подмена яваскрипта в браузере

Discussion in 'PHP' started by Дикс, 24 Aug 2013.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    возможно ли как-то подменить яваскрипт-файл у браузера, чтобы например вставить в него отладку?

    искал в папке с кешем, но не могу его там найти

    да и наверное если изменить - браузер увидит что размер отличается от того что на сайте и скачает скрипт с сайта?

    есть одна коварная переменная на Одноклассниках
    я нашел в скриптах где она определяется, но не могу понять где в неё устанавливается значение

    как это можно отследить?
     
  2. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Ну как вариант... Пустить трафик через прокси и на прокси подменить уже. У Kaimi есть RegExp Proxy вот что-то подобное тебе надо.
    Чтоб он на нужный запрос отдал твой файл.
     
  3. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    в хроме офигенный отладчик, работает так же, как в обычных ide, поставь брейки и разбирайся
     
  4. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ну брейки я бы и в файрбаге поставил, если бы там все исходники не были вытянуты в одну строку
     
  5. Melfis

    Melfis Elder - Старейшина

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    Возможно как вариант(нету возможности протестить):
    Каким-нить adblock заблоч файл скрипта. Локальный файл, который надо дебажить запускай как юзерскрипт.

    А по поводу обфусцированного кода в одну строку - в хроме и опере некст под венду дебагер умеет разворачивать такой код.
     
  6. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    913
    Likes Received:
    480
    Reputations:
    724
    _________________________
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    да не ищу я XSS )

    http://odnoklassniki.ru/web/gwt/b74d4130/one.app.community.dk.gwt.dm.block.Block/C7C73A575779835D66A20650A5C3DFBE.cache.html

    тут 55 тысяч строк гавнокода и где-то среди них устанавливается значение $wnd.OK.tkn.token с помощью $wnd.OK.tkn.set()
    вот понять бы как генерится это значение
     
  8. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    913
    Likes Received:
    480
    Reputations:
    724
    Code:
    function ox(a, b) {
        px(a, b);
        if (0 == jjc(b).length) {
            throw new Ehc(a + ' cannot be empty')
        }
    }
    function px(a, b) {
        if (null == b) {
            throw new wic(a + ' cannot be null')
        }
    }
    var adj = 'header';
    var xhj = 'TKN';
    function A3c(a,b){
    	var c,d,e,f,g;
    	if(v3c(this)){
    		e=s3c.ud(this.f);
    		if(e){
    			c=rd(e,iic(this.i),0);
    			d=c==e.f-1;
    			sd(e,c);
    			if(d){
    				d6i(r3c,zjj+this.f+"' processed")
    			} else {
    				d6i(r3c,zjj+this.f+"' skipped");
    				return
    			}
    		}
    	}
    	J4c(this.f,Z$b(L$b(akc()),this.i));
    	!!this.g&&y5c(this.g);
    	if((F9c(),m9c)&&!!this.j){
    		f=new J3c(this,a,b);
    		gh(f,200)
    	} else {
    		u3c(this,a,b)
    	}
    	[COLOR=Red]g=(ox(adj,xhj),b.c.getResponseHeader(xhj));[/COLOR]
    	null!=g&&!!g.length&&(b2c(),[COLOR=Red]$wnd.OK.tkn.set(g)[/COLOR],undefined)
    };
    Дальше думаю не проблема.
     
    _________________________
    #8 VY_CMa, 24 Aug 2013
    Last edited: 24 Aug 2013
  9. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ага, находил я это
    дальше все только хуже
    через отладчик находится куча вложенных функций, бОльшая часть из которых вообще ничего не делает и не возвращает

    g=(ox(adj,xhj),b.c.getResponseHeader(xhj));

    вот тут по ходу такая логика: либо получить токен из полученных хидеров (а на ОД так и происходит - первый токен генерится, потом отправляется с запросом и в ответе приходит новый токен), либо создать новый токен

    ox(adj,xhj) - вроде как создать
    ajd = строка "header", xhj = строка "TKN"

    вот функция ox:

    PHP:
    function ox(ab) {
        
    px(ab);
        if (
    == jjc(b).length) {
            throw new 
    Ehc(' cannot be empty')
        }
    }
    а вот px():

    PHP:
    function px(ab) {
        if (
    null == b) {
            throw new 
    wic(' cannot be null')
        }
    }
    ну и ещё jjc, обрезающая пробелы и проверяющая не пустая ли строка у значения:
    PHP:
    function jjc(c) {
        if (
    c.length == || c[0] > xaj && c[c.length 1] > xaj) {
            return 
    c
        
    }
        var 
    c.replace(/^(\s*)/, maj);
        var 
    a.replace(/\s*$/, maj);
        return 
    b
    }
     
  10. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Дикс
    BurpSuite, можно делать вручную, можно ограниченно настроить автозамену.
     
    _________________________
  11. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Fiddler -> Вкладка "AutoResponce", добавляем нужную сессию, пкм на ней и Edit Responce...