본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 보안/Web
  3. [MEGAUP] 광고 차단 프로그램 블러킹 분석 및 우회 - Please supporting us by disabling your ad blocker 우회하기

[MEGAUP] 광고 차단 프로그램 블러킹 분석 및 우회 - Please supporting us by disabling your ad blocker 우회하기

· 댓글개 · KRFile

저는 광고 차단기로 가볍고 빠른 Ublock Origin 이라는 크롬 확장 프로그램을 사용하고 있습니다. 제 블로그에서만 끄고요

해외에서 필요한 파일을 구하고 있는데 제가 선호하는 사이트는 1fitcher 또는 MEGAUP 입니다. MEGAUP을 특히 선호하는데 IDM과 같은 다운로드 가속기를 사용하면 구글 드라이브와 거의 동일하거나 이를 상외하는 속도로 받을 수 있으면서 트래픽 제한도 없이 매우 빠르게 파일을 받을 수 있기 때문입니다.

 

근데 어느날부터 광고 차단기를 킨 상태로 파일을 받으러 오면 이런 내용을 띄우면서 다운로드를 막더군요.

사실 사이트에서 광고 차단기를 보면 접속을 차단하는건 매우 일반적인 일입니다. 저희는 컨텐츠를 제공받는 대가로, 작성자에게 광고비를 내는거죠.

 

저 역시 블로그에 광고를 띄우고 있기 때문에 광고 차단기를 싫어하는건 충분히 이해가 됩니다.

그래서 Ublock Origin 을 끄고 받았습니다.

 

엄... 위 아래나 광고가 나올줄 알고 풀었더니 온갖 쓰레기 광고들이 나오면서 컨텐츠를 싸그리 가리고 이상한 링크도 자꾸 팝업되네요. 이래서 해외 사이트에서 광고를 끄기가 참 그렇습니다.

저런 광고들은 문제점이 랜섬웨어에 걸릴 수 있는 잠재적인 문제도 있습니다. 웹 광고에 랜섬웨어를 심어놓는 경우도 있거든요.. 

 

일단 여기서 파일 받는 일이 그렇게 많진 않아서 광고 차단기를 끄고 받으면 받는건데 바이러스가 감염되는거까진 용인하기가 어렵습니다. 그리고 마침 저런 광고 차단기를 차단하는 매커니즘에 대해 궁금증이 생기게 되었습니다.

 

한번 이를 분석해보고 우회하는 방법에 대해 알아보겠습니다.

 

일단 해당 사이트는 별 다른 캡챠나 인증 없이 그냥 5초를 기다리면 다운로드 버튼이 뜨면서 다운로드를 할 수 있는 방식입니다.

 

5초 이후 광고 차단기가 설치되어 있다면 위와 같은 이미지를 뿌려서 링크를 보여주지 않고, 광고 차단기가 없다면 다운로드 버튼이 생깁니다.

 

당연하지만 웹에서 프론트엔드(클라이언트, 크롬 웹브라우저) 에서 사용할 수 있는 프로그래밍 언어는 자바스크립트가 전부입니다.. 저 5초 카운팅 하면서 화면을 바꾸는거랑 광고 차단기 역시 전부 자바스크립트로 인식하고 있을 것으로 추정됩니다. 사실 이거 말고 별다른 방법은 없거든요.

 

애초에 서버에서 HTML 요청때부터 광고 차단을 들어가버리면 답이 없지만 애초에 HTML 요청 단에서 사용자가 광고 차단기를 사용하고 있는지 알기는 매우 어려으므로 사용자가 사이트에 들어와서 특정 자바스크립트가 실행되면 5초 카운트 다운 후 광고 차단기 여부를 탐지하고 링크 버튼을 만들어 내는 것으로 보입니다.

 

 

저 광고 차단 이미지를 만들어 낸 자바스크립트를 찾아봅시다.

아마 document.querySelector 같은걸로 선택해서 img 태그를 HTML(DOM)에 렌더링 한 거 같습니다.

 

저기 src 부분이 힌트가 되겠네요. 저 src 로 img 태그를 만드는 자바스크립트를 찾기 위해 "https://megaup.net/themes/flow/frontend_assets/images/adblock/primary.png" 라는 내용을 전체 js 코드에서 검색해보겠습니다.

 

사이트 로딩이 완료된 후 네트워크 탭에서 검색 부분에 검색하면 웹에서 로딩하는 모든 HTML, CSS, JS 컨텐츠에 대해 검색이 가능합니다. "images/adblock/primary.png" 로 검색하니 관련 자바스크립트 코드가 딱 하나 나오네요.

 

하지만 역시나 난독화가 되어 있네요.. 그런데도 검색이 되다니 신기합니다. 저렇게 난독화를 걸어도 컴퓨터가 보기엔 plain text라서 검색이 되는건가..? 어쨌던 간에 쉽게 찾았네요.

 

function DeObfuscate_String_and_Create_Form_With_Mhoa_URL(d1, d2, FileName, FileSize)

그나마 다행인 점은 함수 이름은 난독화가 걸려 있지 않다는 점입니다. 함수 이름을 보니 문자열 난독화를 풀고 URL 생성.. 아마 다운로드 링크 생성에 관한 부분이 아닌가 싶네요..?

 

  function DeObfuscate_String_and_Create_Form_With_Mhoa_URL(d1, d2, FileName, FileSize) {

                            var _0x37e46f = _0x20e9;
                            (function(_0x5084a0, _0x598ee8) {
                                var _0xc39c1d = _0x20e9
                                  , _0x24656a = _0x5084a0();
                                while (!![]) {
                                    try {
                                        var _0x2b3ef0 = -parseInt(_0xc39c1d(0x129)) / 0x1 + parseInt(_0xc39c1d(0x15a)) / 0x2 + -parseInt(_0xc39c1d(0x138)) / 0x3 + parseInt(_0xc39c1d(0x14c)) / 0x4 + parseInt(_0xc39c1d(0x12e)) / 0x5 * (parseInt(_0xc39c1d(0x12a)) / 0x6) + parseInt(_0xc39c1d(0x141)) / 0x7 * (parseInt(_0xc39c1d(0x147)) / 0x8) + -parseInt(_0xc39c1d(0x125)) / 0x9 * (parseInt(_0xc39c1d(0x14d)) / 0xa);
                                        if (_0x2b3ef0 === _0x598ee8)
                                            break;
                                        else
                                            _0x24656a['push'](_0x24656a['shift']());
                                    } catch (_0x3cae40) {
                                        _0x24656a['push'](_0x24656a['shift']());
                                    }
                                }
                            }(_0x3cd1, 0x70e60));
                            function _0x20e9(_0x2ff710, _0x3948d0) {
                                var _0x3cd1c1 = _0x3cd1();
                                return _0x20e9 = function(_0x20e951, _0x57e3d0) {
                                    _0x20e951 = _0x20e951 - 0x121;
                                    var _0x151c14 = _0x3cd1c1[_0x20e951];
                                    return _0x151c14;
                                }
                                ,
                                _0x20e9(_0x2ff710, _0x3948d0);
                            }
                            var url_da_encrypt = '';
                            for (i = d1[_0x37e46f(0x127)] / 0x4 - 0x1; i >= 0x0; i--) {
                                url_da_encrypt += d1[i];
                            }
                            for (i = d1[_0x37e46f(0x127)] / 0x4 * 0x3 - 0x1; i >= d1[_0x37e46f(0x127)] / 0x4 * 0x2; i--) {
                                url_da_encrypt += d1[i];
                            }
                            for (i = (d2[_0x37e46f(0x127)] - 0x3) / 0x2 + 0x2; i >= 0x3; i--) {
                                url_da_encrypt += d2[i];
                            }
                            var width_trinh_duyet = window[_0x37e46f(0x12c)] || document[_0x37e46f(0x14e)][_0x37e46f(0x14b)] || document[_0x37e46f(0x146)][_0x37e46f(0x14b)]
                              , height_trinh_duyet = window[_0x37e46f(0x12b)] || document[_0x37e46f(0x14e)][_0x37e46f(0x121)] || document['body'][_0x37e46f(0x121)];
                            if (width_trinh_duyet > 0x0 && height_trinh_duyet > 0x0) {} else
                                url_da_encrypt += url_da_encrypt[Math[_0x37e46f(0x122)](url_da_encrypt['length'] / 0x3)],
                                url_da_encrypt += url_da_encrypt[Math[_0x37e46f(0x122)](url_da_encrypt[_0x37e46f(0x127)] / 0x2)];
                            if ($(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x14a)) == _0x37e46f(0x150) || $(_0x37e46f(0x159))[_0x37e46f(0x132)]() == 0x0 || $(_0x37e46f(0x13e))['height']() == 0x0 || $(_0x37e46f(0x13e))[_0x37e46f(0x132)]() == 0x20 || $(_0x37e46f(0x13e))[_0x37e46f(0x132)]() == 0x1a || $(_0x37e46f(0x13e))['height']() == 0x64 || $(_0x37e46f(0x13e))[_0x37e46f(0x132)]() == 0x10 || $(_0x37e46f(0x13e))[_0x37e46f(0x127)] == 0x0 || $('.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img')[_0x37e46f(0x139)](_0x37e46f(0x158)) != _0x37e46f(0x150) || $('.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img')[_0x37e46f(0x139)](_0x37e46f(0x133)) != '1' || $('.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img')['prop'](_0x37e46f(0x137)) != _0x37e46f(0x12f) || $(_0x37e46f(0x13d))[_0x37e46f(0x139)]('margin-left') != _0x37e46f(0x149) || $(_0x37e46f(0x13d))[_0x37e46f(0x139)](_0x37e46f(0x124)) != _0x37e46f(0x149) || $('.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img')[_0x37e46f(0x139)](_0x37e46f(0x153)) != _0x37e46f(0x149) || $(_0x37e46f(0x13d))[_0x37e46f(0x139)]('margin-bottom') != _0x37e46f(0x149) || $(_0x37e46f(0x13d))[_0x37e46f(0x139)]('transform') != 'none' || $('.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img')[_0x37e46f(0x139)]('visibility') != 'visible' || $(_0x37e46f(0x13d))['css'](_0x37e46f(0x156)) != _0x37e46f(0x154) || $(_0x37e46f(0x13f))['css'](_0x37e46f(0x156)) != _0x37e46f(0x154) || $(_0x37e46f(0x13f))[_0x37e46f(0x139)](_0x37e46f(0x158)) != _0x37e46f(0x150) || $(_0x37e46f(0x13f))[_0x37e46f(0x139)](_0x37e46f(0x133)) != '1' || $(_0x37e46f(0x13c))[_0x37e46f(0x139)](_0x37e46f(0x133)) != '1' || $(_0x37e46f(0x13c))[_0x37e46f(0x139)]('filter') != 'none' || $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x156)) != _0x37e46f(0x154) || $(_0x37e46f(0x155))['css'](_0x37e46f(0x131)) != _0x37e46f(0x149) || $('.metaRedirectWrapperBottomAds')[_0x37e46f(0x139)]('margin-right') != _0x37e46f(0x149) || $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x158)) != 'none' || $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x133)) != '1' || $(_0x37e46f(0x155))[_0x37e46f(0x139)]('transform') != 'none' || $(_0x37e46f(0x159))['css']('position') != _0x37e46f(0x154) || $(_0x37e46f(0x155))['css']('clip-path') != _0x37e46f(0x150) || $(_0x37e46f(0x13e))[_0x37e46f(0x139)](_0x37e46f(0x126)) != _0x37e46f(0x150) || $(_0x37e46f(0x13c))[_0x37e46f(0x139)](_0x37e46f(0x126)) != _0x37e46f(0x150) || $(_0x37e46f(0x157))[_0x37e46f(0x139)]('clip-path') != _0x37e46f(0x150) || $(_0x37e46f(0x143))['css'](_0x37e46f(0x135)) != _0x37e46f(0x150) || $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x135)) != _0x37e46f(0x150) || $(_0x37e46f(0x143))[_0x37e46f(0x128)](_0x37e46f(0x136)) != _0x37e46f(0x14f) || $(_0x37e46f(0x13f))[_0x37e46f(0x139)](_0x37e46f(0x131)) != _0x37e46f(0x152) || $('.metaRedirectWrapperBottomAds\x20>\x20div')[_0x37e46f(0x139)](_0x37e46f(0x135)) != _0x37e46f(0x150) || $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x134)) != _0x37e46f(0x149) || $('.metaRedirectWrapperBottomAds\x20a')['css'](_0x37e46f(0x134)) != _0x37e46f(0x149) || $(_0x37e46f(0x13c))[_0x37e46f(0x139)](_0x37e46f(0x134)) != '0px' || $('.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20.imgAds')[_0x37e46f(0x139)](_0x37e46f(0x153)) != '3px' || $(_0x37e46f(0x13c))['css'](_0x37e46f(0x142)) != _0x37e46f(0x130)) {
                                $(_0x37e46f(0x12d))['html'](_0x37e46f(0x148));
                                return;
                            }
                            function _0x3cd1() {
                                var _0x2d4783 = ['opacity', 'padding-left', '-webkit-mask-image', 'href', 'naturalWidth', '2635314xiBPmC', 'css', 'getElementById', 'html', '.metaRedirectWrapperBottomAds\x20>\x20div', '.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img', '.imgAds', '.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a', '<form\x20action=\x27https://download.megaup.net/\x27\x20method=\x27get\x27\x20style=\x27text-align:\x20center;\x27><input\x20id=\x27idurl\x27\x20type=\x27hidden\x27\x20name=\x27idurl\x27><input\x20id=\x27idfilename\x27\x20type=\x27hidden\x27\x20name=\x27idfilename\x27><input\x20id=\x27idfilesize\x27\x20type=\x27hidden\x27\x20name=\x27idfilesize\x27><input\x20id=\x27btnsubmit\x27\x20type=\x27submit\x27\x20class=\x27btn\x20btn-default\x27\x20value=\x27Create\x20Download\x20Link\x27></form>', '2311834YRTTdx', 'gap', '.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20.imgAds', 'idfilesize', 'setAttribute', 'body', '16SKwOWG', '<img\x20src=\x27https://megaup.net/themes/flow/frontend_assets/images/adblock/primary.png\x27>', '0px', 'display', 'clientWidth', '459764zavoez', '2930wmrrjw', 'documentElement', 'https://tm-offers.gamingadult.com/?offer=299&uid=f1e13f9c-9c99-4f78-9e16-a8f754fdaa0d', 'none', 'value', '3px', 'margin-top', 'static', '.metaRedirectWrapperBottomAds', 'position', '.metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20.imgAds\x20>\x20img', 'filter', '#M9319823', '448234oCsgrL', 'clientHeight', 'round', 'idfilename', 'margin-right', '11601yhVKtQ', 'clip-path', 'length', 'attr', '69781BnQbCb', '6rpWMOG', 'innerHeight', 'innerWidth', '.download-timer', '3943730arOMOz', '300', 'normal', 'margin-left', 'height'];
                                _0x3cd1 = function() {
                                    return _0x2d4783;
                                }
                                ;
                                return _0x3cd1();
                            }
                            $('.download-timer')[_0x37e46f(0x13b)](_0x37e46f(0x140)),
                            document['getElementById']('idurl')[_0x37e46f(0x145)](_0x37e46f(0x151), url_da_encrypt),
                            document[_0x37e46f(0x13a)](_0x37e46f(0x123))[_0x37e46f(0x145)](_0x37e46f(0x151), FileName),
                            document[_0x37e46f(0x13a)](_0x37e46f(0x144))[_0x37e46f(0x145)](_0x37e46f(0x151), FileSize);

                        }

script 태그로 묶인 전체 코드는 다음과 같습니다. $ 가 발견되며 Jquery 를 사용하고 있다는 점도 알 수 있습니다.

하지만 이 상태로는 코드를 읽는게 매우 어렵습니다.

보통 난독화가 진짜 빡세게 걸려있으면 시중에 나와있는 난독화 해제 도구 몇개를 써봐서 안되면 보통 포기하는데.. 이번에 운 좋게 난독화를 풀 수 있었습니다.

 

https://deobfuscate.relative.im/

 

JavaScript Deobfuscator

synchrony ver. 2.2.0 A simple deobfuscator for mangled or obfuscated JavaScript files view on GitHub Deobfuscate Save output if there are any errors, open developer tools > console to see them in a better view

deobfuscate.relative.im

이 사이트에서 해당 코드를 넣어보니 난독화를 아주 깔끔하게 풀어주더라구요!

아마 MEGAUP에서 JS 난독화 시 사용한 프로그램이 아주 범용적인 도구인가 봅니다.

 

 

function DeObfuscate_String_and_Create_Form_With_Mhoa_URL(
  d1,
  d2,
  FileName,
  FileSize
) {
  var url_da_encrypt = ''
  for (i = d1.length / 4 - 1; i >= 0; i--) {
    url_da_encrypt += d1[i]
  }
  for (i = (d1.length / 4) * 3 - 1; i >= (d1.length / 4) * 2; i--) {
    url_da_encrypt += d1[i]
  }
  for (i = (d2.length - 3) / 2 + 2; i >= 3; i--) {
    url_da_encrypt += d2[i]
  }
  var width_trinh_duyet =
      window.innerWidth ||
      document.documentElement.clientWidth ||
      document.body.clientWidth,
    height_trinh_duyet =
      window.innerHeight ||
      document.documentElement.clientHeight ||
      document.body.clientHeight
  if (width_trinh_duyet > 0 && height_trinh_duyet > 0) {
  } else {
    url_da_encrypt += url_da_encrypt[Math.round(url_da_encrypt.length / 3)]
    url_da_encrypt += url_da_encrypt[Math.round(url_da_encrypt.length / 2)]
  }
  if (
    $('.metaRedirectWrapperBottomAds').css('display') == 'none' ||
    $('#M9319823').height() == 0 ||
    $('.imgAds').height() == 0 ||
    $('.imgAds').height() == 32 ||
    $('.imgAds').height() == 26 ||
    $('.imgAds').height() == 100 ||
    $('.imgAds').height() == 16 ||
    $('.imgAds').length == 0 ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('filter') !=
      'none' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('opacity') != '1' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').prop('naturalWidth') !=
      '300' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('margin-left') !=
      '0px' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('margin-right') !=
      '0px' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('margin-top') !=
      '0px' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('margin-bottom') !=
      '0px' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('transform') !=
      'none' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('visibility') !=
      'visible' ||
    $('.metaRedirectWrapperBottomAds > div > a > img').css('position') !=
      'static' ||
    $('.metaRedirectWrapperBottomAds > div > a').css('position') != 'static' ||
    $('.metaRedirectWrapperBottomAds > div > a').css('filter') != 'none' ||
    $('.metaRedirectWrapperBottomAds > div > a').css('opacity') != '1' ||
    $('.metaRedirectWrapperBottomAds > div').css('opacity') != '1' ||
    $('.metaRedirectWrapperBottomAds > div').css('filter') != 'none' ||
    $('.metaRedirectWrapperBottomAds').css('position') != 'static' ||
    $('.metaRedirectWrapperBottomAds').css('margin-left') != '0px' ||
    $('.metaRedirectWrapperBottomAds').css('margin-right') != '0px' ||
    $('.metaRedirectWrapperBottomAds').css('filter') != 'none' ||
    $('.metaRedirectWrapperBottomAds').css('opacity') != '1' ||
    $('.metaRedirectWrapperBottomAds').css('transform') != 'none' ||
    $('#M9319823').css('position') != 'static' ||
    $('.metaRedirectWrapperBottomAds').css('clip-path') != 'none' ||
    $('.imgAds').css('clip-path') != 'none' ||
    $('.metaRedirectWrapperBottomAds > div').css('clip-path') != 'none' ||
    $('.metaRedirectWrapperBottomAds > div > .imgAds > img').css('clip-path') !=
      'none' ||
    $('.metaRedirectWrapperBottomAds > div > .imgAds').css(
      '-webkit-mask-image'
    ) != 'none' ||
    $('.metaRedirectWrapperBottomAds').css('-webkit-mask-image') != 'none' ||
    $('.metaRedirectWrapperBottomAds > div > .imgAds').attr('href') !=
      'https://tm-offers.gamingadult.com/?offer=299&uid=f1e13f9c-9c99-4f78-9e16-a8f754fdaa0d' ||
    $('.metaRedirectWrapperBottomAds > div > a').css('margin-left') != '3px' ||
    $('.metaRedirectWrapperBottomAds > div').css('-webkit-mask-image') !=
      'none' ||
    $('.metaRedirectWrapperBottomAds').css('padding-left') != '0px' ||
    $('.metaRedirectWrapperBottomAds a').css('padding-left') != '0px' ||
    $('.metaRedirectWrapperBottomAds > div').css('padding-left') != '0px' ||
    $('.metaRedirectWrapperBottomAds > div > .imgAds').css('margin-top') !=
      '3px' ||
    $('.metaRedirectWrapperBottomAds > div').css('gap') != 'normal'
  ) {
    $('.download-timer').html(
      "<img src='https://megaup.net/themes/flow/frontend_assets/images/adblock/primary.png'>"
    )
    return
  }
  $('.download-timer').html(
    "<form action='https://download.megaup.net/' method='get' style='text-align: center;'><input id='idurl' type='hidden' name='idurl'><input id='idfilename' type='hidden' name='idfilename'><input id='idfilesize' type='hidden' name='idfilesize'><input id='btnsubmit' type='submit' class='btn btn-default' value='Create Download Link'></form>"
  )
  document.getElementById('idurl').setAttribute('value', url_da_encrypt)
  document.getElementById('idfilename').setAttribute('value', FileName)
  document.getElementById('idfilesize').setAttribute('value', FileSize)
}

왜 툴키디가 되는지 알겠네요.. 정말 깔끔하게 난독화가 풀렸습니다. 대부분 실패했는데 여기선 성공했네요

 

https://github.com/relative/synchrony

 

GitHub - relative/synchrony: javascript-obfuscator cleaner & deobfuscator

javascript-obfuscator cleaner & deobfuscator. Contribute to relative/synchrony development by creating an account on GitHub.

github.com

해당 JS 난독화 해제 프로젝트.. 바로 Star 박았습니다

 

 if (
    $(".metaRedirectWrapperBottomAds").css("display") == "none" ||
    $("#M9319823").height() == 0 ||
    $(".imgAds").height() == 0 ||
    $(".imgAds").height() == 32 ||
    $(".imgAds").height() == 26 ||
    $(".imgAds").height() == 100 ||
    $(".imgAds").height() == 16 ||
    $(".imgAds").length == 0 ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("filter") !=
      "none" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("opacity") != "1" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").prop("naturalWidth") !=
      "300" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("margin-left") !=
      "0px" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("margin-right") !=
      "0px" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("margin-top") !=
      "0px" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("margin-bottom") !=
      "0px" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("transform") !=
      "none" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("visibility") !=
      "visible" ||
    $(".metaRedirectWrapperBottomAds > div > a > img").css("position") !=
      "static" ||
    $(".metaRedirectWrapperBottomAds > div > a").css("position") != "static" ||
    $(".metaRedirectWrapperBottomAds > div > a").css("filter") != "none" ||
    $(".metaRedirectWrapperBottomAds > div > a").css("opacity") != "1" ||
    $(".metaRedirectWrapperBottomAds > div").css("opacity") != "1" ||
    $(".metaRedirectWrapperBottomAds > div").css("filter") != "none" ||
    $(".metaRedirectWrapperBottomAds").css("position") != "static" ||
    $(".metaRedirectWrapperBottomAds").css("margin-left") != "0px" ||
    $(".metaRedirectWrapperBottomAds").css("margin-right") != "0px" ||
    $(".metaRedirectWrapperBottomAds").css("filter") != "none" ||
    $(".metaRedirectWrapperBottomAds").css("opacity") != "1" ||
    $(".metaRedirectWrapperBottomAds").css("transform") != "none" ||
    $("#M9319823").css("position") != "static" ||
    $(".metaRedirectWrapperBottomAds").css("clip-path") != "none" ||
    $(".imgAds").css("clip-path") != "none" ||
    $(".metaRedirectWrapperBottomAds > div").css("clip-path") != "none" ||
    $(".metaRedirectWrapperBottomAds > div > .imgAds > img").css("clip-path") !=
      "none" ||
    $(".metaRedirectWrapperBottomAds > div > .imgAds").css(
      "-webkit-mask-image"
    ) != "none" ||
    $(".metaRedirectWrapperBottomAds").css("-webkit-mask-image") != "none" ||
    $(".metaRedirectWrapperBottomAds > div > .imgAds").attr("href") !=
      "https://tm-offers.gamingadult.com/?offer=299&uid=f1e13f9c-9c99-4f78-9e16-a8f754fdaa0d" ||
    $(".metaRedirectWrapperBottomAds > div > a").css("margin-left") != "3px" ||
    $(".metaRedirectWrapperBottomAds > div").css("-webkit-mask-image") !=
      "none" ||
    $(".metaRedirectWrapperBottomAds").css("padding-left") != "0px" ||
    $(".metaRedirectWrapperBottomAds a").css("padding-left") != "0px" ||
    $(".metaRedirectWrapperBottomAds > div").css("padding-left") != "0px" ||
    $(".metaRedirectWrapperBottomAds > div > .imgAds").css("margin-top") !=
      "3px" ||
    $(".metaRedirectWrapperBottomAds > div").css("gap") != "normal"
  ) {
    $(".download-timer").html(
      "<img src='https://megaup.net/themes/flow/frontend_assets/images/adblock/primary.png'>"
    );
    return;

코드를 읽어보니 조~~올라게 긴 if 조건 (OR)으로 광고 차단기를 체크한 다음에 (광고 차단기가 차단을 하면 요소들이 사라져서 마진이나 투명도를 읽을 수 없는 특성을 이용한 거 같습니다)

$(".download-timer").html(
      "<img src='https://megaup.net/themes/flow/frontend_assets/images/adblock/primary.png'>"
    );

광고 차단기가 돌아가고 있다는게 판단되면 jquery 로 이렇게 아까 봤던 광고 차단기를 끄라는 이미지를 렌더링하고

 

  $(".download-timer").html(
    "<form action='https://download.megaup.net/' method='get' style='text-align: center;'><input id='idurl' type='hidden' name='idurl'><input id='idfilename' type='hidden' name='idfilename'><input id='idfilesize' type='hidden' name='idfilesize'><input id='btnsubmit' type='submit' class='btn btn-default' value='Create Download Link'></form>"
  );
  document.getElementById("idurl").setAttribute("value", url_da_encrypt);
  document.getElementById("idfilename").setAttribute("value", FileName);
  document.getElementById("idfilesize").setAttribute("value", FileSize);

만약에 아니면 제대로 된 이미지 링크를 생성하고 있네요.

난독화 된 코드랑 비교해보니 진짜 난독화가 얼마나 역겹게 되어있는지 체감이 됩니다..

 

그럼 이걸 어떻게 우회할까요?

사실 크게 어렵지는 않습니다.

 

  $(".download-timer").html(
    "<form action='https://download.megaup.net/' method='get' style='text-align: center;'><input id='idurl' type='hidden' name='idurl'><input id='idfilename' type='hidden' name='idfilename'><input id='idfilesize' type='hidden' name='idfilesize'><input id='btnsubmit' type='submit' class='btn btn-default' value='Create Download Link'></form>"
  );
  document.getElementById("idurl").setAttribute("value", url_da_encrypt);
  document.getElementById("idfilename").setAttribute("value", FileName);
  document.getElementById("idfilesize").setAttribute("value", FileSize);

제대로 된 다운로드 링크를 생성하는 jquery 코드는 위와 같습니다.

중요한 점은 idurl, idfilename, idfilesize 를 아까 함수 매개 변수에서 받은 값으로 치환시키고 있다는 점이죠.

함수 호출시 인자로 어떤 값을 넘기는지만 찾으면 끝입니다.

 

그래서 이런 창이 나와도 당황하지 않고..!

 

 

함수 이름 DeObfuscate_String_and_Create_Form_With_Mhoa_URL 을 검색해서 호출하는 쪽을 찾습니다.

빨간색으로 쳐진 부분에서 함수 호출 하는 부분이 보이네요.

 

  $(".download-timer").html(
    "<form action='https://download.megaup.net/' method='get' style='text-align: center;'><input id='idurl' type='hidden' name='idurl'><input id='idfilename' type='hidden' name='idfilename'><input id='idfilesize' type='hidden' name='idfilesize'><input id='btnsubmit' type='submit' class='btn btn-default' value='Create Download Link'></form>"
  );
  document.getElementById("idurl").setAttribute("value", "알아낸값");
  document.getElementById("idfilename").setAttribute("value", "알아낸값");
  document.getElementById("idfilesize").setAttribute("value", "알아낸값");

저 인자값을 토대로 개발자 도구를 열고 이 코드를 실행시켜버립니다.

 

function DeObfuscate_String_and_Create_Form_With_Mhoa_URL(
  d1,
  d2,
  FileName,
  FileSize
) {
  var url_da_encrypt = "";
  for (let i = d1.length / 4 - 1; i >= 0; i--) {
    url_da_encrypt += d1[i];
  }
  for (let i = (d1.length / 4) * 3 - 1; i >= (d1.length / 4) * 2; i--) {
    url_da_encrypt += d1[i];
  }
  for (let i = (d2.length - 3) / 2 + 2; i >= 3; i--) {
    url_da_encrypt += d2[i];
  }
  console.log(url_da_encrypt);
  return;
}

참고로 FileName하고 FileSize는 이미 아니깐 url_da_encrypt 만 알면 됩니다

위 JS 코드를 방금 찾은 호출하는 코드로 실행시켜보면 바로 알 수 있어요 ㅎㅎㅎ

d1 과 d2를 이용해 계산하더라구요.

 

참 쉽죠? 

당연하지만 다운로드도 제대로 됩니다.

 

그래서 위 과정을 전부 자동화 하고 싶다면 아래와 같은 JS 코드를 작성하면 됩니다.

 

1. JS의 정규식을 이용해 HTML 에서 DeObfuscate_String_and_Create_Form_With_Mhoa_URL 를 호출하는 부분을 찾고, d1, d2, FileName, FileSize를 얻어냄.

2. 이후 url_da_encrypt를 위 함수를 실행시켜서 얻어낸다.

3. url_data_encrypt, FileName, FileSize 를 이용해 jquery 코드를 실행시켜서 ADBlock 부분을 다시 원래 다운로드 링크로 치환시킨다.

 

 

    $(".download-timer").html(
      "<img src='https://megaup.net/themes/flow/frontend_assets/images/adblock/primary.png'>"
    );
    return;

아니면 이외에도 광고 차단기 인식시 실행되는 이 이미지 렌더링 부분과 함수를 강제 종료 시키는 return 부분을 피들러 같은 것을 이용해 변조해서 아예 실행시키지 않으면 됩니다.

 

+ 함수를 통째로 복사해서 사이트 들어오자마자 바꿔치기 한다던지..

 

자동화

 

원래는 귀찮아서 작성하지 않으려고 했는데 Bypass 코드도 심심해서 작성해봤습니다.

이 코드를 복사해서 크롬 개발자 도구 - 콘솔 탭에서 붙여넣기 후 실행하면 광고 차단기가 켜져있어도 다운로드가 가능합니다.

 

2023-06-06 기준으로는 작동하는데 나중에 어떻게 될지는 몰?루

이거 고쳐달라고 하지마셈

 

function DeObfuscate_String_and_Create_Form_With_Mhoa_URL(
  d1,
  d2,
  FileName,
  FileSize
) {
  var _0x37e46f = _0x20e9;
  (function (_0x5084a0, _0x598ee8) {
    var _0xc39c1d = _0x20e9,
      _0x24656a = _0x5084a0();
    while (!![]) {
      try {
        var _0x2b3ef0 =
          -parseInt(_0xc39c1d(0x129)) / 0x1 +
          parseInt(_0xc39c1d(0x15a)) / 0x2 +
          -parseInt(_0xc39c1d(0x138)) / 0x3 +
          parseInt(_0xc39c1d(0x14c)) / 0x4 +
          (parseInt(_0xc39c1d(0x12e)) / 0x5) *
            (parseInt(_0xc39c1d(0x12a)) / 0x6) +
          (parseInt(_0xc39c1d(0x141)) / 0x7) *
            (parseInt(_0xc39c1d(0x147)) / 0x8) +
          (-parseInt(_0xc39c1d(0x125)) / 0x9) *
            (parseInt(_0xc39c1d(0x14d)) / 0xa);
        if (_0x2b3ef0 === _0x598ee8) break;
        else _0x24656a["push"](_0x24656a["shift"]());
      } catch (_0x3cae40) {
        _0x24656a["push"](_0x24656a["shift"]());
      }
    }
  })(_0x3cd1, 0x70e60);
  function _0x20e9(_0x2ff710, _0x3948d0) {
    var _0x3cd1c1 = _0x3cd1();
    return (
      (_0x20e9 = function (_0x20e951, _0x57e3d0) {
        _0x20e951 = _0x20e951 - 0x121;
        var _0x151c14 = _0x3cd1c1[_0x20e951];
        return _0x151c14;
      }),
      _0x20e9(_0x2ff710, _0x3948d0)
    );
  }
  var url_da_encrypt = "";
  for (i = d1[_0x37e46f(0x127)] / 0x4 - 0x1; i >= 0x0; i--) {
    url_da_encrypt += d1[i];
  }
  for (
    i = (d1[_0x37e46f(0x127)] / 0x4) * 0x3 - 0x1;
    i >= (d1[_0x37e46f(0x127)] / 0x4) * 0x2;
    i--
  ) {
    url_da_encrypt += d1[i];
  }
  for (i = (d2[_0x37e46f(0x127)] - 0x3) / 0x2 + 0x2; i >= 0x3; i--) {
    url_da_encrypt += d2[i];
  }
  var width_trinh_duyet =
      window[_0x37e46f(0x12c)] ||
      document[_0x37e46f(0x14e)][_0x37e46f(0x14b)] ||
      document[_0x37e46f(0x146)][_0x37e46f(0x14b)],
    height_trinh_duyet =
      window[_0x37e46f(0x12b)] ||
      document[_0x37e46f(0x14e)][_0x37e46f(0x121)] ||
      document["body"][_0x37e46f(0x121)];
  if (width_trinh_duyet > 0x0 && height_trinh_duyet > 0x0) {
  } else
    (url_da_encrypt +=
      url_da_encrypt[Math[_0x37e46f(0x122)](url_da_encrypt["length"] / 0x3)]),
      (url_da_encrypt +=
        url_da_encrypt[
          Math[_0x37e46f(0x122)](url_da_encrypt[_0x37e46f(0x127)] / 0x2)
        ]);
  if (
    $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x14a)) ==
      _0x37e46f(0x150) ||
    $(_0x37e46f(0x159))[_0x37e46f(0x132)]() == 0x0 ||
    $(_0x37e46f(0x13e))["height"]() == 0x0 ||
    $(_0x37e46f(0x13e))[_0x37e46f(0x132)]() == 0x20 ||
    $(_0x37e46f(0x13e))[_0x37e46f(0x132)]() == 0x1a ||
    $(_0x37e46f(0x13e))["height"]() == 0x64 ||
    $(_0x37e46f(0x13e))[_0x37e46f(0x132)]() == 0x10 ||
    $(_0x37e46f(0x13e))[_0x37e46f(0x127)] == 0x0 ||
    $(".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img")[
      _0x37e46f(0x139)
    ](_0x37e46f(0x158)) != _0x37e46f(0x150) ||
    $(".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img")[
      _0x37e46f(0x139)
    ](_0x37e46f(0x133)) != "1" ||
    $(".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img")[
      "prop"
    ](_0x37e46f(0x137)) != _0x37e46f(0x12f) ||
    $(_0x37e46f(0x13d))[_0x37e46f(0x139)]("margin-left") != _0x37e46f(0x149) ||
    $(_0x37e46f(0x13d))[_0x37e46f(0x139)](_0x37e46f(0x124)) !=
      _0x37e46f(0x149) ||
    $(".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img")[
      _0x37e46f(0x139)
    ](_0x37e46f(0x153)) != _0x37e46f(0x149) ||
    $(_0x37e46f(0x13d))[_0x37e46f(0x139)]("margin-bottom") !=
      _0x37e46f(0x149) ||
    $(_0x37e46f(0x13d))[_0x37e46f(0x139)]("transform") != "none" ||
    $(".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img")[
      _0x37e46f(0x139)
    ]("visibility") != "visible" ||
    $(_0x37e46f(0x13d))["css"](_0x37e46f(0x156)) != _0x37e46f(0x154) ||
    $(_0x37e46f(0x13f))["css"](_0x37e46f(0x156)) != _0x37e46f(0x154) ||
    $(_0x37e46f(0x13f))[_0x37e46f(0x139)](_0x37e46f(0x158)) !=
      _0x37e46f(0x150) ||
    $(_0x37e46f(0x13f))[_0x37e46f(0x139)](_0x37e46f(0x133)) != "1" ||
    $(_0x37e46f(0x13c))[_0x37e46f(0x139)](_0x37e46f(0x133)) != "1" ||
    $(_0x37e46f(0x13c))[_0x37e46f(0x139)]("filter") != "none" ||
    $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x156)) !=
      _0x37e46f(0x154) ||
    $(_0x37e46f(0x155))["css"](_0x37e46f(0x131)) != _0x37e46f(0x149) ||
    $(".metaRedirectWrapperBottomAds")[_0x37e46f(0x139)]("margin-right") !=
      _0x37e46f(0x149) ||
    $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x158)) != "none" ||
    $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x133)) != "1" ||
    $(_0x37e46f(0x155))[_0x37e46f(0x139)]("transform") != "none" ||
    $(_0x37e46f(0x159))["css"]("position") != _0x37e46f(0x154) ||
    $(_0x37e46f(0x155))["css"]("clip-path") != _0x37e46f(0x150) ||
    $(_0x37e46f(0x13e))[_0x37e46f(0x139)](_0x37e46f(0x126)) !=
      _0x37e46f(0x150) ||
    $(_0x37e46f(0x13c))[_0x37e46f(0x139)](_0x37e46f(0x126)) !=
      _0x37e46f(0x150) ||
    $(_0x37e46f(0x157))[_0x37e46f(0x139)]("clip-path") != _0x37e46f(0x150) ||
    $(_0x37e46f(0x143))["css"](_0x37e46f(0x135)) != _0x37e46f(0x150) ||
    $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x135)) !=
      _0x37e46f(0x150) ||
    $(_0x37e46f(0x143))[_0x37e46f(0x128)](_0x37e46f(0x136)) !=
      _0x37e46f(0x14f) ||
    $(_0x37e46f(0x13f))[_0x37e46f(0x139)](_0x37e46f(0x131)) !=
      _0x37e46f(0x152) ||
    $(".metaRedirectWrapperBottomAds\x20>\x20div")[_0x37e46f(0x139)](
      _0x37e46f(0x135)
    ) != _0x37e46f(0x150) ||
    $(_0x37e46f(0x155))[_0x37e46f(0x139)](_0x37e46f(0x134)) !=
      _0x37e46f(0x149) ||
    $(".metaRedirectWrapperBottomAds\x20a")["css"](_0x37e46f(0x134)) !=
      _0x37e46f(0x149) ||
    $(_0x37e46f(0x13c))[_0x37e46f(0x139)](_0x37e46f(0x134)) != "0px" ||
    $(".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20.imgAds")[
      _0x37e46f(0x139)
    ](_0x37e46f(0x153)) != "3px" ||
    $(_0x37e46f(0x13c))["css"](_0x37e46f(0x142)) != _0x37e46f(0x130)
  ) {
    $(_0x37e46f(0x12d))["html"](_0x37e46f(0x148));
    // return;
  }
  function _0x3cd1() {
    var _0x2d4783 = [
      "opacity",
      "padding-left",
      "-webkit-mask-image",
      "href",
      "naturalWidth",
      "2635314xiBPmC",
      "css",
      "getElementById",
      "html",
      ".metaRedirectWrapperBottomAds\x20>\x20div",
      ".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a\x20>\x20img",
      ".imgAds",
      ".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20a",
      "<form\x20action=\x27https://download.megaup.net/\x27\x20method=\x27get\x27\x20style=\x27text-align:\x20center;\x27><input\x20id=\x27idurl\x27\x20type=\x27hidden\x27\x20name=\x27idurl\x27><input\x20id=\x27idfilename\x27\x20type=\x27hidden\x27\x20name=\x27idfilename\x27><input\x20id=\x27idfilesize\x27\x20type=\x27hidden\x27\x20name=\x27idfilesize\x27><input\x20id=\x27btnsubmit\x27\x20type=\x27submit\x27\x20class=\x27btn\x20btn-default\x27\x20value=\x27Create\x20Download\x20Link\x27></form>",
      "2311834YRTTdx",
      "gap",
      ".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20.imgAds",
      "idfilesize",
      "setAttribute",
      "body",
      "16SKwOWG",
      "<img\x20src=\x27https://megaup.net/themes/flow/frontend_assets/images/adblock/primary.png\x27>",
      "0px",
      "display",
      "clientWidth",
      "459764zavoez",
      "2930wmrrjw",
      "documentElement",
      "https://tm-offers.gamingadult.com/?offer=299&uid=f1e13f9c-9c99-4f78-9e16-a8f754fdaa0d",
      "none",
      "value",
      "3px",
      "margin-top",
      "static",
      ".metaRedirectWrapperBottomAds",
      "position",
      ".metaRedirectWrapperBottomAds\x20>\x20div\x20>\x20.imgAds\x20>\x20img",
      "filter",
      "#M9319823",
      "448234oCsgrL",
      "clientHeight",
      "round",
      "idfilename",
      "margin-right",
      "11601yhVKtQ",
      "clip-path",
      "length",
      "attr",
      "69781BnQbCb",
      "6rpWMOG",
      "innerHeight",
      "innerWidth",
      ".download-timer",
      "3943730arOMOz",
      "300",
      "normal",
      "margin-left",
      "height",
    ];
    _0x3cd1 = function () {
      return _0x2d4783;
    };
    return _0x3cd1();
  }
  $(".download-timer")[_0x37e46f(0x13b)](_0x37e46f(0x140)),
    document["getElementById"]("idurl")[_0x37e46f(0x145)](
      _0x37e46f(0x151),
      url_da_encrypt
    ),
    document[_0x37e46f(0x13a)](_0x37e46f(0x123))[_0x37e46f(0x145)](
      _0x37e46f(0x151),
      FileName
    ),
    document[_0x37e46f(0x13a)](_0x37e46f(0x144))[_0x37e46f(0x145)](
      _0x37e46f(0x151),
      FileSize
    );
}

1. 함수 바꿔치기

다음 코드를 무조건 5초 로딩 전에 잽싸게 실행시켜서 DeObfuscate_String_and_Create_Form_With_Mhoa_URL 함수를 바꿔치기 합니다. 바꾼건 마지막 return 하는 부분에 주석 단거 밖에 없습니다. 애드 블로커 창을 띄우고 return 으로 종료하는데 return 을 없애버리면 다음 코드가 실행되서 다시 다운로드 링크가 정상 실행되기 때문입니다.

 

물론 5초 로딩 전에 실행시키지 못하면 실패합니다.

 

 

function get_arg() {
  var scriptElements = document.getElementsByTagName("script"); // 현재 HTML 문서의 모든 <script> 요소 가져오기
  var regex =
    /DeObfuscate_String_and_Create_Form_With_Mhoa_URL\('([^']*)', '([^']*)', '([^']*)', '([^']*)'\)/; // 정규식 패턴 생성

  for (var i = 0; i < scriptElements.length; i++) {
    var scriptText = scriptElements[i].innerHTML; // 각 <script> 요소의 내용 가져오기
    var match = regex.exec(scriptText); // 정규식 매칭

    if (match) {
      var d1 = match[1]; // 첫 번째 인자 값
      var d2 = match[2]; // 두 번째 인자 값
      var FileName = match[3]; // 세 번째 인자 값
      var FileSize = match[4]; // 네 번째 인자 값
      return [d1, d2, FileName, FileSize];
    }
  }
}

function get_url_da_encrypt(d1, d2) {
  var url_da_encrypt = "";
  for (let i = d1.length / 4 - 1; i >= 0; i--) {
    url_da_encrypt += d1[i];
  }
  for (let i = (d1.length / 4) * 3 - 1; i >= (d1.length / 4) * 2; i--) {
    url_da_encrypt += d1[i];
  }
  for (let i = (d2.length - 3) / 2 + 2; i >= 3; i--) {
    url_da_encrypt += d2[i];
  }
  return url_da_encrypt;
}

const args = get_arg();
const d1 = args[0];
const d2 = args[1];
const FileName = args[2];
const FileSize = args[3];
const url_da_encrypt = get_url_da_encrypt(d1, d2);

$(".download-timer").html(
  "<form action='https://download.megaup.net/' method='get' style='text-align: center;'><input id='idurl' type='hidden' name='idurl'><input id='idfilename' type='hidden' name='idfilename'><input id='idfilesize' type='hidden' name='idfilesize'><input id='btnsubmit' type='submit' class='btn btn-default' value='Create Download Link'></form>"
);
document.getElementById("idurl").setAttribute("value", url_da_encrypt);
document.getElementById("idfilename").setAttribute("value", FileName);
document.getElementById("idfilesize").setAttribute("value", FileSize);

2. 인자값 찾아내서 해석후 jquery 코드 실행

이 코드는 5초전에 실행하는게 아니라 반대로 광고 차단기 마크가 뜨면서 다운로드 링크가 안뜨는 상태서 실행하면 됩니다. 이거 실행하는 순간 광고 차단기 끄라는 이미지가 없어지고 다운로드 링크가 뙇 생깁니다.

 

두개중 아무거나 해도 아마 잘될거에요.

크롬 확장 프로그램으로 만들어서 megaup 들어갈때마다 자동으로 실행시키게 만들어도 됨!

스크립트

https://github.com/pgh268400/MegaUp_Bypass_Adblocker_with_5Secs

 

GitHub - pgh268400/MegaUp_Bypass_Adblocker_with_5Secs: Eliminates ad blocker blocking and 5 second waits on Megaup sites and gen

Eliminates ad blocker blocking and 5 second waits on Megaup sites and generates download links instantly. - GitHub - pgh268400/MegaUp_Bypass_Adblocker_with_5Secs: Eliminates ad blocker blocking and...

github.com

심심해서 TamperMonkey로 스크립트도 만들어봤습니다. 설치하면 알아서 MegaUp 다운로드 5초 우회됩니다.

 

 

오늘의 결론

- 프론트단에선 JS에 난독화를 걸어도 털릴건 다 털린다

  애초에 HTML 통신시에 JS코드를 텍스트로 전송하기 때문에 보안을 유지하는게 어려워 보입니다

- 프론트단에서 창과 방패의 싸움을 해봤자 방패가 무조건 쳐발린다...

 

SNS 공유하기
최근 글
파일의 IT 블로그
추천하는 글
파일의 IT 블로그
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.