From 0d1453c64aa796990f53ace4f6e0003dd9b8f716 Mon Sep 17 00:00:00 2001 From: luzhisheng Date: Thu, 2 Jun 2022 18:03:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8C=BF=E4=BA=BA=E5=AD=A6=E7=AC=AC20=E9=A2=98?= =?UTF-8?q?-wasm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- img/85.png | Bin 0 -> 20966 bytes img/86.png | Bin 0 -> 26817 bytes 猿人学第20题-/readme.md | 41 ------------ 猿人学第20题-wasm/readme.md | 64 +++++++++++++++++++ {猿人学第20题- => 猿人学第20题-wasm}/案例.js | 0 5 files changed, 64 insertions(+), 41 deletions(-) create mode 100644 img/85.png create mode 100644 img/86.png delete mode 100644 猿人学第20题-/readme.md create mode 100644 猿人学第20题-wasm/readme.md rename {猿人学第20题- => 猿人学第20题-wasm}/案例.js (100%) diff --git a/img/85.png b/img/85.png new file mode 100644 index 0000000000000000000000000000000000000000..a88899fd454c40c41d90d363460cd2a159562716 GIT binary patch literal 20966 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 Ef)&bcT>t<8 literal 0 HcmV?d00001 diff --git a/img/86.png b/img/86.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6c1ae1c5d03386b78b119a1ec1abc444479648 GIT binary patch literal 26817 zcmce-V~{1m`=HzQbWhvXv~BmaZJX1!HEr9rZQHhO+rDRhcmJ`t8~bVFo`@4!nN^Wh zm6iGGc{5Z_M)U^^77P#&&<}AjAq5~HU_8K|9tr}`qHlv211P{81jUu006$MCqYywH z(@|K>QPIZ4(M8|h7|7Jx#>$w+!O-5=*xKQbjpH?FH!t8K9y291$KUqG`i^Ec)&xps zR>puvARtD1M#jU|271<`j1YRpqvS$@qm=BUjO@eobOHvpqvR%L_QQ}MdgkNeID)^j zia z;;sR!xw^+@&-}^5@~c1^;~%ZqD$AC`ebh+hA%?{Ce0_T^E;?wFq+JUF$ddHm+U zTCDnQ26#^9#c)gK&v$LQ-p}?B) z6?76@|Abmg6G8r)teLC$z2&8m zi|(8Ad3*D4c0#y;CT2mCQ68JsjdyQ$O)*+fFyP#&>oH%h$}fr_K=4Nyt5qXexI!J! zF@s4TG4sDWK(h1^3yuML|NO&UPRcCy@0t5>2P+}o(gx8UPAnujnY1=CpbL_n!v!Fz&E$2;+B@4<)1d8_!ee5AUC(U-2O9a7VoY=&w${E7WBYoA~o;1l^$d zeKiL#Al%0&CYJOI6OcG*BeE!eeRv_a$2+YA${bYbus*89Qr0vn?r?7gmbF=sjmcQ+ zD|(7!M{C(~%_^Pc!ILuFqVV$aaCp5%H+9NSzgn)|K`n6vVgO0qTrFu6H1u zdr$H%P1>ko2+7%Z2TKf_QysT6iJbF|es(r^z2KUydDvbSK@{gl@JbyWA`-9Z-i45e zOhWyBu!4xpNnaFxg`2e#ADjX{UdM9Mw+zA|A0|S*b3QhHgnPW2qLZ$*^c76(K9eCP zew6e)m*0TNl4HZYyh-DZLQQ&uKjHB?)l&c~gdxEoH?kZ|{}Npwb^h)Ga)% zr_@=F=YtHf~sWWcLLW>aLlGkmg zO(8L<8V5Jkqo%tMPk@oSc0%W+H+pPnbvu~Q@U{86R_yQ#+Zf?EK?_j}F~-K&o6j+> zWIcN&DGXij_0A<_C)TQ83}>i={w&wtw#3;sb4Pu2gaStW_PJtbq6&ZHgex`F9*82T zNnx(J`alji=gxSg1qvo#rS21f$G#B6Uj|{S-?gM$xjb6g*2Az#wfw1^I5Y&~Z?%mq z60&TQcm(9Z2yPz+4oL1jUI3lx?Lda!(O-`0;3H zq%qf_!_W)OU{3qfCT`G%X!o8)ax)APsWTS1m^KExF+{Ec)rF;$R2CYD#19-u`q)|@ zSW~Kkl@}4l3wSC<=jwf<)VQpEGNu`h@XPIM@^1Dln)k=PHN*x=g%hRZ16)pT>v9_Z zaYJI&llsz=JyI`wzQ#-FQFI%7ws@4l&nhC4fX44zvD zxN!8I6p-5(5qYEbJY2fiQ{fa=$cM39FMHdYXl%iuaG_fRLpFSb5Iwn^L-+l3;wB&l z?7AVnRv3zqEje_{$n>x3K`xYp9PY5#ip&qTigDRGW35eS61`TUlcvtY(wAEC}rGPL)Kpp9m=yBid* z_9)Mp$9@L^n!T|>5Ji04g=)8v-yzbjLO{^L#){@%_graWn3r}V&UB*$q@a1BjheSY>s6tT7M}=|M|P4gtIHuia|W1J&)h)JYfBXVx=}}^YpC=yJ4qEXid(Z zlM_^56C#<<=anyj7E8c_B=y(E0~ze7-&f^~Iu#;zBXGMwJqCy^M|8^xH#hO)#T##$ z16hnmlz~J*)`bS_P!ZieK1NXaM8K6GgE71p=KYJd(qW-|$-Lr|D4ug{Jan~|sFbg5 z6Ii9FcEa9KjmsCAk}n~7tPsC9GPLY(sn_<^B+l5{_@G!<5dr=jzil?_W35Xiw^ch< zFDD%AYB4{Q;+14I;gbft8Vj!1ul^HxwEm=hg@i;wN3hCpb=L`I0% zvLFYan6h#wCKNDQt#N@Afs z_m}lAVz%jeWZbwkoHI?mhwr>=gPz$!U+*+v+^tCn*Dg$&ksZ$84QJme@ORm>baig? z;S-Q@N%ATRBegEN2i=YMU#!o!gI9xaWa+pz*)5bjZGur%?kQ$AxPMUgF>C+O_)j&T z5vT6b|A8>%9ur$ps23Sl7u9#hvODJ^)TA2hWlQ1J--qgS^pj4H_U|N)W71Sh*6vBrzT~x99$SVwN9JcP_OE4MtO-SW@^fW?Y4*yAj&$9e1KD?uCWO z0EC~NmBGF087^ADiwgCn!>qx-GFzL~1V;-C=9lgd@g8FXVJb=RbK^`cMYhnTV-TRp zt-XYfP<{Dlt`?x9ZR`FienM)zfAt1&jff{+2o)SIs-GX7e~@?0u8AYSL3+1g!^_u6 z%8na^D*kD27NQnvfIW~Yk}ebo2K^NU1|Dif>O*c_o-yvHncg29?fmc)Y_cG>d{MkY zyG!4?aJ4c0R^57t0opo(a~IM6pD_VzCMx7;GVT2kwC??S7^Z^huTe=xki&)*iPfkf zEiMi{I7muDmX%i^l#%wTT3b_-BbiL=c&d>3^tC6=+FK?oCT5#ozq)v44t)3cNXW{X)zZ?$u5r9HJU17o)A@08fB(C*fthOllu}$= zoRESdaBOVM8BqkBQ7)1SfyLD*%}NCqSkAD z$rA-EFc zjExN~3CVKV@aD$GT#x6gfB>-l<6}|B2mQJE^z1)ZBD2aTt~Rc&HxPft!7-XAS}A3Qx=^p3>#pX&?{4zeL#Y0Rop(qMAfvvWCLm^<8Z zI58qxSXkiTT(r9M37t4PdE^NaiW(5+s$K(i>9(iM!4?*fkjEyc`wJ22-+dwg%@l^W z9+Jh6+MRA?c5H00;=Wf(MQ-ROW<|j>B4EtmBOtguU91MHXwH^-K|-kDyL!LeAbNVb z=c$xq@_AFIvszU#RZeH|jGxZ??Cj6S_w?{ytkzd656eZOV0(}!SfvcPZg+i3W%E|f zK7PI_`xPy#Nl^nd{5miG4i*%IK82pl1KdHM41 zENpxBx1T`cyx$WS?lZW(YU^tCKG!-xBuEr6fjE^a;R^r)w&rR#xTgmi+bNZDnk4Ey5RNH^ zD5VYGZnhyLdtO_LlTihjr8v2{gigycnG)9VY;Iy=^!Bfd4X>@OttnDuARuo9@uNUB zwY6k`nZL2I!MPhdeh8Ru^)A<6D)@?uE6$CDnr!HC@iHvxS34&o1Mg(D4#TYW4pkaV zy}i99ELebfTr5Kt=Xj@-2?cEp7arAQTP6DE5B=|8c(cZ@g|jn0*ZkR#**`|}MUx2$ z2@9dJm+1w0f)*;>jjx915>JP!vEA3ONnW*4E3h!`Q5i!7%1G&58e_@lhC5Ld5v~1A zMS&=V>F9U!@)d6vu&fyg$egT5&3vybA>r?xv>_Js80@Y$a_QXBot;A$PV({$l!?ll z)5!c}@wp1>@=8jcn@yGCviQ13+#Jz9oez}ejaZ+;JTCCqGRsxk=@mY#e9_k`KK{ur zvIPnhWbvW;#3DO~oAL3Xp@0SZ_B@^}>}ZIxM19`c%xGH=Xtyth9Z&u7J_aR42M4#Sf3oI&akfd|qOKSi zIy}bBX@q_lfVUMbtvfC0%@_LB-5qV7t<*N@qRr6bu^El%3H~nknc8e~B4%bzA^Z)o zoXEy0fQ4DJ(ZWZU0B=u^5oSF?t-wU=Wt zx&7&9Dl;Gjw)awnzt_7~B_$-zcvFX?@g>dA%w)2^{P*^dn6X$itc10-$Z2W2erVGm z2ZfU*n6oI{(PJubq#};q2zZHaIcD5T=t2as$Kp39GV(*uEaKXAgV#rqqM?u5hT4%Vs_l$nVuQHYc& zlTqcKztF0|7XQ*f+L&EONZ9-G_O^4rzM^aME^CO4X~zH-nckPr6D}U1F_~L=9*clK zII!9ulO{3x?ZuP6Ct1zfN-}7*Kz-HF+y@AlTw>>&k&D&{8=0EMXJ$r*hcihO#?flG z0omT}2|IG)y1BhxvZ6^!k}{d{2yWCG!bL?C1Q(MJM-AP0c;WyGf6PZYin!IMVL7RQz=%bGmHvK6!3K!$jyp5r{_8m_ zAkM_PVNUQ9>g!4EZ^$_mnBUW29_w{Z$mPF7!Ha8jD6mTzp50c3Yh7PJ4_seQnmt&tV4vsXVk~d>mqaF!xl5UlNXUroC;wkqH5!Dp&pL&n`#3risjkZ>6y4|ERBrqJLZ>CuFT5w3&+Y=>0doxjsO!9s?!HAdpHBq zR27F5+z8!`;p*0haiKQGkBHQ|il~R=XF~$S{OM(T!i*k$jrV7CLb63F_bada^VMQU zkTQkkdYbf%gQP2EUv`c>qO1Bc+8Mj^FX&-lmp!lKYutvuxIpJ{Xi=+`MUvM~f#!9&~`-Y|#B5f{VPMS~gAVmkJG zEjqQDT7NN(r9!hgXu8;qD1KxjaM(4=FNmC7i`gK-QAFi~icZEYrEs{Xj0uAd(`LsF z+;2U7NRw<$-mRjtGL`X=7f`(J24}N7QI-l{Msf^`jY#Y_Kcn5Km$B`OELh4^vJYL6 zs6q(8q_(S%oIIZ}!BvLs4F(r8Ih{Ekd1uQIpSElSq#PW}sT~GrMz#>z4UX!FI!^_n zMFK*Ne}#YNn$c|njGu`Vh93Z9b*cJ0G{fCg`I`bs^er-~XR>TaCYEE@1oC)#IjcQq zf5n$XOO$(P^XqYgx~D80PTLy`TqGwPeV>@eEU8`z@cD-?F<4(^GK?5I$Tog=hYz#6 zcD(kZL4hrb^={0bF38Lo(qn`~%kE61HlR)Y0an&Kv_pvIVMpgGL|QHJKEToJZP%=Z zkrJNJiOY8N?K0EVb*iVgKY72#eAv*efT`Z`>xwDJz=@a)L(tV*FUH^doXe;FzD+%I z;>NGoNx5kN^Fy1bP@?FxKMZ>%WSg#jLHipK5nhXPM7Mc*v(LYQYgcI(Xus8y?_xY?q2|{IgtKIzvaSW+hy?+93o7n zI@e~&p<_}gtl2TrLXpS*uAU5fcPSKr=#!Z#^`aqAUA_VXeWep|OPZM|#W^q`Rqm#O*GH<& zuXv1IrPK!?nLKB+B8@MxZR#&CBKdq5Xi@|StNw6nm9E_4S?qCXxGI(K6wR$K;ty9n zC1h%hJT-Kb4`#k2t=Qo0Ug?OzjSk?ejm#2Nx}l?GJz%wj{2Vo5z0?-P1j5n+(IJ>? zrZWdW31hAI*d{kR1zt~$2*(Mxx+FhLG*Cd8JpL1!`_@=N=i6HkZTBo{CNHBu$Ms>$ zeIz?f44XDFem{h~LgQ~-pKWBd)|lr- z=6u|Ge8lAWLQhT8-Y~BnIZ)*u``mQ2++Nhzb_XUuzI`;<>fmM=?i=FffKd$*gE%vc zemVPn_tbsF_aQ6CB*l`zf#6p2T=<^)`l5@B3pAgq{qds63|?fwSpVo# zS-;fNhx`n9b0?7sX4)L8D%B&|n-K))Mk&?gKoZHZuG+j3ju-Y%!?dP87s(lvm8hA$aP7yx z1q&E1wm6a(x%hSmRyRx{hg}^pWqI!KJR+vp%d5Y+;9)SA9R-#>Qs^DftkHZFu31Ia zpzo0z*DOq^ewENMnSRCJA4{s$8BruAqMt65BCD=Zu6GP1-%iWqMU%=Qjh6+y1!@@h zeAZqiQZs;73Md+yV~2hnS>;*4-W!fG!wt+>T0j~RfI~5_8dcz7Gpd-SCDf2gEnFT7agUs4Zl^yW^80u$P&=kNC&&D`%HN4v zhy2W^T!BmxGK?{WGP}B}jjwckc@1$rqKfqeqa0RXTeS1Da{S{uMTH(rk0yNL($h7` zIemSBCsOa($CGG|2SNwVn^b?HaI+pmTUuIT15CZdyTv-XnR9G45G0yc=vuWO+5Obd zYP@E@a2Q$ebf*4jfnu^561 zrRwO1ocny4OPljI8@RxP06le4qk4in7}X>XII{h%S?LdR92*q7y83 zR2jxLd1gaB%hKGT0p-KaAM^lec@C^?w-=Qv14VZRHMpYoPPoEFA`{m$iplMsuNImF zZ3vX-pGWdi8Wnu`*WOT?;Y4*Zozq_x9VU^G{HQ2@MOBDu3u!#OOULl(uI=HgwtXq{ z0{J@D;lhWel-~zktruEm&mS${+zjK5)4jJ=)Et2#UI(ti23LfIO$>;Bun42Q5!ifs zAbz`9v37;x-w&~cMlvFEM(YghK|`o?wMGmaokR%*wOt$GVOi=;C#ltcJshH@P*>J~ z)SL|Ew0r(qX$+SlmP;Mzt(+}5NLG;75wf=HKbGIwwU)FK;WU}WO~uB87dA3kT4;7G zY~NI8te4hX4M#NO8T~N+!L=_NpN=QnhsmRI_BI-F5aSbquWCco1U=iyi?xx-O+mpf zvH2&F_@+^kypkXU`uTh4fY-~e?mDWgU=2jRrDNhH>(r932H0QmXH+8e!J;{Vuu-Ns z|LVK8$;ZCMklR76$F)67IS?iaj!!VIXg3Kb3xagEa0Eh$b8i8yzg@E1-j$k+!iI+s zdh1WLSI@^;Q6I)EjRknD10)WWCYteLnnkc(LsR~8xM9Wlx$N!Bzy?~@O!fB3a&7$9nBbfMp+r#~}!a2s$nQJ5Vt>YQ%PeCh2KT890pO z8;_jDXJUFYG}5Vmu^gPASaS+_-Zw846z+Lwc0H^@QlWieTW3tqip(#=&Kx2 zdnCahPHkpT*2?Kq2&@GE$(qD__^y_i2Z_S|*d6Tg=Hw4U;~tN)ex-sUvlhkxyfzEnLTNfm;?2re|jt|%;R`hy0Mf>`PZ)%MZVbBq!p)Y zKsuN?DWVSByINiNd^|tPt@SCj#I$-l+gvk3DB^!O%bm zmt=xpuK{r~Kv*3RmHH_c*h`hElIn@DzAm3VCp(#*?l(Xu2)27lm)b}%?a{_5W8fqG zv$OaTY&EAnYzbNrwD^S;(fIb^e3-JI*?p(T2ePR{bJaXAcctj73w|kD!XhB(+QoYt zzuYNHq7%vm@YWQ)WwLoE<47gdYxH<+x<74n+zyo~snW5PN=)9HDqEgUeDm{(0|Nss zx0@c@9*sK%p-LnUKF=qVFeD{rmRv%OrZyV&80s^gZ@xMbC)v8o8P&Ob;AW#e$D4P3 z|0I#8waXm=rTtef04=J<0}NY*rT;0u_1?&tDqxb(mtYZI4ZPtSvXUlE zBYP_==JxD^?eDbi@V#*$g|_DlUka`ug`WI$oYFnC8kR=~Pbk*>h`NiFr^$Qn(7*|{l&l1^nfq77kpidVtD zzKpNxQ3P29>)m`Ap5HvM$b?3Y2AGL&C;d1@y?=PV8nCC$8i${z0b zZ@*s=x-u%LC_}Ql^NWa{Eu4M`K5qfsij1>-!Zmkla3xxDOYiXsYkWc}798Tm(SBug zQ7~>!zJah;gw;Pc%$P*yEewAX#8Q-Pzl0&e!QBv@FF;6q8F4q3Kx~VTtXfq_zc|b? zU|`|sdU1q4WL&vE&1iLJ<%pzAR%AVql9M+Zhi+lZ$;tH;4Bdul3omM^yP;#5A0rFz29wav6wTT{iNwTExw{Qm zZk|V4H?T@@xKB)|iubf2UJEN*($t;N!<#2^Uk=~hzW?06Cu%qks@R3j-J>=*n&tE@ z;RW7;6edbHCgjzehxHW{=5^!_E{Lf8sj00SDv%Ui_9KNN5Y4?4S}o0}yW_5}m7w9N zjU8n;ou`<`#$vm?@QYN45=f8g+U2Qc%d*~A|9E7+`+fw%XSO8W=ky zL+qPR67x)bn9`hpsUiDbUUs{?Ul~e@&e@NBxtj?N$Gol}br>J+xOKA3SCYreHr3)2Jo7AN}AVl6#cJ30Jx1c#8~E^ zk7Xw48qn`F&hTP}r|wCYgv$f(n*&k5Q)gReej4#ie2#gRJo3e+Oa54-^KC5Kv$uTO z_QetBw{5&q7_Ig#o#d9t^d7RM6}CFy&`b#Db)~bReNmgBWKU>DH>+Dge2z1-nweE! zjEJ>?Y+*rfME>)65e6xqD&0rccZV}Xy>i{RepuYPWm_zH^ppi3F05J5p%8DIC73Ac~CZyffWGZ z2a5e}jumsvcy&kffQ!EG*+8^Caq9Y}Ks=ekh2?bY9)wgsz)BwwjoxZnzy%9I{VJUz7us>2jQ;wJ6-5D`T2h8Nk#2; zo+DvI)^x8_$-wOiU8VB|wviR~Q2hY6+Dl%@trWhrnTHY@<6&6*rLHQbB61c5F1%+8 z_zsJX8x2ZBsuN=xHJ~0`IaQP6VV_dr{%@IbvUA412|Y7uaBs&rFcsY(3x~10pBzK!CWr822rn6J6J*=#CnCxcKqJtyYbL(4xBN(6!x7D&#CQU^#0}kck$@a+l`APTD#0af;JSE2IVto&w#( zC*(jaLSMewqmJ1T76ZT8CI2lX{6K(XA&=z~5VspIryD^`+~{kplsJ_tL|lakJTit9 zs{O6)#M*Ii`0<1chr{}pYeBG`jIXzUbMfp{SV% zNyj_t#2I$q`VqQ!^{*O&+fFQ(~(4rya_widu?ir2Vw^JW( z^_S#u7NOopg|Y@?$lOAbdSAWm`?5gMAu^qG?9!O8B1VGxN(yPf_>cG`;qKc+0))7v ziB%;pmf8dgJ~7{XU~j8dO_b}rfU&)i(*XgkqMr;|OMM9fb3=y*F4%(Kgk88iY37^= zWP4L?56*W&G_t18-$k|!TWy4a_uNB2GQ!$nC}CJ@46ok{l+#=Yom^AZ_lpJl9J|6Q zS8JPby94b@ziVYUw4%z_Xx%r;IN-Sdf_Rh*7Aj}HAiM0_Bw(!5ec~~MF;~$n-xy>#kuM>kgKmATNE| zK%yeiG2g9y5@Wgl@J`f8yuM##!lFi8fI%r$-u zJG=e<_Y9FeW4pik6vGVK5=R5KxF^~oJL)#30g>O_p3^kPEvd8mk#hl1i^gJvA~mUo-v{sNTd47rr6!zfeG&6g=l7DUCzLi{}zUm-_-}d z@|bf3?@b%7dLYFTf8_<{M;Pr8BkXPh1n}i{tm6{=wTEtj55Jdie6F+YkoqR4jZk4D zEQ}S_;8>_okgRa!c)rx0U(u7T(|9P{{W4PK&w2iaJ24(7pwe+Q9Ao=}rRSYRmgtHN z_gm`qQmIV5NyX=CQ>__2^K8M=r#=ab9^(}oZZ4`MQ*tkv0EfxjVM=t%(L%LjQN5S@ z7fPmIv!ykS41B>_wiX0M^Vs&hQ5l{mdw74>@|dEwvc%vh4l=5AsMS8!!!2K&Imn|f zNSwx1?&y5SM(bZy#E`{4h)?ywkDq9cS9&W4Y&N946KQzfAQp@S!6Ifmm}oO%t1rzG z=fw&$jpdAiCiOr(;D=`WLZCV3rtJCsRl8Gv#qkj;Z?{xlZNS$ZD5kP7B^_Vu{4im_nhrAbCoS(W5({|e~@j%Ibvk-KI9yHs)nLG150PhM$A6sA+j#&8lRwI2FM zU{+i)NTnYdZ^*2ch`fc>_k-1%GZZ59mJjVxB`H&Fil=g2@dax&(r%pVmqe+%h*3lo zxQdC0@z#8zic$I9aBqs~qwV{^8&-tpaY>X~Fv8%q?c(K+;Bs!)uo&lUsp`bF2^?jb$dvEFKBsv4V}lX2hzg>l7V^iT zaHOGh%vjqqf6wkKBw%M%e66-;U*JYYP8lLQ~f<}4(@j%GrH#aXXO4P|^=`_aLpfwP*z!Ag}S3WLtmd0o-{L<-#pQA+} zo0!Hg9f6--k&!mNRRw0zMYJ4ckh^<#+}f@MR#b){J*3>|49af+LeYP4 zUX+thih|}ak1lmB<&k$>(%b)F@AuUDHNo*0k3Mr#AdMuBp3bMBMDG2^@L-If3WeTA zZ>gt+`y+0+LZ0BJ1(r_HCkZN4__2zRhSmPUgqgN4Ro{W{IE7ILMWJd6O-3Yn`_u2| z4HfuH7!vy%k|8=AX>kddHOZW+ZI$-yl}u0!PU^p0WDxwXGOWYo3aO2W+tI=FHP;w# zb}4-hdKNB?lU<403=!Co&o_{%k8cpl?4E^{@GwnB4La`(;x9Kc>u!x(O<&mrj^-LQ!p%rvjmlU6} z&)YKu;((b{6M@(HTPYZIYQU*pT3t_AOLk+q(HF(jiGhC0G7X=kKZkdCa`kLpG#)O_ z`C^k1)YXH`q+6vkTz~GxkmwygN716gn?Nv6%2vH6|#V#eK>z>P*G?KX-+5b_aoT0_C+v>By)PH*lD*te2(tgkaRR2(ec-^!0 zCXPm{s4u@Q)hwAA10Z{18Eq2=%uh3*ZHEzx4v@UqfM75l@NZW@zzu+DI~VtY^mT7* zwSDJL(^pxDMhgP20E?;%2q++|1_doE$y!{PL?UDSp zj+i~j%eYi+NNu*J-dr|r-T^&94M`!Wlc%oljwK+*e^KHb(G z&al^M71$&sT#j1omxufxB&rLJm+pMoG`GhmZ;}C#_ro&K>f7A|;e1DOwg;+tf4zHc zS;$KPZ%=X5d+5yU3I_p7rBYGQp*5aB@w|Js*7+Jqs$Hvy)f%HImzg$RLVUSm2UGSp z%n*nBbRY+6IBiTD6Xj|$_2jn}Pz(me%F}lWpB2cy=|{T1GeV7RTDIGFSQnh*YJWL` ztm)b3{R{Vzrv-N%KS4?EZ_`G=-OiW4#oStxM&qyZU9NQ|Ez}bGnkrYpc$x!>i9VpQ zP<@k~ta76agX3&*Y{_MSv>_R1&f$XL7fBY!Hpbg7DNwY)C>35V<=~yGtbf$K71m$2 z|Dja^Rz@G0nr$4r2YhLB>$ua0q;!o{Y#oy$ziN&Y(*cT??2h+Ct_X)p+VYT9$vOuN z(9GQP9;lA_JPx&V;Tj7*ldie|Ws9X6>rE`)?4wXAA|`aaeK(jfM1UzM6buvH*vO(- zv=Iy__&#osi)Ba~OF9{jF`(7WKAyHfcqJcAHlV7{{K5<`WbBRQ0{R)Czwj%!tHF1h!Nl`iu;`};>dII+ShE3}6?DK%x;qw;q z>vjtr>Wg*3p;3d6E}Ea-4UUq6j9 zAL@RkaS{HGA6`0K)_zQ_3n?Cc*}2e*{4n6H{eBN=UM4pHQzDE{;W@Mx?97x03>AA# zoD1)Uhy>UCr|Q9oJ8E+8W9))6U|89WPx8IrBm6GbOzjBX zf=OLP9S*u6?~}wEo3NpTsV|_g92y1S{AkRn$;Xl8HJT9PCVZo74HkTlEzs47c(?rf zej9YJcU+*zI?bI2Np{1o_^B!dIK8%Sv(`-`l1s44gV>?RAYULilbNm?!mn~M=X~5kU zQHVi#NsmM<{MOj$JD8_SS zGeKS_penD_CGiqF(35zqQkTx&bv-v^w=d!>ZCF?ep1I*~vp`9?+h1*`3!QtjafZ|- z>M%C?$`bn;G~wMj+#kT_hKHwPDs}-;7Y=d{gt&{MBavkcvh&usyPKa(JFDL!r;db?$oF^14DVxQ2rR%^~ybjLS3LA-`IpKxUR18|OO&~4jAcm$BqWIaw~goJ#u zTn(C1Prx7`ZdOh4kuflCiZ4-N!0)p%r^{_R7Edg;>hI-$p+sVfHyn@;#I2Gh>8LH@yer6=C#@j-2AkLKq9M$G3A!UWq3bA99MsJcKI#N!R>XBVf^ zomuHQbT<h{$ri#C>3qI3kZk?$%0yEc0KW1-U0~)p0c?M z;DKNXFc$P^`PI)3O5or-v58`qr!1VEOPxwzu5Rm!DER(O{r(tiY^s69pnhX)<{KxE z?yR33wWD>?d^SSWHha@EDY6$;Y7yE>Mr34ja*9T|2zN`}=(pL+Cj03x3^tzeE5Dd> z?@xrOv-I>1)5pauqprk^O5SCTa(f}3EJIn&Wp#CYN9SOufWoce+Qx(ZwA)9RK@!Dr zHn5~6yeUu*g%8l!>OgO7n+w^AH$NhOIrR7EhD=PPy(LvSHgiduG(l5)Fc?&jr*>E9 zn|_$t&+m(~=MPJ0^I^u~+#%fVpGgm}61FWLzY)zC$ScSgIU4;m^VlXFCxUWGcdVO2 zOK)xu(pw~I%p7ac_ora5iE*XL!SSuu<}?ErkZSp6BYQp#kN0wUARSFu#EHe16lW25S;3s4?7v-TC^@wf&7^HEz7i6}&uw|(b~v6o0%XD5_d-f?*b&8&XM47- zR;j3%kcmd)5LWnnw*d@896~Cl`?bh6Fr*z#slB@o5#gbe=v2&42F7Z2&!#;ylS|Hl zce_S~Tq3 zJFg0fSx}gax9xtO&o+TTv`+CbfFyv)I|C0Y$Z};*jBBmz)!b->lu6{ksTf74ak?Kk z^rdJBzc7^w2dUg7g;Bg<+Q0Yged@;wTfJ1Wmx z;K&$3M9>pUnGOwSM8Vr-KZ_4t8uxYIQzBOLNUO<1k-1NyXV2(35nahvrBPGx@L6~> za?Xw>Jnzw>gt-V!0aJ&Z_^@s$mW|;v#**xQ+8Hm_F;avzut&v&)^f}Yt5++r*FFm< z{#w^+??RtKcez@kkYUp9YFQdM_I7#lnI!z=j+KQ5AT2>S0Il^KqqR*Q<8o=-R7ci1&eJ*AE1tdTvCf*7BJ= z)fRnYY^iTsWKor2MPRYcYXgN5Veii~WX8w8P8jpqIcw&ngQJb3FHuFo*mED+D7p|a zbDgFLQmYIJAb6V>6g+J~#_RTJuRt^hoc|_U9ln3HlS@J@-wbTbn6en11tuF&^rB|c zvO0Mr7%ULS86bTFAIOdiZ&&Da@peS{NsKCRU^VKE|TBb&x_m3`VQGnD@? z4AsN&e`KipfgJyT@zd|^t;}Fy?Mnn4pME${5P$0aJp!1Jy*VIg3PA(fRLQf(g@ube zb+d4%c`2XGr^~ZR%g#a*Rcb}1_^~n4N#?;H38Vu3T+_qFZTku?k%e6KzA>wY)mp6A#hjDkjWW}PsogztRq?(D)c<%Pfj6>DrZkCsi& zoh;L{Uhzk2Xa)|WZ)!M%oc9?z?gIn=!&M(1oYUOwrQ-g2~SD0a7)8xPgi%wm-NmIe=7`D zb1ryYPF&;M{i7Iq04&vav7U}WmR z&}r)98^X)?2c@hJ+Iq|3JlJn_hO;`0cH`Efo4V+vUjEltszeu{~w6~d1GhZ z@1LWY!&z&NYE`YOty;CKp6A;4T}Rl>-s%^vW-_MtMU^(aZ;3+QOl8Qd_QZ-;y7BNL zJP#<~h0~G!B+x?H)fgUCh%h@4f)>7M27H!(4t~+NLkH)ZJ|)4dwz~6z7iKlXDz{gz ziK~R*|DgUbvp2H1A${ukqN-$n{GeA?k=7fwT<}SHr#IC&61UOHR{c(B?iuUi zT|(Ba-B?@$SHiAipEq@~+7cf+LM<9ao5h-C+#eTO?rHehGlbMN;bD|kQ~C#5hn#o3 zB6NY1-<-80_392jWJBh2^o;n95XLie?CfvG@5QPJ59%yvml9vjXx=ySjJHK-j$106 zK6%hir;{LgXh*)GI`(wqjP5YSz~K@+suA82_SVj1+@1E6152)c*ijI9L_R0P>s(Wn z3KUMjLOHHHW47bgfnnOWH}ZKZ0^oWEhaqu}DkMUl1klnn_;eXBLi>@pekMq!dH8#= zo1#RdSor)TN(c1q4t!sI89fONPx$K(gU%KqJBDDpT^g%yHB}QoUM8b64iuYsV%ASg zXNgZow0Abq#2jsyv-dF`ggd@qhc4cYQqs2oc3KvJ*oiA#Lq#r_NQ=>a`m&Z(;6LeCjt;@6(4PiO?Y|d2G$X9_k5xg22 z>MB^1y`1+ET39n;c5_b!o5adrZX@ zYwu$U^1Czrnc!o!6%t$$d9Me=k<4**Y6WRT>KtHeDZ1c2a!?~iNqw=z#cac(5MHi= z7rn7&)!-QRIfn`LAT=ounh&TwjcWG?oh(`jMp}qee5NUM*Fwy;63s9l@ z3|}PV2PEu29eDAN7YK?xjSpE#hb)OU0*hg=FT;b2X_s~1in7?iMHPRCY6U@!GtdJW2X%sRtT{?F~=7P5zT8=qou4~{o)Nlz!}OlCQiU)v0y?-vdpuW z`Ypa!Rx+@Roz)WeIe|OU)Bh5=l{j(vr}b~Luft=Q8_*r<49*?HSyv#tw5DxaOC3E*$ts{)c#Q@B-if%d*{39r}0@X`{ASJL| zokj*PS zP1QuXG5(l#X~+;l%O)<RrLra z1Lt4hHOLR)3)LsH(^6r@oGy0%(zndu`7}s@b91z;u}h4vi$A^Eg$LsP#)mR}@U0ah?`p2T z>IbW4rM2V? z-B7V^S(iNubG0;oggAVVAfTKcvD;57Bx(+-XMpe><#TvWX=IwQrSWTwZl z0o>$yUS3nkXnEY2rG751|&Cv4eVH31Lt$N=C7eb7B^V18A@cw7N zXc5V?2(eiI@&d+16BK8!D;iW>?r7@{DY2N2`N{-c(Cr#Cz?q8B^@N=?-*v=(z(`2- z7)drPIvcrka{5;Aaxg$Jm@*<($ak8be!0Et#fZayzPUu?I+BF5!nFqm^9A(F4GZ<` zki$()=TT~)wj4k_=T8f*chM0Q~4y{2^LL-9$!Z7UMF!qt^h)s%F%QZp&JP$1Gi7Q{q$&m}5PLh;G`+ch4Zv}#vx)w}vS(Q) zTBxF-qnm+E;c3B}D>-3u=!BLRvA1r!VKN_ZI3xALiw@m~Ai(zzZ`-uArovIK^wun> zU59`>;JouC8c)Mk_4(h&V1YC;!u@n0G#o{r2(*U%8J8%7%ayR%)5KX+c|D**e@P4SSmYz5+4%=It+Nn zmkZsBNpI(qDM^ZH`MR2+A7eGyawJ5l8enP~*}g`PoklSNb9tq>tom1V+*{YR*KOxI_nlmnKb;{uBT1WZ``@tw+4N>7Qpuy*coe@9oKMBUN&_7=`g z%=O(9XhO`3i!{3mAc7}2vrl0ZU<3|cHxMu3pI74%)bDh^}jLB<-|1=)Gnw1x=V&pa(wZoBkBCyln zuqt`j{*Wt&Fvyp5FB*N~Mykal+u@QF!}7})ieq5SIH&Tp)Y}dR$_)yU(F6GaBev}H zP_j97*T}EVji8|mlF=n2ikm<|aGcJMGfhNunJtbS90i{vtcye9FQ8p~>mL<9yObg@(0I)735tMXuHYXJgKwxdlGLKgnmMC&G+yUG1fvrbe-+MIS^|!x1*+{stTczp;oD16*R0L z<--$1*o@B@FOC?(W{&P56W=r>5f6MZ)H+6si{J|)YGs~U!36y~#-7$e|MlO#cD2pv zN@?`Qul6WH=r(F)KKy&LnO_k+=CgTSU(wJ(4jahE|CPy!d;T#JZABw4q4qlkb zy1jjjzHriTf_bvI-GT^SNH&EYxm@Clkwtp(x82-~`MQqJgCl^BIc+-MckG$mGj{;`~7{SV&TuTh`EUZwbLpVA+^do}V=pq*qSk*Y#k<0=MSZ47yy~vXxmR^AlP_ zjqibT($YWob0PGe4@`4n{{2(gbQW<$JG(1%51oa(@`RpAXlE8gr+8gfq z^LunYBSC02fdHmT6R<$n%Y$+}|iH z?skdJ_i6EyvUDl^$t&W!dncSEn+l7e4q?VEp#|`*(fvw+!^f+o9SpYf`S&dGdG`cf zyvhC_e-xn$;?jY?SkzY-Ic1Bbj5MxI3Mx2-fj!?iujlg{GIz^{uki###Bu^e%1TXW}Zjr+v z`n7!RK=JRsCYPhGn0uzwRQ#`C)T18*sk^B7VLNA-Pb(%!E}hY1{=M>xovt>kf8u7# z-hqnObEv$i`@?jdw)3+^W~Ry|TYb5*=1`_Df&q{8X$Ss$)-52wTh(9;Sb5^uf_~b5 zzJD2%-?K3fw>i``A<&(kw{-<6d$=Vi;ps@|U(jE6ZK~MqABo-M{r*)1nWm(pC*b79 zhBloUaO#I}0M&Uw>L36j1vU|A?PlOU+mC^pxgpL#moi(R96YbpSQMuGHkl z7vCGc?}p#V8n6_P2EKQ!P+v`!W(k}I&`T8X9PH*Qk{jPhl-9eDfzNpaS-@~Dwkx<` zJK2(3i^wVPOR`oYDgYR)Ygb=eMWO>I6Wf#DnoLB{LgMol-Z+AYA$E3xZWUI47*NoP=o+;%K3XF%VWij<@T!MA zQGNeD0EQI`w;VOKSLYa*&8WHz32B|dwR83@db*)FK!YAPjJdSCyK^Z81w!q%uX!|ACfycfThI0OH=!@8}#Sw9@sZRfc6^~=d3#1{bk9nrw7G!q} zH;2?QG1*$i8}~CfeG=KDG0L(gL~lD@RogtO)@e_t^1pe|(f@cq-=w7K+5~s0A>y=T z3@vz??Ia&4q>U}B?j$Cb4;#J+eX-ip9k}yP9}{C$aevI=ztZ2-ObG8B7;gKR5;^Zb z-L4Z%+q8~_Gr5mD=ZT&dg)GnhdWM0;cVF9ZKYu4q z4D?MkR_+mNp2n|+f`CBAdUc=4r{Dj4<}awZBt}O^S5a+If=+p1{vt?j zA4I2!BBR>wR*=4&&9>GbPh$Faj4S zOib|QiR(N1py2%J$^Ejn6!L{Xd1SvSK z^#M)dJ0xuC2ub+hanPNYjsw%>ijB{$tN-X}Xi~<;`jV5Am2q4^K~<)5-@$=POo$m7 z&!SE?R#$IdHp$O6*BTVpLVsfSY5+Koj(%wYwVs}UhE;_8$(rj1pLqs{F`e7%LXkbR z{&w+!@%J~?CkvdNjrYHRiWxg|z}|7IjtMxN!e9NHL@Ph}QN54{nxps^A-I4=Z;s+1 z!*@ooRky*7o}>?y@Ym{Yl%8;TgZY0#d|PVis@roL7?#_5cNe}HR{$JLxs?!-rFz{n z-U|LG{^u+y?^x4w-#Qcgh`oQ`Kphir;CqX?28MR>yo}fwiL?eESL(`dx{+?#RovWE z!Bvb;p|rL4W@X4ZO=9xPFWHbYW)8;>-nd-l6>fR_k^ye&NDW!(>$1@iTf#4lKJ!UG zYtYeFU~u16)n-yuOOB*xeNfijos;huVb^$BPEdpcg%=RTW8^-nG$$!%riA>AjeJ58w*?kO%%{!A(4Sgnmo$*S8@?i-9312O)H^#k*$Z~>vz_k9ihz*M1^8~8P z^KB``H#D$S9qsYCP<)2^n__az0f{6S^TJBsG8pU-%gEN3c-l!C)7a(LNEBpRx9~!g zW+hun=W6BZ*3r8tD9+F=Z#?q6tl_Ws`R1>82of?f`)B3(wr=Xw)Xd2w;qZ)vEX_~e z;_!IHK>l_|?g}e#RR7yj^z=U@zv*T6+&r`8{m10Kl~5?|QVjdci7(J4 z_LhyCDI3X^bX!LM3CkI3JsIhdgzZq$0%9+n?DLZw(=9K(2zQ>9a7cG|Q4flq7Fh}8VNy}{GdV7cS`6A`E|2G&q zjYppQwr95g*ZmPX0^QAKL+mvlAJAM$87MuQ!P}_w=&rG6pfU!kB<>Hv3yLbBYdzB? z$_{%Wq%%r42OB-Dvv%+p%o@L58Hc96qUs?b3p7$y`Yx1!Jubs}iu;7Yv)KK&GD-na z;`hu*`9jR^4}i%$3K;xh#uHh&q%=5KJr2MNm1i&U>{8SRO_*;fM+jpMpZl?`t22kI zIU0pm+YFN-jhHvoH0tA14uT`Df9W!gnlUP!4xsU23|SR5)R2~_AhFA45xkU)r(}J_~B`#)MJvB{o(r%UW?#RaX9^a_jjT) z{Fn|57B~3KJe<>%TTcR4mytb1{m!&d)W8~&@S5mChT;m*rgL~o4vq4CVfR2l&%n}R z3s}N>aYf!w6=AfFoR;c5vO{bo$?OsL{pk^R)b{q52atX z;oCL5n)p7ae{&bvt5jUy4CXaKx2ifv9D8L871c}2jZMy4X{SAbK;taF&r>j#tVt1w zNPcF1%>fTG4R2LH>z0?OPK7QkPfPU=$3^|xS#s`fSK>wT@{Fm@V z5IzP27;XHTUcF;>9==cGq^x@t>7qmU)SN{E?05{v%8Yp@h#ownh_|LX`@)%-ut)?Z z^}<42+H)tcQuFz7cJ8Hw%&~DIl#C9GA4lbWdkZ%xj0OU_3K5?PSW}P71)Sx>VVCP^ zN?&_hCA>_59kZdul?g`l%n45$7#}()NMzgK2){_yKJr%r@Nd57n=S&wB*% zvwK4`g*MYT0z;qDXMtJsQr4Gbp(Xg3c45Dgqp}txo_sYmB+4 z9;}eQM8g=huh%_;5d8KL}`F8(YoBZT1meBpaEV`Jr z^n___VY7d2s_|Xp?m}mgo_DB`WV)|zaT!KDTZ-jG+VX5s07qQihAL_AJQQZ!OhP zmM|$#$)e!*C3VD}p%_~yB3nEYKlFd_p{X6^|ILTk6zOj@q)0L0@aS)wv5l#+F=S2e zm*OuqVk$+Zvn5o#SA;Ft%>qY3BNvgolWZ~9XXQt=xttk=ASmt2t@WBhtN zMs>#;`1gu(dVLmETN1N>$RF|Q1EzWMqx$+GhdDRli`UWN$7iO;ey@hCl9cBC4JEWX zVJ-6Ow!ObOiiBnRmt^{Qr7KVxs2qW>&STCq8bSV3^Ld2s0a^T#>L60HF>Qd@A@_l_ z7+vn^3Ru?QOAw4n&KgJTIB`Tt=C{jRtJ-unQ*gvRJJ~jZXz7gl?mFCPV1FLbsy#?PRf!f>F6bt1_ zMB(?H0H8Kut?=TTz4nn8>b)Y~Tz7+@VATpmys#kab939wen~725L_&qrI{pVE8G_) zAjiU2=2JVtoKB)d=xb_AsJXzs4h}fD25;(s?{#Ws%^PYMe6^4;o7o-oA5$nfgBZhC z^4A&dlu;x(Qxo|TWS$6anjv*$wsIgKcoO=Syr{$3P!M<{MM%`YowZ?dP$xP40RPv zY2J^gNUThK79uA}14DdUlh$_XOeS_V$G%A*T~S6QKe`>~%@j4b$M0aDQA5lUmQCWMjq!=m*DVihVLR5gF#BL(C@B(>EYi7`sn>pWzC^_SPli92Dn z(8~&ss_9~li$m~06vDOyx%e2AEK6hmY&_+4fg`q^Ef`5bcUl-D^M#;XAjOq*$wG|>$71U z^~VpW%Y_m?Yc_`A2Eqd`|gcLTftyV%|b9 z%2KeMYH~fN{Ma9S!i6j01?b}s`c+8cP>&ZaNlr@ym9v$oeKy8{zp^WQ7O^v=4xRr6 zTi8=mz>%usO6EC=P*h6IXNc79{Z?@MbHxA9#OKfqq;7Q3=S`T!KBhY?goDx%TlE0426g7Rtsf@M z@0(x+F9bum_s|-`dj|Pbtoprcswr@n7`8?SyJ=u$ncIE2x=ME)dy$>^4$oP0pKQ(;v{(aG} zz(&fx?xlce*S^k}w~jSg^w&8SmV%=(Hb}2`)3pg4pXz^@kaABXCjMgkYDWKzy?L@m z&*7j!_s7#=Hv)Jo9?ij|&e{_*UTi*pZ!KFW74w;Y^#%d~M z2bW)4i>o;@#eo*1UHkQbB)mfG63-=i6C;rrT%1Ket_9=nbVh-V&KPglBO{U2HH8{u z2)3%Wd{61E5#=|-B5EqHjp5R*J+sjExAiR>C9ocL)D z&t-s0{74T)I6$e`7f^akiiyJ9#$!)#w_ki``R#0TVmdmSu>n6|GhXo6t zP&!(K#S3y;AhzZf?#>#Q73@E;4~Rn^IPD>Z_icxEcC)+BK ze1yx4%obm#M5Xweqz7%}8s7pQ1?O}_;oEGcwnm{=dNt1BW#y z@Zxe`0R!>{>Dh22OgG1$ILm!vfwqKy_vjhs)#4T_$_Tx|=HA(xwUN~djT;oayjWq` zC%3g>BmM_Mz&EH#{|6y7?E}Q&9)RC#kTSuOMGe42B2JZdH5u@LSV;?|e6@^Zznw^N zxim%_jsuz?qMiEuI-1rm^h*8sCi7X{PeMUNE}F@wx&T6Gym$@Zbwb%qs7?Q|2x}$b z(lIV_XrYZHIzKPuyk5N}`dCb=q2I2+G$!3-6&0AOYO0E=s?(VgSvp;dDlw$Pg&zXj z6TUjX0%FKURH@23-$uD~30u2I*nV*o>R)k0E=*}j+s3q3QZ7*&cw`i^sUe-wVr%JXm%(|?^u9D3ERUdKSn^z z5XFS_{YEK1um`+N&6u`b9s?E>!|_5IA_+4b6WTKcoS5dBApB%bJiqx|lFV&#IH!dI#G-;abOMdd{5gbafI7d%*R AW&i*H literal 0 HcmV?d00001 diff --git a/猿人学第20题-/readme.md b/猿人学第20题-/readme.md deleted file mode 100644 index b338a58..0000000 --- a/猿人学第20题-/readme.md +++ /dev/null @@ -1,41 +0,0 @@ -## 知识点 - -观察请求地址 - - https://match.yuanrenxue.com/api/match/20?page=2&sign=73781942400dd0fd60a21f6edb33505b&t=1654067452000 - -找到加密位置打上断点 - -![debugger](../img/82.png) - -进入sign函数,发现是 getStringFromWasm0 函数返回数据 - - return getStringFromWasm0(r0, r1); - -控制台调试 getStringFromWasm0 - -![debugger](../img/83.png) - -放开断点在调试一次 - -![debugger](../img/84.png) - -这里的 r0 和 r1是固定不变的,但是每次加密出来的值是不同的,说明这是一个指针 - -继续追进入 - - function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); - } - -getUint8Memory0().subarray(ptr, ptr + len) 返回 Uint8Array 数组 - - Uint8Array 数组类型表示一个 8 位无符号整型数组,创建时内容被初始化为 0。创建完后,可以以对象的方式或使用数组下标索引的方式引用数组中的元素。 - -打印 - - Uint8Array(32) [98, 48, 100, 102, 52, 57, 102, 49, 56, 54, 55, 52, 101, 97, 50, 102, 57, 97, 52, 98, 98, 100, 102, 49, 48, 55, 97, 50, 55, 54, 50, 52, buffer: ArrayBuffer(1179648), byteLength: 32, byteOffset: 1114360, length: 32, Symbol(Symbol.toStringTag): 'Uint8Array'] - -cachedTextDecoder.decode 这是一个解码函数 - - diff --git a/猿人学第20题-wasm/readme.md b/猿人学第20题-wasm/readme.md new file mode 100644 index 0000000..534d804 --- /dev/null +++ b/猿人学第20题-wasm/readme.md @@ -0,0 +1,64 @@ +## 知识点 + +观察请求地址 + + https://match.yuanrenxue.com/api/match/20?page=2&sign=73781942400dd0fd60a21f6edb33505b&t=1654067452000 + +找到加密位置打上断点 + +![debugger](../img/82.png) + +进入sign函数,发现是 getStringFromWasm0 函数返回数据 + + return getStringFromWasm0(r0, r1); + +控制台调试 getStringFromWasm0 + +![debugger](../img/83.png) + +放开断点在调试一次 + +![debugger](../img/84.png) + +这里的 r0 和 r1是固定不变的,但是每次加密出来的值是不同的,说明这是一个指针 + +继续追进入 + + function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); + } + +getUint8Memory0().subarray(ptr, ptr + len) 返回 Uint8Array 数组 + + Uint8Array 数组类型表示一个 8 位无符号整型数组,创建时内容被初始化为 0。创建完后,可以以对象的方式或使用数组下标索引的方式引用数组中的元素。 + +打印 + + Uint8Array(32) [98, 48, 100, 102, 52, 57, 102, 49, 56, 54, 55, 52, 101, 97, 50, 102, 57, 97, 52, 98, 98, 100, 102, 49, 48, 55, 97, 50, 55, 54, 50, 52, buffer: ArrayBuffer(1179648), byteLength: 32, byteOffset: 1114360, length: 32, Symbol(Symbol.toStringTag): 'Uint8Array'] + +cachedTextDecoder.decode 这是一个解码函数,不是真正的加密地点 + + _index_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["sign"](retptr, ptr0, len0); + +测试加密点 + +![debugger](../img/85.png) + +通过内存里面指针经过还原得到我们想要的结果 + +对 _index_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ 的断点,进入函数内部 + + (func $sign (;71;) (export "sign") (param $var0 i32) (param $var1 i32) (param $var2 i32) + (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32) (local $var11 i32) (local $var12 i32) (local $var13 i32) (local $var14 i32) (local $var15 i32) (local $var16 i32) (local $var17 i32) (local $var18 i32) (local $var19 i32) (local $var20 i32) (local $var21 i32) (local $var22 i32) (local $var23 i32) (local $var24 i32) (local $var25 i32) (local $var26 i32) (local $var27 i32) (local $var28 i32) (local $var29 i32) (local $var30 i32) (local $var31 i32) (local $var32 i32) (local $var33 i32) (local $var34 i32) (local $var35 i32) (local $var36 i64) + global.get $global0 + local.set $var3 + i32.const 80 + local.set $var4 + local.get $var3 + local.get $var4 + i32.sub + +export "sign" 就是函数名sign,(param $var0 i32) (param $var1 i32) (param $var2 i32)就是传递的3个参数 + +![debugger](../img/86.png) + diff --git a/猿人学第20题-/案例.js b/猿人学第20题-wasm/案例.js similarity index 100% rename from 猿人学第20题-/案例.js rename to 猿人学第20题-wasm/案例.js