Подскажите по обфрускатору

Тема в разделе "Как сделать...", создана пользователем nnmkayf, 13 янв 2008.

Статус темы:
Закрыта.
  1. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Подскажите по обфрускатору, можно ли както автоматизировать превращение такого кода в нормальный - в автоматическом режиме?
    В ручную код расковырял, а вот как бы процесс автоматизировать?

    PHP:
    <?php
    /*********************/
    /*                   */
    /*  Version : 5.1.0  */
    /*  Author  : RM     */
    /*  Comment : 071223 */
    /*                   */
    /*********************/

    class c87cf38ec995e5501361e161a1f0f9ef3
    {

        private 
    $k NULL;
        private 
    $r NULL;
        private 
    $f NULL;
        private 
    $c NULL;

        public function 
    __construct$_obfuscate_OQяя )
        {
            
    $this->"c87cf38ec995e5501361e161a1f0f9ef3";
            
    $this->file_get_contents__FILE__ );
            
    $this->base64_decode$_obfuscate_OQяя );
            
    $this->$this->c( );
        }
    //[ _obfuscate_OQяя ]->[ 9 ]

        
    public function s$p$_obfuscate_tgяя )
        {
            return 
    $this->dsubstr$this->r$p$_obfuscate_tgяя ) );
        }
    //[ _obfuscate_tgяя ]->[ %B6 ]

        
    private function d$s )
        {
            
    $cd5ib45e907d7ba9e00238e87a6d76a23 "00000000000000000000000000000000";
            eval( 
    $this->);
            return 
    $s;
        }

        private function 
    c( )
        {
            
    $_obfuscate_5Qяя "aTE+TEw5MWxqbVxNERVTX0MTT14QHRZZAFINVRQZTQldQ0pCEBVaWQtPGWxhIxgNEFRdVV4BWFhWSAtsOW8wb286auios93jhrTm6Yfl3BXksuC4FuHZ4Ybh2uDq4eHp3baJQhjn8baN6edD6Lvk7hXlj+C457O1geaEsLm3vLe4tOkTsrjn07ey6N+yuui1tYvkt+GL57O0vRbg4OHT4N8Ztdni4+iJs9XiuLXT6YXl2eWI4brjjxG1juexsY+2hLe6tdzi4RYXs/YT6Nqzh+iytYDljOCwCRG1kOaOsLG2jre4td4Tsrnn1raC6epCMzA8bOWlEOGM5o+0s+aPsY23s0oZtOHi4eiJQ7aN6NhD6Y3l2+S04bPjhuDn4Yjg5uHb4NgZtOPj3em3s9jisElD6L7k5+WL4IDivRG1huaBQeHb4NPp1raNQ+iAs9bjh7XY6Ynk5+WN4IrjjhG1gOaBsYC2i7aHS0bj9OiHQ7ey6eKzjOi3ReS44bPjiOHW4YgRsYC2gLaItd3j0xjn3baOGLTj6Ynl0uWH4InjhOHV4YPg4+Dn4ekzbG86s4AXs9njhrXX6Y3l0OS14IfjjuHX4Ybh1ODk4efo6kgTs6gXsuTis0WyuOmAtYzkt+GD57BF4YPh0uHYELe5tdbj1OiMs9jjhLXT6Yzk7eS5EOGLFuHX4L3h2uHY4NDp3be7srQXs9QT6NqziemEtY7liOGJFuHS4YYRsY+2hLaBtdsTs4nn07aJ6eRD6YHl3uWNEOGC5oS0sOaOsYq2gLe7tdvj3RYXaW86MbXB6Yzl1OWAEOC+57O1jxbh3eHY4NDp0LexQ+iPQ7aM6eWzgemItYDkseGG57NF4Yzh0eHc4N7p0Evi4eiJQ7aJ6NuzhumAtYzliuGLGhG1jOaPQeHZ4ebp3Ubi7um1s9jjhEWyu+i+ReWK4I/jiuHQ4L7h0eHT4e7o6Ubi4+iHs9HjirXb6Lvl3eS7EOGM57G1j+aFsLK2ire7tdYdTRY9am866MWziemCReS34IHjjOHb4Y8RsLK2jLaEtO3j2hQXs9vjiLXc6YHk5OWF4IoT5oC0uhbg4OHW4NoZtOHi4eiJTraO6N2ziOi2tYHkvBHit+Dn4Yjg7uDv4NPp0EYeQ+iEs93it7XX6YHk7eS5HBHjh+HV4Yfh2uHWELaItO0Tsrnm47ew6NSzgemOReWI4I/ituHZ4Ybh2uDq4Nvp20g5ajEdTGw6MQMMSxERDAgFHBEXXQxVChYVCA0VRBRVAAgbR0seWEYXUU5IFRkRDh4eGRFIPDhsOF9XQRlCW0YHWEZAF0pbBggbHBELUEoYW14cGREXXRFYEQYKazhvOUJKPkJaPhgKQxgbHBY4HVBoRWsVFEVbX0JID11qRVo7GV0zbG9OaTE+aW86HABDBBkRFg4/OThVWUNNFV8MUR1GFA0EVV0TR1ELEBJBVAANER1QTA4VFFgYHR1FFV0aShhGS2wwbG9aBRgfRw0TBlhDSk1HCVBbGBVHXlgWHAhaSBhGFA0ZWEYDWDI+am8XXT5HUGQVWBURVWoXX2xFFxYVFVkPQ0sHDj0XCGUMaW86RWxpMDA/bDw8Ojg6PztsOA==";
            
    $_obfuscate_5Qяя base64_decode$_obfuscate_5Qяя );
            
    $_obfuscate_7wяя 0;
            
    $_obfuscate_5wяя 0;
            for ( ;    
    $_obfuscate_7wяя strlen$_obfuscate_5Qяя );    ++$_obfuscate_7wяя,    ++$_obfuscate_5wяя    )
            {
                if ( 
    strlen$this->) <= $_obfuscate_5wяя )
                {
                    
    $_obfuscate_5wяя 0;
                }
                
    $_obfuscate_5Qяя[$_obfuscate_7wяя] = $_obfuscate_5Qяя[$_obfuscate_7wяя] ^ $this->k[$_obfuscate_5wяя];
            }
            return 
    $_obfuscate_5Qяя;
        }
    //[ _obfuscate_5wяя ]->[ %E7 ]
    //[ _obfuscate_7wяя ]->[ %EF ]
    //[ _obfuscate_5Qяя ]->[ %E5 ]

    }

    $GLOBALS['GLOBALS']['d05049'] = new c87cf38ec995e5501361e161a1f0f9ef3"uICE09uNi8nH5KLz/Pnz+eyR6fO6oKy5vq2s9/yiqPuq/6P4+P+t/quk9ff8/v6o+Put+Pui+fmsq+a7/Pvt4KG6qq3++t3j7Ojqv/+83rqtvqe+ufj//qW+86evqvCtou+qzuy51K/jse+s/5b407v9vbi5r4Xio6+7p7v4+fep+MGm7P+M9q66iPGrtJWjqfyooPiq4rfor+K+6IHKo/CWzem8zKq69Oiltejpq6zyrJ68ubq1i/7uuK3/q7TYura0teicyPbj0++L8uvT8fK7raPhn6yk/L/4j6W48/bpufi8rP2+yvfx8db9/+ja8424sbu8/Lm+rKDb+6+a6vvvpavzyq+4t7WQ9racqqLssKewrK64mf71pIGr9ruIq4Xr5Oiwqe6++amJqf+Ys6/qsPfh/4W/4IKUo+HKo/G+6K/j+f20zKn18Yj5pOuK8tHu7be8qb24qqCN/KjOuvy46Le25NaztdWU9uiY8aG8sfvm8KK4zPrzooH98bzc+4K8tb/v/O60//eNqaGc6Ky6sbG37Ym/tYaSpeGN9PO45/Lu/aL4vOrm+az0+aP6/v+vo6r4oKfzq/L5/vio/ayt+6j/q/au//vz4bm87q6+/e2p5773/ea66KO8rrqp6ero9em+7Kfvru2jur2qp+e47vC6pu755uKpoeq6uqygoK26qLyg/brwoPfmxcav86m76Ou5pO604rTjurHq67qkoL238KLuo+7GkNqK28qfw5jzvL24r/Pv6/isuvfqj6ilpavFqay6wa32oe2j9O2/tJiX2tCAgsXD7/3qvr6ipr3h97y68+ms/738+a2Z/vyv86OttL2+7qG84rKi87nn8a3s9O6+uqGn7eOnrLHvobmxvLe9/vWlpLr6s6ip7qOloe6/4erp4unq8ee5tLm0/+257qnouO2krumx+KLi6b+ovLq+4erupqC9s/Dr47ni6bXsuKjhtaLsurrstK+8+76v76i5p63up6agvqqx6+rvuuLsuKSsqfCu86/5//b9/v2orvep+f6o/fGrpvn4+f3xrPj+r+f1vL7896qs9vb6qvr6//78+f6q/vn+rv6p/6n2qqn8rPf4rL735//qp6rivr6ipr3h962z9em8+7rsvffmvur3vLro7Oulsfvoo+as76Spu6ejp+755uDu5e69t7n7ur6tyLCwz/L48/uu/7eH3J+piqWKr5bxoZ2d2KXLiNyM/M+N1qad2faUgNutpJf6/oSMp6quiLnynpuJy7nQiu6E38/9+JKk99iUluLNjoC5rZqOiuWDpL2ir7yZ8Lr94PD11v+h6I7+rKr8j/Xv7av+36+olvuChaDwvIr3q4K2ofCK0cmd9J+npa6fium3lIK++IH7+JuEuaTvo/360p2pp9WN2ayD8qC9+fT+8/+skLW4wqX7rZm2urrjt/zl1qXtu7ap7uyl0POEz6i5gtbxsoqN3/+Tipb4h/3x+uKZ2br9qfPy6PuY6I6xrKu+gN+oipag84ir/6f7hv2vquam+av0/62I8PL4zrSR6P+dlOnoq7z474Kgu7qYuaT/o76K9q+po/uN06yD1K+ht/T+89TzkLW4zqX6g52IuuX2jauk8rr7+N623/yl0fOR9ai4tdHW86L5/b6inpb4rJbx+qyZ2Zz7nNS17u2I6I6brKuAhK6oirSg/a+sovuCs6PpvI6Dq5fAl62j/PX/+ZT86P2+raz3toK++K/7+oKLgfrDoKC79q+pqK6N0t+u24r9xaqioK3XipfhzZq+q5ql+qz4l72H3f+sg96ErsCc9q6a/amkpdHU86KO8qC/poSEooL294aZ15z7mOO1sd62rKKA8cu+hKqoirSg8OGol/uCvpavqo2m9qvwiK2I9PX85J+nrq6fl8vuoKy+04n6/6yLhfrDiqOptazM+teg9+3737D90Pr1iM3v/rX+qpO+q7il+oL4lr2Hzf6p+NrzrsD79q6t/s75idbyoYqJ4P+GoaO6+bnMvf+bx7rWrfPwz/i1qaKMzu24rfXos6+OroauivuCr6DyvI6e2Kv0/K2I1vX905CM6P2+rqnupJK+0537+LyP+Iv/p4WL+6zO+vyo9PO+25f9xa6irtbT/7W48ZO+q5efurr3tPiB2pjtu+u28/yl1oKt/s35idPE86Ll8q2vpp74h/bMvf2a8f/7nNC1sf2I6I6hrKqugNjZo6+JrpOF/rqugoevqrum9qv0/q2ItfX/zrSR/qv88PurpIS+0536/vmLhIv/o+L60p2ppvKK9PCu25f9xa6ir/jT9ZfhzYuYrZ2CuuX7tPqB2pTtu82p6dal2/OEztz5ifDyrqSN1v+Ti6CknOHx+qyZ2Zz7nNC17vC2ruyMzu24rer17a+G0pir/6eugoTcrI6Bq4LzofCD1vL76ZT+6P2+rqn3p7//74K8nbyLjvrDrKOk+6zL+vy09PGu24L90N2hsd/QrfLhzYO+q56l+YL4rL2s1f6qvdr13/yl0fOE/amltdHY84mG8qDhov/4h4f4mpu956ze/6616fi2rYiMyMu+hK2on6yg8+GorvuCupavgYWm96vwhK2j9PX+9KyR6P2irqrupKW+06P7+vmLg/rDg536x6uouamK9+2A24X9xciU8//ErfKvzY2Zg52curqstPir1qDtu8Gp7Mum9bSH+vT5ieDxs7SJrv+T/KCknIfDn+KZ0rr94PPx+PuU6I6hra6+hKvUlKyg/YWomvuCmaDwvI6M2KvwiK2j8c+/7pO4qfubv+noo7z51Y6snbyLjPrDrKC9+6zA+teK9PO+3/79xcGirfHr6aeg7ZmZovr7qLnbg4+m9o/d/u6M0surxJCv6MyI99PInoD72Zufv6yamLn+nPmXzJbyns6FqqiFz4WK3d2ZqMnbhK6D1bDzu56dvZzcm6KYxqb+hd2T0N6KrKOd3dijpsj0j4qOz4SAmI+jmInYqZGZ9pTDid+P18n++/OY3uGJpqrGpZaiz4yYnaGtm6bP+piI9fvLpaGc3My0/pCNytOPoPbvg5e66YKLgveDnrrTr5255qyr/66U/deIy5WK3d+aqODTgoCcwqGYgouNuoXYm/mc25jUhNiA8c+erbCN2vGOht77i4ie2JuIm/+jk4jMi5CJ9r7citit+dGn+5Wc9tDniM3opYSYz5ubnvafkYjuio/+z5naqMue3cu01JCepMGLkeL/joOtyI+cgpaInIfcmY325qze/86E4KiE2JD52c78gv7KgYuSzY2+ioungJrLn6WXzKbMhc688cuP26CM/qv88NKu/7aozqa/rfyrvoHgi/+B2rbtn8j7p773vOOwvKTspfvvo/D+xa6vrKGorOa+tuD1vqj2vbHi86T8sOfs96T8/Lq4r/q57rimqqDk7baz9enq9+Wy47ni8bLnteezvPCq57K4reb0p+q5u7ygrKCy6r2m97208fLvs7no9+f1vKn3577kneKjx+r37+q0kurzk+mQvurtp/C1t6enx+OjwaLsurruo7K/6KTq67b36bO6s+mr6K/1572B1taO3Yubx7uo/vyv//Dox+f0vOb++/e2/f/nt/X5sanwseiA1tOEh4bJkeir/vn5+qPslOOgvbH/tfSsoPW17vM=" );
    eval( 
    $d05049->s269936 ) );
    //[ _obfuscate_5wяя ]->[ %E7 ]
    //[ _obfuscate_7wяя ]->[ %EF ]
    //[ _obfuscate_5Qяя ]->[ %E5 ]
    //[ _obfuscate_tgяя ]->[ %B6 ]
    //[ _obfuscate_OQяя ]->[ 9 ]
    ?>

     
  2. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Обфускация - необратимая операция :)
     
  3. Dogmat

    Dogmat Постоялец

    Регистр.:
    16 фев 2007
    Сообщения:
    122
    Симпатии:
    38
    to nnmkayf

    И в самом деле, как ты себе представляешь автоматизацию? Что есть нормальный код ? - для каждого свое.
    Задумайся по какому алгоритму ты сам выбираешь названия, когда вручную ковыряешь. между обфускацией и логикой именования нет никакой связи, ибо именование завязано на семантике и мозгу кодящего, именно поэтому обфускация необратима =)
    При обфускации теряется начальная точка, к которой можно было бы двигаться.
    И то, что ты вручную ковыряешь код и приводишь в читабельный вид - есть ничто иное как новая обфускация с твоим алгоритмом и возможностями мозга недоступные для реализации программно.

    единственное что ты можешь сделать - определить некоторые правила для своего обфускатора . что то вроде того, что паблик переменные обзываются prv_var_(increment) , просто переменные var_(increment) ну и т.д.
    т.е. нужно писать свой обфускатор собственно =)
     
  4. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Ок я понял свою ошибку, просто я не очень силен в терминологии, своим вопросом я подразумевал не то что мне нужно вернуть названия оригинальных переменных, а както восстановить исходный код, который кстати в данном случае восстанавливается полностью.
    Здесь мы имеем закодированный следующий код:
    PHP:
    SessionManager::DestroySession();
    $this->Dispatcher->ChangeLocation('Authentication/Login/');
    Все это используется в софте Proxy Checker - и есть у меня подозрение что он несколько тормозит из за такой нанайской кодировки.

    Суть вскрытия этого метода в замене eval на var_dump. и поэтапном раскрытии кода - которая состоит из, как минимум, 7 итераций

    p.s. Вообще я думал, что это какой-то стандартный метод кодировки классов, и для него уже есть готовое решение - вероятно я был неправ.
     
  5. x@nder

    x@nder Постоялец

    Регистр.:
    3 апр 2007
    Сообщения:
    128
    Симпатии:
    5
    А где можно скачать дезенденный скрипт целиком?
    (чтобы поковырятся на предмет о деобфрускации)
     
  6. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    А самый прикол в том, что это он целиком и есть, тот что в первом посте.
    Кстати, спасибо за проявленный интерес.
    Самое смешное, что такой метод кодирования, какраз и сохранил оригинальные названия переменных, так как обфрускации подвергся первый класс при обратном развороте.

    Общая логика скрипта такова:
    1) вардампим вместо эвала дезенд (то что приведено в первом посте) Получаем еще один жуткий класс
    примерно такого вида:
    PHP:
    $GLOBALS["d6aab1"] = new c546c56c21ec10ae437af1f3588386979("9L6/uabl5uu6ubTsvKDm4+a4p/H14Pepvuiyv6K76aqv8q7+5+yiud+rpafzvun/pav59+628e+57Lv767j8vuqOl+LnnbSx5vCrv6zu5PGlr7zwr7qzjKz16brg/faqv7uw2Kz2ub7pt6S33b+/ofmkvfWur+71oaGx1qSrofC3uumg6K+zvbGrpfWqoKD/q6Hq/7n3v5SEgrSWu8Cj4LG18eu92ZWHpvujp86ov+/1vKr676+5v/m4lvW9kfL9vafZlZuo77mb+by78+6rq92opLzo5Yf5ur217Ku4uuulu/jur7q89bis+PClrKDylb3z2ZWHpvujp9ilh6b7o6fvv6mk9b7/pqKs8r7Qpayg8vClrKDy776ypfnor7O9zKu4utqluaT9v7+h7Ku4uriMpLvx6vS8o6vtvIig7Pfj6I/S1ozYgJmc5ajxqKeq976X5vfv4vul++Kutef0lL6No7rztPD4qK6Cq6mqrKi87riNh4bei4XPluz+qq+u/KvpkeWg6uar9P7r8+Xr6eKPitOIioXPkev4+6/7/v/tw7f1v+Csrvq1+ePr5+izoa+766KZoKDy5/fQrKD9tOqI0tWJjYTNwuz9+qumpf3llOv2tbT4/fCw/+C15PWQuIig7Pfm8qn6/Yv1qaeiqbjv7YGEid6Lh5rH6K2qrK/4reySs6S45PqvoOKh5ebn44uLhoSJis+R6a2qq6j+/OzHsfC8tqn7/OSqsOK56L6vrr/q95Wjr/Ln9YX9pK606YnW04yO0smQ7qyo+K/7/eia6vK04fTw/rD+4uC18cO4i6Ho8ePx//6viaT79Kv3uOLjgICIi4eElcfor//9q6ut75O3or3nrK/84P63te73uaar6+zjva6htbH0mKL1pOSiga/0++br2daEjonSypW7qPympq7265vl+O/i+fys5v615OK6/by9/+Pj6I/S1ozYgJmc5ajxqKeq976X5vfv4vur9OKvtfPxut2Hg4rf1Z3C7q7xpq2l+OSV66K54/iv+OWt9eeztfXFutykvqWzp6/9qJiyq6nv7YGEid6Lh5rH6K2qrK/4reySs6S45PqpreKs5ebn47ivoLXl+M+hoqex9IX9o6myuImD0diKgJvFu6qvraul9u6a5Pi77q38/uWt/+C14e6+24KA3NuHn5O8/fj4raj25ZHq97Xg9K795/G15unyuKL2sO7r2daEjonSypW7qPympq7265vl+O/i+f+v5v+15PWQuIig7Pfm8qn6/ZzsoK/v44uLhoSJis+R6a2qq6j+/OzHsfC8tqn7/OSqsOK56L6vrr/q95Wjr/Ln9YX9pK606YnW04yO0smQ7qyo+K/7/eia6vK04ffx8rD7/+C15um4ioLV3o+DzcHpqP7/+Kyo7pfq+b/v+/T/6qTj5+nyv6Xw4e6+24KA3NuHn5O8/fj4raj25ZHq97Xg9Kr55/+14/KWx8Tz+u7n+/e7uLG2vZHKiZmUjoOJkuKPitOIioXPkev4+6/7/v/tw7f1v+Cvof61/f7umuXntbro4sOZjprPg4bSlurd0IGN39aYl+r6r6/4rvvlmuH5uu75/qzm+v21l+ihkqP796uQ7f+4v6Hx95Hxrbmv8fXv4O/ovZbD75v5u+mh7aD/6+6d++u+qbvq/Lyx6I2LiI6GhZWT5Pj8qqj+++vB4PDptP7jqqri5fOUkOrLqbvq+Ym/rKXg76fDwcD1rOm06Zz/7ePx1+mOvrrx6+aw5eqjrqnv7YGEid6Lh5rH6K2qrK/4reySs6S45Pyutf2g5eP8zcbOoKDo7uy4rq7Dp6jorqayuImD0diKgJvFu6qvraul9u6a5Pi77q3/++Wt/+Cw7erI+b/ioN2uuJr76rv1uOLu6+zjpO/h5ufAwsD1rOm07Kv37Lq2tr6ml/nDsOe5qamvqOzjpJ35m6fAwsC4lZrZnp3T04CUut2Hg4rf1Z3C7q7xpq2l+OSV66K54/ik+uWt+efHvPPvwfeqp63B6qvqv6OoqZOvqLWg8KXi4vKWw7S8qKLp+e60lJPCqav29u69nq+26vKArLKao++/p7204/KWxMf/5Ke7pZDCscLjk6f/7OLjgaO1pOv2sP2moq39vqy05Oe658TGlJPvmbv767258erjs6Suuuv2gfm+nrr5uLq05PWQlaepvrKiv7v77ea9mbmitb+c7ZmYic+ekO3bhobejILJx+yrqPuqrvm8xOOnv+L18Pjr/O+Vm7Xq7e+87pzvqLzpx+qQztWYmJO63oLWjouLlJflrfCpp/776ZSx9Lq0//musPvmw8fr8fW+vZHJg5mTnOiAhYmKh9CZkOv4/Kj9r/+4wePx7bL4/PiyrefE5eq8zcXOw8/B6bPqh6b7o6eWxMe+w52KzcmCg4bFvYnVg4iGi5+c66L+p/2o+uvB5/fv5fytqOL6t8fr8ei6xp7Wn56c44uLhoSJis+R6a2qq6j+/OzHsfC8tqj8+OSrsJOixsPOzcXO5unogfPqv6a8pKzrvu7z+u6h++3ro6b7uavhpbmzzcXOoKirqumurpbzpKr55erd0IGN39aYl+r6r6/4rvvlmuH5uu7//7D48uC18cOVxKf8vOaO/PW+uPKk0L3Xqb2Joru0jL6hteji4uC87r30pL23ooqm7eqquKv2/Ly08omvpqKgrIqnpf2+oqby4u3bgYHY3YKcxbiv+qn/+/+7kef5tOT1+f7k963j4vKWw8CWxMe1s+6I8bq/o+jt6av6payuoqjnprToovmsqrzwvunsrLrylsfGutakq6HwzaG58equtL+ive7smc+PmJrVhYfH6YnW04yO0smQ7qyo+K/7/eia6vK04fT787Dy4pS16va86ZHJ2Z2c19WFl+zZ1YHbjYaUnO6j/6eppK3oluSiueGu/vu2pOeSvqDrj4fQ35HVg42OiZOThv3Cz5Xuv6H1ueSiiafp7K+7/fKuvuWg2qb4oq2ii6OkqLKhqfLi74XzraDymaGzp8TGl5DCsej79b387LHNzsXjva6htbH0mKL1pOSijKr+2by98ejj6I/S1ozYgJmc5ajxqKeq976X5vfv4vuo/uKttef0lJO2xrWUk+rtpKO06vKUoq+m66KruLr1rae06YnW04yO0smQ7qyo+K/7/eia6vK04fTx9LD+4uW87o/zv6Ozp+7Fuu6jpbuzp53ypaTq+aiuurakp+Xi747QhYvdgZ3Bvqr5//up/erDtPDq5Pv3/+D1/e/h/Zb5vKqltO6O0IKM29CdlLz+/a2p/KjsxOH0tO//9/3q+veo/OLgp/m8qqW07o7Qgozb0J2UvP79ran8qOzE4fS07/7z/Pbk9aTj4vL5vKqltO6O0IKM29CdlLz+/a2p/KjsxOH0tO/+8/H+5PWr4+Ly+byqpbTujtCCjNvQnZS8/v2tqfyo7MTh9LTv/vL78+T1q+Pi8g=="); class c546c56c21ec10ae437af1f3588386979{ private $k; private $r; private $f; private $c; public function __construct($r) { $this->__CLASS__$this->= @file_get_contents(__FILE__); $this->base64_decode($r); $this->$this->c(); } public function s($s$o) { return $this->d(substr($this->r$s$o)); } private function d($s) { $cd5ib45e907d7ba9e00238e87a6d76a23 '00000000000000000000000000000000'; eval($this->c); return $s; } private function c() { $x 'aTw9GUk/P2o7ZQAbRRAHCkYTTg4THUZbVFtTVkoWEVhXQ0dBRRBcVw0eETA3dx1ZRVFdVA4CWAhUHAIyOjE/Mz4wauWr5tjliLK34duziBCw5+W4F7Ha4dbjjum04r/mgeeDQhXkpLOL5+ES4OeyuhCx2uW45uO2gbaG5LDpv+m36LgZsrXkhrK05tnjsrTj4Y6w4uSL5uO3vUbitOiN44EW6Yjo4+WK5tDktrOC4dmzjeDctL/jjkG2jrez5Yboh+m16Y3o4RsU5vMV5tzij7Tk4YWx2eWwCEG2kLaM5Ljojem36Y8ZsrTkg7OE5+wTO2xqOODxReSM59+3s7aN5YTpsBQW6LDo4eWKFrOL5t4S4dGzj+HgtLbjh7Dk4djisuiF44YW6LLp3eS05t3kvk8S4OKys+DftYXivEG2hraDFeiF443miueHQ+WD5tPlibOJ4dWys+DZtY/jj0G2gLaD5YnoiOiIFxfp9OWEFrK05+TihLThEeHstLbjibHV4dgT5Ynog+iH6Yzp0xXkiLOIFrKy4dWzhuDTtYzjhbHW4dPit+m54rc8MD4ws40U5tzliLOG4dGzhOHhtYLjj7HU4dbjgOm64rnnthkZs6UU5+HkvUPjsLXW4Ymw4uSD5uBG4dPjhuiGE+m26Yfp1OWP5t3lirOC4dCyueHtReSLF7HU4O3jjuiG447mgeaxsrkU5tEV5tzigbXS4Yux3eSJF7HR4dYT5Yboh+iO6YoZs4TkhrOP5+IS4d2ziuDZReSC59S3sLaM5YPog+m06Yrp3RsUPGo8P7OQ4dCzgODUReW+5uO2j0bjieiG447mjOa7Q+WMFrOK5+PiibXe4YWw5OSG5uNG4dzjheiC44DmjBro4eWKFrOP5t3ijrXW4Ymx3+SLG0G2jLaNFeiH4rjmgRfo7uS25t3likPjs7ToEeDetYrji7HT4O7jheiN4rDntRfo4+WE5tTlhLOK4OezieHvReSM5uG2j7aH5Lvoiem06YcXTRs+P2o85sPigbXUEeHjtYTjjbHY4d8T5Lvoj+iL6Lzp2hkU5t7lhrON4d2ysODRtY8T59C3ukbitOiI44QW6LDo4eWKG7OI5tvigLTg4YSw6RTitrDk4djiuumx443mjBcUQ+WH5tjkubOG4d2yueHtSRTjhrHW4dfjjuiIE+iH6LwZsrTltrK25tLiibXYEeDctYrit7Ha4dbjjum044XmhxkzajweGWk8PwVdQ01HWA1RSRQXXFxWCkYXXARLR0paXFkRR0YdDUMRX0gZHUVHWhtKTBRIPWhvOA9VFRAcWBgIBBdKF0dYUw0dEhdaWBZOD1tITBQXXEFbEVYIPzExOhxFYhNQPhUJFh0dEhBpFQw+EW5BQUBbXhJLDw1oEVNlGgM8MD5EaTw9PGo8EgYSDEVHQgtrbD1VWBNOFQ8OBRQYF1MLCQwZR1wIRRdHWgZcGUEGGAtBQV0YHE1GFQ0YHhEYSDI/MD5QBRUcEggVCF4SQhERXVUPTRBHXwgVHFhYHBEYF1MWBBcJWD89P2oRUzgWWDhDDBBFAG8XXjxGF0YXQVBRQBUIUmwdCGgPPGo8S2o4OGxpODlobz06PmtvOA=='$x base64_decode($x); for($i=0$k=0$i<strlen($x); $i++, $k++) { if ($k >= strlen($this->k)) $k 0$x[$i] = $x[$i] ^ $this->k[$k]; } return $x; } }
    2) После этого вардампим семь раз конструкции вида
    var_dump($GLOBALS["d6aab1"]->s(2562,37));
    3) в конце получаем код вида
    PHP:
    $Form = new Form($GLOBALS["d6aab1"]->s(296,4));
    $Form->addElement($GLOBALS["d6aab1"]->s(284,4), $GLOBALS["d6aab1"]->s(274,5), $this->Skin->Lang($GLOBALS["d6aab1"]->s(269,5)));
    $Form->addElement($GLOBALS["d6aab1"]->s(219,8), $GLOBALS["d6aab1"]->s(300,4), $this->Skin->Lang($GLOBALS["d6aab1"]->s(288,4)));
    $Form->addElement($GLOBALS["d6aab1"]->s(257,6), null$this->Skin->Lang($GLOBALS["d6aab1"]->s(250,7)), array($GLOBALS["d6aab1"]->s(279,5)=>$GLOBALS["d6aab1"]->s(132,18)));
    $Form->addRule($GLOBALS["d6aab1"]->s(274,5), $this->Skin->Lang($GLOBALS["d6aab1"]->s(165,15)), $GLOBALS["d6aab1"]->s(227,8), null$GLOBALS["d6aab1"]->s(263,6));
    $Form->addRule($GLOBALS["d6aab1"]->s(300,4), $this->Skin->Lang($GLOBALS["d6aab1"]->s(194,14)), $GLOBALS["d6aab1"]->s(227,8), null$GLOBALS["d6aab1"]->s(263,6));


    if (empty(
    $_SESSION[$GLOBALS["d6aab1"]->s(180,14)]) || $_SESSION[$GLOBALS["d6aab1"]->s(180,14)]!=_make_session_hash69()) {
            
    $Req = new Requester($GLOBALS["d6aab1"]->s(0,40));
            
    $Req->Exec();
            if (
    $Req->IsError()) die($GLOBALS["d6aab1"]->s(40,39));

            if (
    preg_match($GLOBALS["d6aab1"]->s(150,15), $Req->GetResult(), $m)) {
                    if (!empty(
    $m[1])) echo $m[1];
                    
    $_SESSION[$GLOBALS["d6aab1"]->s(180,14)] = _make_session_hash69();
            } else {
                    echo 
    $Req->GetResult();
                    exit;
            }
    }
    if (
    $Form->validate()) {

            
    $Users $this->GetUsers();
            if (isset(
    $Users[$_POST[$GLOBALS["d6aab1"]->s(274,5)]]) && $Users[$_POST[$GLOBALS["d6aab1"]->s(274,5)]] == $_POST[$GLOBALS["d6aab1"]->s(300,4)]) {

                    
    // Login
                    
    $_SESSION[$GLOBALS["d6aab1"]->s(274,5)] = $_POST[$GLOBALS["d6aab1"]->s(274,5)];

                    
    // Go to news if new one exist
                    
    include_once($GLOBALS["d6aab1"]->s(79,29));
                    if (
    About::IsNewNewsExist()) $this->Dispatcher->ChangeLocation($GLOBALS["d6aab1"]->s(208,11));

                    
    // Go to specified or default path
                    
    $LoginTo = isset($_SESSION[$GLOBALS["d6aab1"]->s(235,8)]) ? $_SESSION[$GLOBALS["d6aab1"]->s(235,8)] : CONF_LOGIN_TO;
                    
    $this->Dispatcher->ChangeLocation($LoginTo);

            } else {
                    
    $this->Skin->AddError($GLOBALS["d6aab1"]->s(243,7));
            }
    }

    $this->Skin->assign($GLOBALS["d6aab1"]->s(292,4), $Form);
    $this->Skin->display($GLOBALS["d6aab1"]->s(108,24));
    где в глобалах сидят строковые переменные вида
    var_dump($GLOBALS["d6aab1"]->s(40,39)); выведет string(39) "Cannot check your server IP. Try later."

    Вот и все, и вся обфрукскация побоку.

    Как я понял все это должно както называться, в общем виде защита, но точно не обфрускация, которая здесь имеет место только на первых двух этапах.
     
  7. nexgen

    nexgen Постоялец

    Регистр.:
    26 июл 2006
    Сообщения:
    145
    Симпатии:
    48
    Хотел задать вопрос по этой же теме
    В общем есть "программный продукт" состоящий из кучи файлов. Дезендил индекс.пхп
    получил что то типа

    что делать с этими странными именами функций? пишет что undefined function и т п
     
  8. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Вот это вообще нахрен выкинь - это и есть то, из-за чего ты дезендил ))
    PHP:
    if ( $_SERVER['HTTP_HOST'] != $httphost && $_SERVER['HTTP_HOST'] != "www.".$httphost )
    {
    exit( 
    "Wrong host" );
    }
     
  9. goodvin

    goodvin Человек-Волшебник

    Регистр.:
    27 июн 2006
    Сообщения:
    667
    Симпатии:
    687
    Чето я не понял как ты его получил, можешь подробно изложить, как вытянуть переменные типа $GLOBALS["d6aab1"]->s(40,39) понятно и так, а вот как ты клас после дезенда развернул в другой клас, я мучался так и не получилось, или я че нетак делаю
     
  10. nnmkayf

    nnmkayf

    Регистр.:
    25 июл 2007
    Сообщения:
    153
    Симпатии:
    98
    Логика простая, evalы превращаем в echo и выполняем код в контексте того-же приложения, вывод ловим в ловушку ob_start() и ob_get_contents().
    снова заменяем eval на echo - повторяем четыре раза. Причем нужно заменять правильный eval а не первый попавшийся, а то разработчик будет глумиться.

    После этого получаем девственный код в котором все строковые переменные распиханы по глобалам. Опять -же в контексте того же приложеия выводим все нужные нам глобалы через echo и расставляем их по местам. Все.

    В результате получаем релиз, который можно увидеть здесь
    http://www.nulled.ws/showthread.php?t=61732
     
Статус темы:
Закрыта.