js逆向之猿人学-反混淆刷题平台第一题(手把手教学)
链接:
内容分析:
这里我们来看一下第一题的内容:
- 题目要求:获取所有机票价格的平均值。
- 接口分析:首先我们按F12,这里会出现一个debugger。
直接在第二行右键never pause here,我们可以看到入下图所示:
然后点击我用红框圈起来的按钮,这就能直接过掉这里的debugger了,之后我们点击进行翻页,出现了一个请求,点击这个请求
这里我们能看到请求时带了两个参数,一个page(页码),一个m,这里这个m值就是本题的关键。
如果有js逆向经验的,一看这个值就会有一个猜测,这个m值,"|" 前面部分可能是一个md5,后面是一个时间戳,接下来我们就分析下如何获取到这个m值。
还是在这个页面,按照下图所示一次点击。
接下来我们能看到页面跳转到了如下图所示:
将代码格式化一下,也就是点击我用圈起来的地方。
这里我们能看到代码是被简单混淆过了,对代码的分析不太友好,不过不用慌,将这里面的代码全选复制。然后打开这个链接:JS混淆还原工具-猿人学JS在线反混淆。
将代码复制到上面的框中,然后点击尝试解混淆,之后下面框会出现解过混淆的代码。这我们将解过混淆的代码复制出来。
从上图看,我们很容易看出有一个**_0x5d83a3.m** 这个参数,而且格式和之前我们在请求时看到m参数格式类似,接下来看看这个m是不是我们需要的参数,我们回到之前的页面中,也就是下图这个页面(这是格式化后的代码)。
我们对比解混淆后的代码,直接在第6行和第7行打断点,有人可能会问为什么不在第5行打,因为第5行可能打不上,不过影响都不大。打完断点之后我们重新翻页,这里就直接在第6行断住了,接下来我们看一下**_0x5d83a3[’\x6d’]这个参数(也就是解过混淆之后的_0x5d83a3.m**)。把鼠标选中我框起来的部分,这里就会出现一个值,如下图所示:
这里我们能看到这个值和之前请求时的m值格式一样的,所以基本能断定前面请求时的m值就是在这里生成的。然后我们看看这个值的组成部分:
_0x57feae + '\u4e28' + _0x2268f9 / (-1 * 3483 + -9059 + 13542)
这里我们依次看看\x6d、 \u4e28、(-1 * 3483 + -9059 + 13542)这三个参数。整理下:
_0x5d83a3["m"] = _0x57feae +"|" +_0x2268f9 /1000
这里就只剩下 _0x57feae 和_0x2268f9 这两个参数了,我们往上看,可以发现这两个值如何得到都是有的。
var _0x2268f9 = Date['\x70\x61\x72\x73\x65'](new Date()) + (16798545 + -72936737 + 156138192)
_0x57feae = oo0O0(_0x2268f9['\x74\x6f\x53\x74\x72' + '\x69\x6e\x67']()) + window['\x66'];
把这两个拿到刚才解混淆的位置解下混淆,得到:
var _0x2268f9 = Date["parse"](new Date()) + 100000000;
_0x57feae = oo0O0(_0x2268f9["toString"]()) + window["f"];
可以很明显看出 _0x2268f9 是一个时间戳, 接下来只用分析下_0x57feae即可。
我们重新打下断点,如下图所示:
还是按照刚才的方法,选中需要看的,我们会发现,oo0O0(_0x2268f9"toString") 的值是空的,window[“f”]的值是一串md5值,那么很明显了,我们现在只需要找到window[“f”]是如何生成的,那么整个m就能出来了。这里我们可以看到 f是window下的,那么接下来我们有两种方式,一种是继续跟,来找到这个f是如何生成的,另一种是通过hook。
先讲讲如何继续跟值,这里先看看 oo0O0函数,将鼠标放在这个名称上,之后会出现如下图所示:
直接点击,这里会直接跳转到这个函数所在的位置,如下图所示:
这里由于代码的原因,无法进行格式化,所以我们需要自己复制出来。如下图所示:
注意看我框出来部分,这里就是为什么这个函数的值是一个空的,因为最后返回的是一个空。
这里先传值运行一下,结果发现报错了,报错原因很简单,缺少一些参数,这里我就说快点了,代码拉上去,我们能看到如下图所示:
这里缺的就是我圈起来的部分的参数,只需要补齐就好了,这些值都是固定的。想要获得这些值很简单,直接在console面板中运行下对应的值就行了。
需要补的代码(在node中运行的时候直接放最上面就好了)
window = global;
window.a = "isMRQsxrU]xtDhMbZJrrdvxPiiuypx]
qz}® g°¤¯©¡tª¥¯º§¯·£¢³²¯¥ ĺ¡Ä½¢±Õ¿Ç¡É¹ײÓÏÔÎÓÖÏ¡¹Üɤ¤ßÃÉßòÝÂÄõÖëëõãÅëìÐÙÿðÕ÷ăøïûóÀòÕăþöÞáĒþăĆČăõùÑăďñÔĆýàĝòñôÞûôèĤċöĈģĎĉģïĜħđìġĖĉĵĊĉčĴħijľŁĢĴĤüĘĕĝņĴĿĩĺķĭĨĉĤĢĩČŀňĩʼnłĹĘŗİĭĬŘĵıİšŏĵŅťŋĥŅţŀţŅŧŜŨʼnIJňőūĹśŰřŹŞĹřŸūļĿųŰŁšƉũńńſţũſƀŤŲƏƕŷŶűőƄƏŗƋžƓƓƝƋŮŵƦƑŶŸƟƊŤŬƭƏƌŰƬƓžƐƫƠűƑƹƎƯƍƴƧƳƾƷƢƝƶƿƦơƄǃƫƩƈǂƹƝƾljƲƌǃǕǀƑǎǐƬƺƔǑljƽƜǒǍƱǗǢǏǗƱǟNjNJǛǚǖƽƨǠǒƫƴǰǗǂǔǯǚǕǻǭǐǞǻȁǣǢǝƽǰǻǃǷǪǿǿȉǷǚǡȇdzDzȂȋǶǐǘșǻǸǜȓȇǽǭȒȁǜǜȗǻȁȗȘǽǹǼȤȀȎǨȥȝȑǰȦȡȅȫȶȣȫȅȭȓȰșȮȪȑǼȴȦǿȈɄȫȖȨɃȮȩɏɁȤȲɏɕȷȶȱȑɄɏȗɋȾɓɓɝɋȮȵɕȻɘɀɟɊȤȬɭɏɌȰɧɛɑɁɦɕȰȰɫɏɕɫɬɑɍɐɸɔɢȼɹɱɥɄɺɵəɿʊɷɿəʒɽɢɥʂɾɥɐʈɺɓɜʘɿɪɼʗʂɽʣʕɸʆʣʩʋʊʅɥʘʣɫʟʒʧʧʱʟʂʉʺʥʊʌʳʞɸʀˁʣʠʄʻʯʥʕʺʩʄʄʿʣʩʿˀʥʡʤˌʨʶʐˍ˅ʹʘˎˉʭ˓˞ˋ˓ʭˠˇʲ˅˖˕˟ʤ˚˙ʽˍ˲˝ʽˢˬˢʱˉˬ˥ˊ˙˽˧˯ˉ˷ˣˢ˳˲˯˥ˠˁ˜˕˝˼ˮ̃ˤ́ˤˮˋ˕˦̗̈̊ˮ˦˨˕˲˪̒˜˶˜˹̗˺̘̝̜́̊˵̢̟̠̃˪̆ˬ̔˯̗̂̈˴̛̖̈˷̸̟̰̪́̒˼̵̷̵̵̛̹̱̥̺̙̙̻̥͈̯̱̭͚͎̝̭͎͎̣͈̤̬̼̄̿͊̿͂̍̐̐͋͋͛ͨ̿͊͘ͅͱ͈̾Ͳ̴͈́ͧͲ͕͌͘;͒ͯͲ̿ͬ͐;ͻ͑͘ͷ͜Όͬ̈́ͪ͋̓ͩ͠΄ΆΌͭ͢Ζ͐ͬ͵ΖΜͳͬ͗͡ΊΤΟ͞ΆΆΗΓάͣάΰ΄α·ΎͬΊΒΪκΐ͵ΝάΨίΉνΙΝͻυΛψΔΞόΠΈΣϐςΏνχΡϕΦΥΏΙέζΨΗβϠΰΙθήμϤμςπΧϕϟιϭξνϮαφϤϞϴϋϸόϺϐφϦθϔθϡϾϬϳϳξϦϦϘϷϫЌσЋϤψϺϐϼϝϐЏϷϵϔЎЅϩЊϛϿПКϡ϶ϾЄМВϡЉИДЛϵХЅЍϯϯНЧЁеІЅЦϹУЬз϶ООАЯУдϼрМЁЩидлЕрХЭюЏлєЌѐзТецлямѓчџџѝебЛџябѧѧшФіѦтмЧѫчѳѲѰыѨѦѷѐіѦжєњєкєўѿѿѝѥрѻџѨьҁѯѿѿҋѥѡѓҏѿ҇җҔѭѪѥ҆ѿҟҚҠҁѽҢҤѺҗҦҤѾҬҚѩ҃ҊҐѨ҇ҎҢѮ҈ҒҳҴґҙѴүғҜҀҵңҳҳӀҙҕӆӃҳӋӋӉҡҞҙҺҳӓӎӕҵұӖӘүӛӚҖҲҪӀӠҶҮӀҠҺӂӚӠӀҤҧҭӗӍӈҩӑҬӕөӈӅҳӳӣӕӻӷӑӍҿӻӬӐӿӺӘԈӝӴӝӖӜԍӡәӇԐӦӞӬӌӫӲӨӑӮԜӰԛӰӺԛԞӹԁӜԗӻԄӨԝԋԛԛԪԁӽӫԫԛԍԳԯԉԆԁԢԛԻԶӴԝԙԾӻԕԍӻՄԛՈԨԀԞԦԺԈԤԪԺՈԨԌՒԕԿԵԑԹԔԽՑԭ՞՛ՋգգաԹԵԟգՔԸէբՀհՍ՜ՅԾՀյՉՂՄչՎՆՄջՔՊՈԸՖմդռ՜ՀԿՉճթդՅխՈձօդաՋ֏տա֖֗խթ֗ֈլ֛֖մ֤օչղմգսյգ֬փպֲ֚ֆ֤ֈִ֊ַָָֹ֖֕֝ոֳ֗֠քַַֹ֧ׅ֝֙փַׇ֥֢֙֝־ַחגֵֹ֓ךםֲמלַ֮׀ֲֺ֥֟ׄ׀ֶ׀פֱׄ֨֯כב֭וְיֻקׯוב װה ל סך צתענ ׯ״ ׳ ן ל ײ ׯ ״ ܇܇ ܆ ܕ ܟ ܖ ܂ ܤ܋ ܉ܚܣܐܧܛ܍ܳܯ܉܅ ܳܣܫܻܻܜ ܪܺܖܞܝܰܙܒܔ܃ܝܕ܃ܣܪܘݑܦܞܜݕܪ݈݊ݗܬܶݗݙܵܽܘݓܷ݀ܤݙ݇ݗݗݥܹܽܣݧݗܹݯݮ݂݅ܽݞݗݷݲݸݏݘܳݷݒݰݐݻݖݞݔކݛݸݤފݟݦݠލݤݩނݏݻޔސݷݢݵކݻݔކޓއޟޟޝݵݱݛޟޏݱާާވݤޖަނތݧޫއލްފޒޘݱޏޮݶޓޚތޔޞޝޥހޟިތ߂ޯߏߋޥޡޓߏ߇ߗߔޭުޥ߆ߟߚޚ߁ߢޡޱޟߨߌީ߃ߊ߰߇ߤ߈ߵ߈ߒ߳ߴߑߙ߯ߓߜ߀߶ߣࠃ߳ࠀߙߕࠆࠃ߳ࠋࠋࠉߡߞߙߺ߳ࠓࠎࠔߪߴߏࠓ߮߶ߴࠗ߳ࠐ߸ࠢ߷ࠤ߰ߟࠨߴࠪࠆࠧࠩࠅࠍߨࠣࠇࠐߴࠪࠗ࠷ࠧ࠵ࠍࠉ߳࠷ࠧࠉ࠾ࠕࠒࠍࠧࡇࡂࡇࠩࠥࡊࡍࠢ࠙ࡎࡌࠦࡔ࠾ࡖࠬࠢࡊࠓࠤ࠰࠺࡛࡞࠹ࡁࠜࡗ࠻ࡄࠨ࡞ࡋ࡛ࡪࡁ࠽࡛ࠫࡍࡳࡉࡆࡁࡢ࡛ࡻࡶ࠵࡙ࡾ࠹ࡕࡍ࠻࡚ࡒࡔࡁࡦࡺࡆࡤࡪ࢈ࡨࡌࡕࡿࡵࡰࡑࡹࡔࢇࡰ࢛࢞ࢋࢣࢣࢡࡹࡵࢣࡸࢧࢢࢀࢰࡼࢯࢍࢲࡱࢉࢂࢌࡴࢎࢆ࢈ࡶࢊࢮࣂ࢞ࢿࣀ࢝ࢥࢀࢻ࢟ࢨࢌࣂࢯ࣏ࢿ࣌ࢥࢡ࣒࣏ࢿࣗࣗࣕࢭࢪࢥࣆࢿࣟࣚ࣠ࢷࣀ࢛ࣟࢺࣂࣀࣣࢽࣆ࣌ࢦࣂࢺࣈࢫࣈࢾࣈࣶ࣑࣋࣪ࢷࣣ࣬ࢴ࣮ࣣࣸࣟ࣊ࣝࢼ࣮࣯ࣻࣷइऄࣝࣙऊइࣷएएएࣰ࣌ࣾऎ࣏࣫ࣤओ࣮ऌࣤगࣱࣺࣸटࣷࣾऀदࣻनख࣠ऀࣵञ࣫गरࣨबओࣾऑढगࣰढयणऻऻहऑऍࣷऻफऍृृतऀलूठनःेणऩॎउधॄूऌफढसऐमड़ॊ॔ऴघफ़डोु़झॅठ॓फ़़ह४१ॗ९९७ॅुफ९ॠॄॳ८ौॼैऴढ़ख़ॾऽॕ्ऻग़॒॔ॅॠॖ॔ॣঀংএ।८এঐ७ॵॐঋ९ॸड़ॿটএজॵॱঢটএধধথॽॺॵখএযপললঋঁশখপॷীঠূঘঞতৄঘঢৃডিণবঐৃথএৃথমৃৣঠু০৩া৪৬ূ৲েৎৈ৴োী৸ৌ৷৺ঢ়স৳ৗৠৄ৺১ਇ৷ਆঢ়েਇ৷৩ਏৢঢ়৾৷ਗਘ৮ਗ৳৹ਞਜ৶৾ৼড়৻৲ਈ৾ਆ০ਃਯਢ৯ਛ৾৬ਰਗਂਕਦਛ৴ਦਲ਼ਧਉਿਾਕਿਯਡੇੇਨਸ਼ਢੂਇੋਨਭਫਲਤਐਮਦਰਗਪਸਸਜਛਥੀਡਤੀਧ੫ਜ਼ੳੲਲ਼ੳੈੲ੫੬਼ਖ਼ਫ਼ઌ੨ੈ੧ઔ੨ઌ੬ਖ਼ઃੴઋખੴੱટએઁધણ੫ધઘફદવકઑશહઅસચલુખઞઔૃછૈલટકાઋષૐઈૌળઞૂાથૃભગોભૣૣૄઠૢિૈણ૧ૃહ૮૬રોૌસૠૄૻ૮ଃોଇ૿ଏଌૢ૾ଗૹଚଜૹଞଜଔ૬ଥૺଘૣ૿૦ଂଯଢ૯ଛ૬ରଗଂକଦଢଉପଳଧଙିକଃିଯଷେେନଶଢପଝ଼ଥଞଠଢତଔମଡ଼ଲୠନଙଷଡ଼଼ଠଣୄଥ୍ନୟ୧ୄୁଯ୯ୟ୷୳୍୷୨ୌ୶଼ୡஆஉஊஈୢஐ୬ஒ୦ஆ୍୫୲ஐ୰ଢ଼இଡ଼ஓ୵୧ணஓநமஜயபஈஸஅதஆஔஷசஜேடஔதஈறவஐேனௗேவறௐழ௬ு௰ாீ௵ோ௸ைழௐௐ௸௯ு௩ఃேఋఓఒ௩ఓఄ௨గఒ௰ఠఋఌ௵௮௰௹௱నఆఈఄఊచ௪ఆఴఄబఌ௰௳௹ణఙఔ௵ఝ௸యషఔియడేృఝఙఋేసజోెతఠవఱౖౙమౚౘలనఝషమ౦లైఠావఫన౬ాౢ౦౯ౣ౻౻౹్ష౻౫్ಃಃీಂ౦ౡ౸ౡౚ౨ಋ౧಄ಂಔ౪ಈಂౕ౮ಆ౺ಛಛ౹ಁಗ౻಄౨ಟಒಛಧಁ౽౯ಫಛಣಳರಉಆಁಢಛಶಝಙಾೀಖಝೂೀಚೈತ಄ಟದಠಇಢೀಠತಮಭವಐೋಯಸಜೆವಱೢ೧೧ಽವೖ೯೪ೲ್ೲೋ೧ೌೊ೮ഀೞ೮ುೢഃഅೡ೩ೄೣ೬ഇೝഃ೩ഓഃഛചೱ೮೩ഊഃണഞೞഅഁദഩഫപ೧ഃഠറഈഎഀഌപണ഼സടഊഝമപല഻യേേഝങഃേഷങ൏൏രഌാൎബഴഏയഥ൚൘ളസൟശൄജ഻ലൖണ഼െ൧൧്നൣേഴ൫൞ു൧൳്഻൷൧൯ൿർൕ്൮൧ඇංඈ൞ൾൃඇൢ൪൜උ൮൬ඕ൪൲ආ൯൶ඊඞ൳൹ඒൟඋൾ൜චඇ൲අඖඒ൹කඣඉදණඅඁ൳දඟටභභ൴ඦබඒකඝඬඕඎඐൾඒඤ්ඞඖබජවඬෑඦඝෆඓඐුරඦඹ්ෆතීඹඵ෦ී෫෫෫ඨේ෪ෆ෦ණ෯්෨ෳූ෮ඹීේුขෘලේෳฌහจ෯ේ෭ฆซททต෭෩ීทง෩ฟฟොฎพ෴ෟรปสศขชย෬งฤจำฌขฐฌถืืตฝำทภคฮมืใฝนซ็ื฿๏์ลยฝื๗๒ณูี๚าษึิพฺโิยๆไใ้ฯ๛๎ฬ๗โ๕๙๙๕๑ใງງไຆํ๏ຘ๖ຠ๘ຂຣລກຉຟຌຨບຍຣັຉຳຣົ຺ຑຎຉສຣໃລມໆ້ພລ໊່ຣສ຺ຈ໔ຬ໓ຫາິ໐ະດປຝຽຸນແຜ໗ໜຸີວ໓ແຽໜເ່ໄ໙໕ຶ໑໊໌ົ໖໎໌ຼໜ໒ແໟ༌໘༄່༎໑ໍ໐་༐༚༗༇༟༟༝༟༐༣༞༬༁༘༁༯༅༴༌༂༪༏༆༔༓༰༈༔༞༿ཀ༝༥ༀ༻༟༨༌ང༶༩༿ཌ༥༡དྷཏ༿བྷབྷཕ༭༪༥ཆ༿ཟཚའ༶༰༛ཟ༺གངལ༽ཆ༸ཫགྷཊ༼༩ཆཤཬཌ༰༳༹ལཙཔ༵ཝ༸ཱིླྀཔད༿ཿཡ྇ྃཝཙཋ྇ླྀཛྷྋ྆ཤྔཡྀཀྵརཨཥནྜྷིཪོམླྀཾུྥཻྨྚཥོ྆ྦྷྪ྅ྍཨྣ྇ྐུྫྷྞྑྦྷྶྍྉཷྷྦྷྙ྿ྻྕྒྍྮྦྷ࿇࿂྄ྩྥ࿊྆ྡྚྜྌྦྷ࿔ྨ࿖ྪྲྫྷ࿚ྯྶ࿎࿔ྴྡ࿋࿁ྼྜྷ࿅ྠྼྐྵ࿗࿅࿁ྫ࿄࿌࿈ྵ࿙က࿖ဂက࿚ဈ࿐࿂࿘࿇࿚ဈ࿌࿋࿕࿑࿔ဏန࿗ရဋဣဢဣနဧဢကူထလစကဉခးဏဖလျဒယဲဖ၄ဲ၃ဘဢ၃၅အဩငဿဣာတ၈်ိ၃ၑဩဥဏၓ၃ဥၛၚေီဩ၊၃ၣၞၤ်ဟဟၣှၜးၧ၂၊၄ၯ၈၎၀ိ၊ၒၘူၐၕၮျၧႀးၼၣ၎ၡၲၮၥၺၿၳႋႋႉၡၝ၇ႋၻၝ႓႓ၴၐႂ႒ၯၨၓ႗ၳႏ႞ႜၶၾၼၝၻႂၸႪၾၶ႖ႫႀႊႫႫႉ႑ၬႧႋ႔ၸႰႢ႕ႫႷ႑ႍၿႻႫႳჃჀ႙႖႑ႲႫႢႬႇႦႮႜႩႲႤიႮႤოႲႺႨტႷფზნႼႠ႟ႩდჄႥჍႨუშჄჁႫჯჟჁჷჶჍႷჷშ჻ჶეᄄვჰკგეჁოზჶᄌფლჺყᄔფჍწჱᄊთᄃᄌეᄘჿცჽᄎᄊᄁᄖᄛᄏᄗᄧᄤჽჹᄪᄧᄗᄯᄯᄯᄐწᄞᄮᄌᄔჯᄳᄎᄬᄈᄷᄑᄚᄔჸᄖᅄᄜᄀᄛᄢᄤᄁᄞᄥᄾᄋᄷᅐᄈᅒᄲᄱᄵᅈᄵᄐᄥᅋᄻᄥᅋᅚᄱᄭᅖᅘᄸᄜᄟᄥᅐᄠᄵᅝᅋᅈᄬᅜᅏᄽᅈᅧᅛᅣᅳᅫᅈᅒᅳᅴᅑᅚᅑᅬᅟᅳᅝᅮᅢᅡᅝᅷᅘᅕᄿᆃᅫᅻᅾᅋᅷᅚᅈᆒᅲᅱᅵᆈᅵᅐᅥᆋᅻᅥᆋᆗᅱᅭᅼᆘᆏᆂᅵᆘᆑᅶᆅᆩᆓᆛᅵᅶᆘᆤᆁᆠᆞᆍᆣᆲᆉᆅᅳᆳᆣᆕᆻᆷᆐᆞᅸᆵᆭᆡᆀᆶᆱᆕᆻᇆᆳᆻᆕᇈᆯᆚᆭᆾᆲᆌᆌᇑᆨᆥᇆᇓᆻᆵᇛᇏᆱᆭᆴᇛᇃᇣᇣᇙᆸᇆᇣᇩᇋᇊᇅᆥᇘᇣᆫᇟᇜᆬᇁᇩᇗᇔᆸᇨᇛᇉᇔᇳᇞᇳᇳᆸᇡᆽᇕሂᇯᇑᇷሊᇪᇩᇭሀᇭᇈᇝሃᇳᇝሃሖᇶᇵᇹሌᇹᇔᇩሏᇿᇩሏሔᇵᇱሒሜᇹᇶᇽመላሟሉሚሎልሉሣሄሁለሯሗሧሪሰልሉሦሴሑልመሸሯሡሥᇽሯሻምሀሲሩሌሞምለቃሧሰሔሷቇቇርሩሼቆስሱቀቁቧሼቊቧቭሩቜቧሯባቕቐሱሴቑቸቧቯቮቷባታብቾቘቦኆቿቜቚቈኁበቩቱቤቭናኊቩብቸናቻትኛኔቱቭኘኁኅቝኛችበኒቬኩቾችቨኣኇነቴኪኗኧኮኍኜኦኹንኑአኮኡኜኪውኯኮኩኼዃኵኰኑኹኔዘዏዎዃዓዅዝኸዦዟዒያዌዣዛዣዦየዄውዳዪዉዅዘዳዛዕዻዴዑውዮዸዯዡዥኽዯዻዝዀዲዩዌጉዞዝወጃዧደዔጋዾዡጇጎይዩዼጆጟጟጙድዱጀጟጎጁጧጟዼጊጧጭጏጎጉዩጜጧዯጣጟጕጐዱጙዴጸጧጯጯጵጡጷጿጱጮጷፇጾጝጙጬፇጯጩፏፈጥጡፂፌፃጵጹፃፏጱጔፆጽጠ፝ጲጱጜፗጻፄጨ፠ፒፅ።ፁጽፐ፫ፚ፳፳፭ፉፅፔ፳።ፕ፻፳ፐ፞፻ᎁ፣።፝ጽ፰፻ፃ፷፳፩፤ፅ፭ፈ፥ᎌ፻ᎃᎃᎎ፵ᎇᎇᎍᎇ፥ᎋፏᎆᎏ᎒᎘፵፱ᎎᎇ᎗Ꭷ፹Ꭷ᎖፹Ꭳ፱᎓Ꭸ᎑Ꮁ᎖፱᎑ᎰᎣ፴፷Ꭻ፸ᎀᏁᎣᎠᎄᎻᎯᎥ᎕ᎺᎩᎄᎄᎿᎣᎩᎿᏂᎥᎡᎴᏌᏂ᎑ᎹᏈᏄᏋᎥᏐᎵᎾᎵ᎘ᏌᏔᎵᏕᏎᏅᎤᏣᎼᎹᏀᏤᏄᎨᏣᏥᏄᏁᏐᏱᏟᏅᏕᏵᏛᎵᏕᏳᏕᏰᏌᎺᏔᏢᏸᏝᏥᏝᐆᏴᏩᏺᏭᏨᏉᏤᏡᏰᐏᐗᏔᐓᏻᏹᏘᐒᐉᏭᐎᐙᐂᏜᐓᐥᐐᏡᐞᐠᐗᐊᐍᐜᐘᐟᏹᐠᐉᐏᐁᐵᐠᐫᐅᏵᐌᐆᐈᐐᐙᐿᐳᐙᐟᐑᑅᐰᐻᐕᐅᐜᐖᐘᐆᐠᐪᑋᑅᐻᐍᐤᑋᑁᑋᐥᑙᐪᐩᐬᐝᐲᐪᑛᑑᐹᐮᐰᐞᐼᐠᐸᑢᐼᑫᑟᐫᑎᑌᑫᑡᑑᑎᐬᑨᑔᐰᑉᑤᑙᑬᑮᑻᑔᑚᑜᒁᑖᑴᑜᑀᑛᑸᒃᑻᑨᑄᑝᑸᑥᑭᑭᑺᑲᒆᑌᒁᑪᑲᑴᑐᑰᑶᑸᑕᑳᒐᒎᒡᑸᑲᑜᑞᒆᒆᑸᒗᒋᒬᑤᒞᒗᑩᒁᒤᒑᑬᑬᒧᒋᒑᒧᒨᒍᒯᒑᒺᒧᒳᒕᒰᒭᒍᒳᓆᒱᒖᒘᓉᒪᒿᒿᓉᒷᒙᒿᓅᒤᒭᓆᓏᒫᒲᒤᓙᒬᒔᒼᓙᓇᒭᒽᓝᓃᒝᒽᓛᒸᓛᒽᓟᓔᓠᓁᒪᓀᓊᓫᓱᓓᓒᓍᒭᓠᓫᒳᓧᓚᒴᒼᓽᓟᓜᓀᓼᓣᓎᓠᓻᓧᓑᓄᓺᓳᓄᓈᓾᓮᓮᓨᔇᓳᔓᔆᔏᓫᓲᓤᔙᓬᔜᓨᔝᓴᓩᔓᓡᔃᔘᔁᔡᔆᓡᔁᔠᔓᓤᓧᔛᔘᓨᓽᔥᔓᔐᓴᔤᔗᔅᔐᔯᔚᔕᔻᔯᔐᔞᔻᓺᔢᔢᔔᔳᔦᕈᓿᔿᔪᔥᔬᔆᔣᔪᔬᕒᔧᔭᕆᕎᔨᔥᔰᕍᔯᕌᔸᔕᔲᕠᔼᕘᔸᔝᕅᕔᕐᕗᔱᕙᕁᕅᕛᕜᕅᕠᔫᕰᕇᕣᕦᕮᕈᕅᕐᔫᕑᕬᕈᔶᕐᕙᕺᕷᕢᖄᔿᔷᕚᕢᕨᖀᕠᕅᕝᖀᕹᕞᕭᖑᕻᖃᖃᖅᕭᕢᖖᖘᕯᖋᖏᕜᕰᕭᕴᖕᕷᖔᖀᕝᕺᖨᖄᖠᖗᖉᖍᕥᖗᖣᖅᕨᖚᖑᕴᖱᖆᖅᖉᖰᖥᖈᕼᖽᖧᕸᖾᖷᖢᖝᗃᖵᖘᖦᗃᗉᖫᖪᖥᖅᖸᗃᖋᗇᖲᖮᗒᖔᖶᗇᗋᖘᖬᖩᖨᖏᖵᗐᖛᗗᖶᗤᖴᗠᗆᗗᗚᗠᗗᗉᗍᖥᗗᗣᗅᖨᗚᗑᖴᗱᗆᗆᗍᖰᗤᗬᗍᗭᗦᗝᖼᗻᗔᗑᗜᗼᗲᗁᗩᗸᗴᗻᗕᗾᗥᗫᗝᘑᗼᘇᗡᗑᗨᗡᘊᗗᘅᘏᗩᘝᗮᗭᗬᗡᗴᗮᗰᗤᗽᗵᗽᘟᘔᘠᘁᗪᘀᘉᗧᘰᘈᗬᘕᘲᘠᘧᘧᗲᘚᘚᘌᘫᘞᘰᗷᘿᘘᗼᘔᘄᘧᘑᘄᙃᘫᘩᘈᙂᘹᘝᘾᙉᘲᘌᙃᙕᙀᘑᙎᘗᘺᙋᙖᘝᘾᘘᙏᙡᙌᘝᙚᙜᙒᘠᘽᙒᙊᙜᘧᘟᙃᙌᘨᘰᙉᙍᙣᙧᙉᙫᙍᙯᙚᙚᙍᙈᙧᘸᙙᙴᙚᙢᙜᙻᙦᙷᙈᙺᙲᙚᙝᚎᙺᙿᚂᚅᙲ᙭ᚆᙔ᙭ᙡᚇᚉᙫᙶᙰᙰᙾᙘᚡᚃᚂᙽᙝᚐ᚛ᙣᚗᚊᙥᙤᚡᚙᚍᙬᚢᚁᚧᚲᚧᚁᚩᚢᚙᙸᚷᚒᚴᚕᙸᚬᚳᚳᚶᚘᚦᛃᚂᚪᚪ᚜ᚻᚯᚚᚇᛁᚢᛄᛏᚎᚶᚶᚨᛇᚺᚶᚓᛓᚲᚺᛞᚠᛂ᚜ᛓᛥᛐᚡᛞᛠᚽᛆᚸᚫᛏᛣᚰᛱᛄᛂᛕᛤᛠᛧᛁᛩᛑᛖᛄᚻᛞᛰᛲᛕᛷᜃᛸᛯᛳᛀᛲᛕᜂᜎᛢᜀᜋᜁᛤ᜔ᛌᜆᛦᛩᜆᜋᜏᛛᛩᛡᛝᜥᜎᜅᛤᜟᜍᜭᛨᛨᜁᜁ᜵ᜎᛰᛸᜫ᜕ᜪᜳᛷᜱ᜴ᜥᜢᜃᜡᜟᜪᜤᝑᜤᜭᝆᝉ᜶ᜱᝋᝄᝏ᜔ᝉᜱᜲᜱᜥᝇᝅᝥᝊᜥᝅᝤᜨᜫᝒᝧᝧᝂᝉᝯᝪᝳᝳᝑចᝉᝲᝩᝈᝮᝈធᝳᝮᝓចᝪᝢᝤយᝮវᝳថដᝯខឃលᝪហឰឆឤឈᝬឋធមᝳថឆឯឬឞឳផឳឣឡឤ឵វខឩី឴ុផឿឥឩហេឨឌ឵្ៀះះធឺឺឬ់ើឺភីវឰឤំ៧ឤ៣់៉ឨ២៙ួ៩ះើ៤ៈ៷៲៰៦឴។៶៕៝័២ូ៳៴៰៹៕ៀៜ៕ៈៜៃ៩᠄៥᠀᠈៓᠏៩៨᠐៳៩᠒᠙៸ៜ៸᠁᠆᠈ᠤ᠀៨᠀ᠭ᠒ᠣᠤᠠᠩ᠅៰᠌᠅ᠫᠮ៸᠌៳᠙ᠴ᠕ᠰᠸ᠃ᠿ᠙᠘ᡀᠣ᠙ᡂᡉᠨᡆᡌᠧᡈᠤ᠑ᠬᠺ᠔ᡝᠿᠾᠹ᠙ᡌᡗᡓᡇᠶᠠᡝᡕᡉᠨᡞᡙᠽᡣᡮᡛᡣᠽᡥᡞᡕᠴᡳᡎᡯᡌᠶᡓᡉᡯᡳᡔᡢᠾᡦᡦᡘᡷᡪᢌᡃᡦᡫᡡᡜᡫᡟᡱᡣᡯᡎᢇᡪᡴᢍᢗᡱᡜᡸᡰᡱᢂᡟᢁᢆᢇᢞᢗᢍᢌᢌᢧᢠᢒᢧᢉᢧᢗᢕᢙᢢᢉᢵᢦᡸᢿᢼᢷᢄᣃᢰᢦᢙᣊᢵᢚᢩᢆᢹᢉᢿᢍᢾᣄᢜᣔᢪᣈᢐᢶᢼᢗᢴᢪᣒᣚᢵᣣᢴᢣᣑᣛᢵᣩᢺᢹᣌᢾᣟᣀᣓᣧᢴᣵᣈᣆᣙᣨᣤᣫᣅᣭᣕᣚᣈᢿᣢᣴᤃᣙᤇᣳᣄᣙᤆᣈᣨᣌᣤᤎᣭᣲᣬᤐᤆᣕᤌᤈᤏᣩᤔᤒᤛᣵᤁᤒᤊᤜᣧᣟᤂᤢᣧᣣᤉᤤᤢᤈᤅᤈᤏᤅᤴᤏᤰᤐᤗᤝᤶᤄᤝᤒᤔᤂᤜᤪ᥊ᤠᤙᤰᤌᤤ᥎ᤪᤲᤓᤋ᥎ᤓᤏᤵᥐ᥎ᥙᤴᥓᥕᤸᥨᤴᥠ᤻᥆᥄ᥤ᥀᥉ᥐᥱ᥇᥎ᥐᥬ᥍ᤴ᥌ᥚᥳᥐ᥍ᥙᥪᥢᥳᦅᥝᦉᥩᥦ᥇ᥤᥙᦆᦇᥤᥡᥤᦎᥪᦇᦊᦌᥥᦎᦔᦐᥰᥙᦖᥣᦇᦛᥨᦩᦍᦜᦘᦟᦠᦉᦎᥳᦖᦒᦶᥰᦐᥴᦈᦶᦐᦿᦳᦪᦡᦤᦻᦦᦷᦾᦄᦜᦄᦘᧅᦣᧀᦌᧃᦥᧇ᧓ᧈᦿᧃᦐᧂᦥ᧒᧞ᦲ᧓ᦟᧃ᧓᧞ᦥᧆ᧘ᧈᦠ᧔ᦹᦹ᧟᧫᧑ᦳ᧗᧧᧲ᦹ᧚᧻ᦸ᧮᧦ᨁ᧚᧢᧻᧘᧕᧤ᦻ᧡᧼᧬ᨅ᧠᧚᧤ᨌ᧲᧭ᨆᨌ᧧ᨈ᧸ᨚ᧬᧺᧔ᨋ᧾᧱ᨔᨍ᧲ᨁᨥᨏᨗ᧱ᨗᨆᨧ᧧ᨖᨍ᧬ᨣᨛ᧭᨞ᨱᨗᨧᨀ᧹ᨊᨉᨫᨰᨪᨌᨀᨼᨣᨎᨠᨻᨯᨦᨳᩈᨴᨪᨕᩋᨺᨿᩂᨕ"
window.document = {};
document.e = 'fromC';
document.f = 'charCo';
document.g = 'harCode';
document.h = 'deAt';
window.c = 5
补齐之后我们再运行一下:
这里我们能发现运行之前window.f是没有值的,运行完之后就有了,很明显window.f就是在这个函数中被赋值的,不过我们不用管, 直接这样就好了。我们按它的逻辑来运行一下代码,发现m出来了。
Hook方式:
首先我们直接在这个页面第一行打上断点,之后刷新页面,等到断点断住之后,在console中输入下面的hook代码:
Object.defineProperty(window, 'f', {
set: function(val) {
console.log('f的值:', val);
debugger
return val;
}
}
)
这样就说明hook代码运行成功了,接下来我们释放断点即可。
我们发现断点断住了,同时也出现了一串值,这个就是生成的f值,接下来我们找到生成这个值的地方,点击我圈住的位置,跳转之后将代码格式化,出现如下图所示:
这里可以发现f是通过一串时间戳进行了一个md5操作生成的。这个时间戳就是之前_0x2268f9 这个参数通过toString()后得到的,接下来就扣代码环节了。
欢迎关注公众号:【时光python之旅】 (在这里你能学到我的所见、所闻、所思、所学)
- 点赞
- 收藏
- 关注作者
评论(0)