首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
CTF对抗
发新帖
3
5
[原创]轮回地狱WP
发表于: 2026-6-26 13:54
444
[原创]轮回地狱WP
TeddyBe4r
6
2026-6-26 13:54
444
 ***「我嚟同你玩」 ------- Dystopia&TeddyBe4r (魔王护)*** ## 题目答案: 用户名: ``` KCTF ``` 密码: ``` lI|0OCLzopJ(69VmDBJcPKUnWRF`ll48{3RTtFoY8IKizBD5C6rv+ITiTFncmeRC0sZnFajVnPeR1ZUQ1XXcp(AljmPvR`Zx6gHx`n6ljPZ(kZVmDCu3(OSS4ynE2et1`V4TSMEelzr9a05yMil{|N2Vm+p|QDvNcwHJ$kUcjuJLHaPIBUTmAqyz|eUL`JcERY98sysRn7BAj43`gxpg!B$syyEx66C$lZHTJwDJ1!4v9NWSYFrV8M3ED9vKrWXUCxZ1|$ma|LwaatYKAui8CDgAcl!1S!5$VS{aTo1ACL5Cj05TXQQeFJ738yTkNmKPDD|(|Tz|zJMi6yeNz3vg+jXXYM|tsWoP(R9RjINLwFMTu8SjitiuK7paI5vz6{cw7Ui`ncDHTqI6nO{wpQ8RNDm6NCxiqSrg`iW`kV`mJxC!+rvVRcWXFeV(r{83!V7k!oIp3NMBytzeNUvv`Z9{OZ4Ls2FPHPHMWDVnZx8|XyH2p$$v6unFCHHsJX3K9M5FCI{uz(TyY6S(x65UX+iU4ILxxkctvrOOnqQyE+FkMn9apo{zRDjL7cam3L4v777zo3knqEAP`{|SXN72HVJ0ANQoTTV9WTipDJH4$1cKS5+7!t`zWp{PvIZBT9S9QNWaEiDJ6+52JDt6F|o8Hgzi+3LMAEVKX|TRjqtcI6a94j0jxVeB6EgX$4YFKMJSvCxmM{jn9+Cc|6FRaF+cCQVI4lIYo{o+MHI(BOO4OS|KLLkpCy2e!i5{ZU3KemeA+K2J6Yc8rBP8rHLRixNcPWrpO0J62+n$v|4VEZOYjT|HKEe3sYAZWiFxOmiIzAUYU|Ak5OLQLk92nrv3(66UV|`ngD|4v+nHxeJJwL`HOBr!w93evCMg`W5QUC|nQJ4OQWBNsoVgFjUS9(zvg0ZAtLnFqorxMYoBm7ep!zm$(CJxyZyMoey{!eA5se5vRWyr!pjoWwpYU8(7mH+Spz!Xte3gmvrnF31e7NN1THt2zTE0SHxKjwtuDo7(TsKlT04yeSEm3jE92wlqwB32PTV!UlcTZ6iiYH92eUyF4yYaR68HwkAD0F1knVJFWV3RRXkZR86o3Oy9wPPk|VDr`ikum1SNinTDSa5osQi0u!!7jA7P4yJEIDFx7OeeaO1lgsyIBuvHUK15pSrPYI{BqMsB|osp35jSCiOt`JmeNCwNIqz!Hsta!VRPqRq`1O2RD4OOmgV0X!$68zFr37A$3Vix|7{4RwC7P9jIBILc0xBk3gXzu|Xv6QczgnCzKT0Drl!Q0MDle5osxPVWnVOo6+rpBCIiY9T0gA5VEwEmSyUlkcVp999Sg(XuMs6QFQ$R+ni4i{w5rK`2L{eAEj68uKEIz6Rk5{rUr9M5kmDTgMceBPTVCcgTl7H!QMy4TMkc9VAN0kM$tv`DnJ4QER+oRznxt`3wQJ0n!{FAD0jFBMRQXeeucH4LLpn5n$9HTC49X0SxJ!!w6((Spo13E1uAo9InAXlTxHsxOZv5jNllaUxvTpnpwuu7K(NleI7$ii+cZe2TKZ$6eE{oOEW7krHV!LzS|BBsM$ov7ppWva!LEus9ssDPHlnN7nYXD931s0zSoHQOt3i5pDJjvl14RDBMEJK4J2SUuRKDIm0O$aKYxvIAlelvrOWeVD5Yx(sxqom!iJLWF1aJtcW$(w3gAejSWwewvK9TSZTcPtrK(KEH+CDXClC($KC3SE5CCjenAjYO`EPEZC5jeZFwy6pUp+w7lKzTAU|mFyYXR!TS+wpQ6(zg!yO|w3utSVqSaAJ39i8vvL6HWKHjFKtis`C0!u{|Kut(yWwTzScSET$A|v66Pu{1S72FXX$m(OUqwjYavBewSDiRi|YQg+CRAEjXU6Ek6x2nnBLrH|ZaAIEo66Puw4+NQZ3t44Is{eavcyVk{3KKru1iZEjmmKgs`LS9xlF6D4sJpAZJUmHH3yOD8`tX|4tn0Is|i7Zsc3XYTi7Canjjsq|aODJ(zrEFZO4zyuPiM03vZRF+olIi{I$8FYP8DDpR+8mPF!zUtyRYUZI(LqAg76D(H7EQg2VTutZOYVzck1t$56NWmt$Ip90BLK`{6!XDoE`r(uUwRx9kiYt6xAckRVZC|aQL{v2OX$mF!Wk|TgP!Y|E(IK!IDOnn8qsLp5ek2l7XOwrZH0`D3HT3jEK{YHQ$NIHN89WZxtTu4Uir8pFcUOa3xDkpJ`tUSYA$aSHo0UN0nSC`IH1|cI`BWjzXPp9gxLm!XCY!SW1EmywKSBaAt4Pxa41q9NrVRIjkIuQs1s6gi$`L505vO(`gEHWKaC|zoYmkM7anLOvpK1REHRyX4vJBXiEvoW(ERw`8S|N0j1Wvm(0ZU1PDz!tkECwv$p2g8F+IpL1k781OFjB0`qVZo0BR259C{B6I6{wk7kco5QZwRyoQlUUH4$QyoHmPEtasqQLprHDWrEuxr(QQP0+ss9Lir{g{QojkyYAucQJt!Y{0FggZI|!E5cvZeWXJ{W1S0!ND4150TPsFapRvp354MOxj7(nw`SwtDW30X7x`BqZVAA6Etir6ViWUUwKBXyyivK+2asN96v|Vg(DzKM1Rm5FB+mQPCA3YN4{`o+7M+!QAT2a$9q4EanRZz{La7gQI1{BHKwTvA{lUIag|EtX+nIWgeN6a(P|QptSzE$IcAXQHRUnYcuIW$FzDFm8ZFDotzZ|5(gWjk07ncTtl2XaCInn3t5t{SXZ70pR$+nMmucAwz4UCy8VH6y6MuRCWNX95C3vVOMX5Yk4+Im|uNFUz{`cc0zIp0E((I6{MP2LVpk8p4WMMikBMXpzaQ95a(Z+E+87MN0im`PO!NRKYI7KgLJ+VMaU|sQ1SzP|xPB|XjJZ5M5URE3`MriarNmeDBL$Xcyns!WDXV|ZiYHBpNRQD0PL!tTxYZQFz9QaRkaI``VosW0os{m+jM85HPvMSF1c$kFRMUzyqpirIjtU12jiCV1lBi9sAI{0{r|q5JI|J`M|Ti8RTEaaKxwZlOZRmM3eV+Ol(INSPcN1NzCCy6q8wJ8!TcJsuXBwzQqASpZiWIKa!8tgm(A$JsQWQXUiN`Kr!3c9DvipUeX5X8W0TNYqI`i+CiqST0Y3MCXB0UZ3M$3+SZC|TrmBpluYzWFn`HP5j`C0lKcvWe`rsQUmHYPr4TurwCtqNatCer4gZayKk$Uyn154sa29T7cP6MaPawJoFOERuMpj!vuoA6mi(ixLNgQjNWoylql!JZrk4NBmw$|y!xTMTs57ROspN1nBQgMK{Nezr75Dpt+VOo4k0wKx{saTRsN75S|Sgn3FWJmTEJ`1eg1KC(cSVVp9KXJ$TMTZtR!VY|nXZNDiJVwnS0pawrKRi8D4(!oKQy!VcnuKkmjCJ0Lup4jae4S3EDA4R2sQ(BOWLDNyuTytBnMRgE+slCe6Xcu969pALR$a(aCq3PgQssgEnMQuKB$|lEwgZD6rO8l6DP3O{wJSHnznp707l62nt!TP9$gwRaBzYIrKWDeSr8qo(JT6YcsTC40C{kY6c(LC0D1rupM`2I!tVsYFFeOpKRIuliD9WMz+|zOOIFopMr8LSuC320XRAXAz`39o|vDA4i9Kse(9(zYWJCninS4|Qvn`Bz7YFa1Y07w7BSOO43rAiCuIu4ZnlFj|$${7sZP9zj7qS!u7ee$Ryi{$rWngL`DexjZeYmj`RkstQXQwLQRUrnFirLysNJ(1sORUzEn|ek``vjkCviS4lo7MmV$U4k$5j77pI|DAEjWL9wl6xX0`ymm$USYjE(`NQrQB9x7k63eQCKrrvJ7vHtAFSDxE44wQDDcvRt(K2V+Fg6NN1ojTOoZDAwP3Y$IW4N39TW1YTDFv6VcyPmqriJZP038{coA9pwvugpqRq!7gOtjQc!kFlw{0ca7yJuUn72en8F3R7MZX|8jF`jPqV|!pNMowiDtsPaB4KHtjJFn$s{Mj2y6iCciNlMmJ9aP!XVpEWXgoalJTWutWRTnNu82LqqBZN83R6KQXXFpmM+z|$VjLwiwK`qy8kKq8+NPSOj9|NBIC4S+pnPPqAHA6u5{6tNLH$Rxaa`TQ7IiYr9l5FpmEZ7nWSws$SwlaataNPq1q2uo{8nvP1HKKt7!S7IoiN(IH0QrmjTolO67MRa`Vx3SCpx|longuO4QXZwxF$J16OEpj7QBy5RYaT(LaX623B4K`It9(UW+euyxa3RkUt0|3q+c{tlCW!xaFCQeFa1D(($QQyt0$kDvsX`N74N(rF0BVQRUvQ{z17S2Z0M(DjOPI8AAK$zBEIWKwcnaieC5VsL{XjnuBs(vDwLMswiH{OZBEpUx|MyFpu22kDX5u|o3AO{+mvOsmk6wwS9sJI|4qz!LkVj$kSEUaZiuRcp(4ls6Q6uySkJeU(5scB|4B6Ssl1SYDJTswZtkDUyWaWoA81tqcxIal`JlvtlyPkR|IxDXNnJE4FnLiEDmW4Bsz5xZNXJ{Xi6PLD3Xer`5nj318jUjBqN2AcPck61W3i390Oa7kmU1KTJ8X|Vxeu!XXLx3xDwgu04UkOZWlnrcjvpIcr(+8PMAV9`+7PY1`SDITIeT7rXu(H`U7i6gsQM0eXBYM8Sjm7e7$Joy0OpJuaT9iXne5uJOVA7FZ$vvSYD3!Z{NCacLEXAjt`pa05H6c!nW1{64AcWF1TeprHwDwHyUiceTinBV2cSN8`BOqgTXg{ROY{r+cg1gn!scm(j0qv7IIc4F8iC{Et`5WqO+cWAwYHM(JuJC{RgmIH!Bx1QKAE(Zr(0c3upuq3y7|+xNyRJv`OFx1FCJrNV1L|$o+EmYqy|V(XioDQ|4$Sx93lpgx8gsvRWYI$iEcYWyC!RpDgpa02rSO2E{+BIlA!PFty|B37SkcTv6csyvTJe4gCW7o{+5syxwMDqOMPkUAUnMn(H{tjY3A0LoU8siLlR2Kw8$yAPmt3j$z2gHq|(vxs0{4m9rVEjU5kBUewky6SLQmRu6ntBtUja9eVX|N1$e0PRHM2UZTkt!oXEtmHLa(KKqZJj`UKvm1pFRymgPyV6vR`osNFFXaLm|tKWXwuWoTiIa`DqqL89nIu7+VAPYe2tHs43BmJIYXpVWUtVEecsjlyNz0$qtn1+Po4jtj6{xV$BKNC+$t$VXpBn4p0KVVKuIKnTNX7mxanYOQBQ`v657VLTj$1$eFrIAsKIsmRyLTr5a2XFDqgy9xuu(OVtYq(M9c8O1jW02a0A$vIK08zSxP(kM{`eMuqoxU1`CiHi+1Mcxxsjzzj0NZuMPHiuwwEe$y6OSYvZ!M{F+TDimDPRl+i0eDzAVuSwStvq`169TB|I2v966z`NQA!v8o6puijOLeMTZ8Y|kLWeRc1$CzUVL|uyAuzJCPwCPe03nD5pE8Zn9$F6UA2SW2P84pMuBWTcIxecV!WD{vjpyzIm0c`StZlurS1gu0ypKB6ZNpip9vY9|4s7IjjcDg{waN27+y2YXigRwQTJyFvLvDLHPQ+aT|`pp((Feac7YO{ar0ORV5+KpMKeptkxs{F`1J8!Jv{s4NCO+$WzZZcEAn(BToL(sJqT4{E4MqWPSPL1$a1!uOi`kT{DJ+Kge(1Bjr!H4E!7O8Vyjy`ASOxSu0tCnVew2wYDPjq3DsJK(1(V578Lle9nq|U1L6AoKVnaIa0$Fu|ZoD3PU3PHpuoZIl$YQOKNLHuZPgFw`vVtFsCEZsmK+2wVE4eLiN1coAEZJVw75ScPzOqK1iizCHAxL!OT3Z|M`3LtxqvmwterDsAekWrQUPLniA5{RDj!o$Uj37Ve66`aon4F1oB20C(p+Kpe79N${7PStrsN$eqDmmEIXU|mPP7jmTYe`{!F0Z1CEqFK+0P0ixyCKcP+(MCgFjw`Ca1VvgCUpp4p3$80TW8Q$(+8nw!sqNIEaL7Tnv+$zm+1uX6mrk5XCRcYqKuRS|cLYcABRWI5xwJFNQVSAPcDjV+8qEJqcxJTOtw|r!{zAgE40rDMPzllBOVHonRLKzjgyl0eBnaj6$T1BUuQMgySK{rF(RwgRI0XWqZ$x13+poOr`0Mc0sUApqme7H68mYI7PVz8!22NUqKiTDcgLt2Z4+FgppRt(6yq2ViktDVsgUeFoDF0U$1$$P80zW49AApOW1rsPxyX!(XIJH(+eByoW5XX3D6uDlI+JOIXxqWTo!`NQP2MigQ3H5EAAH!pnPZKFK(pBW61C8+eDiy916CAvUqCD366VgPoKu6E2(1|i!{Doz4Uwg2p3jVAU6apY+QOD9ezQLoLzq6ZNlR3c(r5DttI6Ae(EjNIYHFpTX(PPYSMvyq$NYLWEDj!lvycLj07YiWeXZ0w6n!S6z1{3`myrmunTzmMBUuZzsSaQEuXE4j!7uVAFqBBgQLPr504c!Z{sRnH|CpYZY!9X5`+5Z4HWJ`wD9pji+AyIDMLM+C(sIEgUik5Oci8pC(4j(LDgTe1iPuw3BuTyQk(0RtZjKxL2FLyVm4mTaZ+q4OI2pavn|((3M|03{KsN`HOksC51OX0$RqV6RrEYDI07CoQCQ+Fs0qxH(XY{tBg8yOWWucsLv$RQVs`oV1!7lac{pXu9plTt92wo3tJ$BIDMa1c$|uH2nsFO|Vac7BrLo9uK7apnO8v9rBQ!9Ec7!jjP7iN|9TzTYZHuTA`oAQ|R6(9iXeCmwZ`iBNzDLJ+kJlS+HXJcuECXllmT1ZrB$9+|zNwV8XrIg4YM+X8LaUP36ag5{laH0w{Zeox`D$Iyi2ueyuZM`giga2NeKgW6juEnSNrW+nWI{QLBsIAZPmx5p`R|iP(`Pai3z2U7ZB2polSCvjIzStM!u6EAKPie0Vy5tRL4z6BgmJDmS9!MDoi1PkjDN2A+Pr|1cJn$sSl6EHjqHaAR6g7HzvllLMS`A2(icUUnjw2$8zoy{MQ(sE`0QJ7EE00vIzD{pAYEIVsiPuO05giYSgxqm22ccJncE6+Hw$RipkiKzAPIXx(Yn9y{vyQ!y`nw(|SCYY1vYcSnRIaU!`1uz$je3xW78|emxC9vcBQRZCy|mxkZRX|yqz(QjWRK+Rx|acp(0SNpc6(aWq(p8RoSgYZ2nysUF0+rw9(g5!ZDztY2F4yUSukJ3S!$ODZm26ODu+B`Eqm!D7MyHSDt8lzaBKvsit(|S54!gKIE5L5(1xvwAUlrqQU4jB3+ClKJaOnZ`!em3rB2U(`e4FMNxvJ|AK!gxrWBp2semt|ULavgw58YywSYM9!ncKC!`c2pnD|KDe`SvJSF5t3{lg1SoE!BH9YiQ+Uzms2owxRq98XlJxwFg0|j!FkevWVMaky9O{v`7JSNTP+SBze(cl0IEtA!qLURHMm$TF1nIp!MTVw1oXQZvBY$2a(`{grl2t315HSeImuzquQ6(q3UkXanE0+1Jq9NjSueyacmq|{8!nMJTQBnQKN0MUvW0L|V`XIS|6olwKEUOJLquTpaIDz3D|JN+3(eF3ojNicERCzzkc|mk!(e86xVB1eRkRsIn4z`oI`yLpZYu{$LP9BJerLwAXziCe24K9tR|zi6vP+pjtPz`(0yrkCt4`NO5mImHKIxl{qylZUCWn+AmAo9OETamTP$s7+yQw!571o9+y3RMtJt2TxecRc+BqkyW({4mB9S1WwWX$mM9uW{F0$gt4j4`MjlB({Xms4DQeo4oqci6`7BMa5jaA{r`nxHK8K|PjV71!Ng88PJ8CtqO+tkICteMN8D1e93qzwuHWJYmQkPkViJ5+j`i9oRmyU|JlDC6n45A5Qe8Bvmk`zDx5{ALIB+FyQcElji7kulQcj{9nEEiy`Uw174sLvJo!PasNTUgsiKeBL72W4{1Qp6eRR+N0Lni|nTty|!!A77AoL+n1ITarAJu6B``itzleOncZ0gxzwvOXDn8Hmqk(BnpkZEFH!lEzu1acFXScrWVC|$5xxyZ!giKgkxHv4or$8|YSj(u9e0+23EAzJ`BTnLPWmJT!EoQ+6mIzQX1smOgL32pX9ZC2axpxxw9Sw2UDQBYy0xirI$wM5!k$uSmXwWQ53u5KMXmealLU!9`5HrPwwxUcp+P(AB3+ASvA6`F3cvH|A|Q3ce7Ul{SrYUatJoLEHCigx23kjCAi(XSHTW`K+p2LlSPX{MxLpc240eysspXAB!S$12MaHEO78nrAwDCT1ImR7z1v6FmWP+N|v{JoPte7Pu9y20E4u30`kq|lR1e6XyMZD6zukZovYnV+iV(+xe(y+569wL|ESD(c+`nUat4N4cUEYEF1yuA(t{9MtmTa6|`Q$s+430ix7F7xYXK42xn(k$rWajxnSKM6NW2xajHLxmusePak8TlFw07nkwDwAvr1m3M7HH$SeOCsD(5i!g7Zv7(JXQ2gBVUTB9kcs4aeNe6ApwYTDkq{HNENUtw{U0g8EXQZasFu5osxyr4T6XjMSsyXYU6alY5jqpqEpx|7`0z95Nr{rOBmT`s6Pv|O5prx0{7wyxRiO7KIBmH3aSFwzvtrRWWAKIuoqZ8kxXNtPPR9333XADEIQ5xR|xXFroA5TU5Ejs{9SSFeLUDH`pXV|6|ccAiE|vFzvxLTEJKv7lWWQKeH8QR1$1g65p+sxez|TXRXYigB7aosuVPTy52J9snsF`ACai56(EJMFNDK1+Px9a{IB+Tz4`Sjz88wQ0EPxir2MKFe5H3DPllFM0Z6nlNopatEK9YuAWp5SUjw3BzR{Cql5zCRFe9n2lxP03vwogNz1ro20oVO!B+Mc+I5Smx9PJZx$Ni6gXRnaM+VNkDaR|DSk0n1u7WTrET18g|83taxxa`SelROKQVXOjCJB!$ZUB`oO5Ct(5pgm2Ja6qp9KO`I(Qlk`{zac!1yj9a|{Akj$v`lm004Ds6j+etcaHPnuJtRmw84!v9cnEDi0YKsZt6uIWvn7{D2pHHel149S+BasqD87gAJ1!DT2yUiWnN(LQNeYNUNgA(6(oi!|x87ZXMSQ23|0DLsiOOi2ewag4YZW(F0yq2K`MlLSZCOio3LW!t1$3mvCMVOSL9OeTaQu7RO17PPJMlSI2KMY!CvIHPSkZO8S6M`l1PZN2mDxm4Wr!qNLo8kS0SU`MvA|OsLUQBIFIlIVsPakc4A|ZqZJE5IIDDoELvB{|{u+ZaHVepY5YxRMmiw3FaDSM4$(3I7yHSICpI2{i57{xSj5UOVa2KtAPRYe6aFlJOy8rYoPw$TF+QaceBA`I4Jmll8Ck`UHuuHOQ(IJeRImIHcESa4SNsrIl1|! ``` ## KCTF 逆向题目设计方案 ### 架构概述 **"轮回地狱"** — 基于 x86/x64 混合架构的多层防护逆向挑战 x86 主程序通过**天堂之门(Heaven's Gate)**跃迁至 x64 执行空间,核心算法以混淆 shellcode 形式存在。程序通过特权指令主动触发异常,借助 **VEH(向量异常处理)**完成与算法深度联动的完整性验证链。输入口令需经 **AES 加密 + 魔改 Base64 编码**后方可提交,程序解密验证后输出 `Successful` 或 `Failed`。 Shellcode 由 x64 工程编译提取字节码,经汇编解析后,送入混淆器施加各类变换,最终重编译生成全新机器码。 ------ ### 核心算法:万方联立,千题问道 程序依据输入用户名,从 **10,000+ 个预置方程**中伪随机抽取 **1,000 个方程**,分为 **100 组,每组 10 题**。选手须求解每个方程的精确解,并对每组结果升序排列后提交。 ------ ### 检测与对抗体系 **1. ntdll 重载 + SEC_NO_CHANGE 内存保护** 重载 ntdll 并将其内存属性设置为 `SEC_NO_CHANGE`,使该内存区域无法写入 int3 断点。模块句柄保存于 PEB 作为全局变量,后续通过自实现的 `GetModuleHandle` / `GetProcAddress` 直接调用 ntdll API,彻底断绝外部 Hook 入侵路径。 **2. PEB 环境指纹参与解密** 从 PEB 中提取特定字段直接参与核心算法的解密运算,作为密钥派生的组成部分。正常环境下字段值固定,解密链路通畅;调试环境下 PEB 字段被篡改,解密结果静默出错,程序输出 `Failed` 而不抛出任何异常。反调试检测与算法正确性深度耦合,攻击者即便绕过所有显式检测点,只要环境存在调试器痕迹,算法便在无声中给出错误答案,根因极难定位。 **3. x64 空间 Dbg\* 函数屠戮** 枚举并摧毁 x64 空间中所有以 `Dbg` 开头的函数入口,调试器尝试附加即触发崩溃。 **4. 父进程溯源检测** 校验父进程是否为 explorer / cmd / powershell,并主动尝试读取父进程内存,有效反制 VT 类调试器及异常宿主环境。 **5. 内核调试模块探针** 扫描内核空间,检测 kdcom / kdnet / kdstub / kdusb / kd1394 等调试驱动模块的残迹,内核调试环境无所遁形。 **6. 时间流速检测** 监控核心执行链的耗时,超过 10 秒即判定为异常环境(断点停滞、单步跟踪或沙箱降速)。 **7. CRC 完整性校验** 对核心算法段实施 CRC 校验,任何字节级篡改即触发熔断,杜绝运行时 Patch。 **8. 调试对象检测** 审计系统级调试句柄,调试对象存在即暴露。 **9. TF 标志位探测** 检测 EFLAGS 中的陷阱标志位,单步执行状态即自暴。 **10. 硬件断点嗅探** 审计 DR0 ~ DR7 调试寄存器,硬件断点设置状态一览无余。 **11. 反 AI 心理战** 植入精心设计的虚假提示词,诱导选手误判作者畏惧 AI 辅助分析,将大量精力消耗在 AI 攻击面上,实为纯粹的时间陷阱与心理博弈。 **12. 虚拟机指纹识别** 通过 VMware 后门指令(I/O 端口 `0x5658`)探测宿主环境,识别虚拟机后拒绝正常执行。 **13. 常量动态加密** 关键魔数与常量于运行时动态解密,静态分析窗口彻底关闭。 ------ ### 代码混淆体系:基于重编译的六重炼狱 整套混淆流程以**重编译**为核心驱动:将 shellcode 解析为汇编中间表示,施加各类变换后重新编译生成全新机器码,抹除一切编译器特征与原始代码结构痕迹。 **Ⅰ. 垃圾指令湮没** 在中间表示层注入自抵消指令序列,乱序后抵消点被拉至数百指令之外,消除局部特征。部分指令针对性破坏栈结构,瘫痪 IDA 反编译引擎。 **Ⅱ. 语义等价替换** 将高频指令拆解为功能等价指令链,原始语义彻底消融。乱序后跨越多个基本块,配合高频栈操作令 F5 形同虚设。 **Ⅲ. 基本块随机乱序** 函数内每行汇编全局随机重排,重编译时以跳转与间接跳转重建控制流图。间接跳转随机选取寄存器,消灭模式特征。部分间接跳转采用 **RIP 爆炸**技术:目标地址异或加密存储,执行特权指令主动触发异常,于 VEH 中实时解密跳转目标,动态调试器与静态分析器同时失效。 **Ⅳ. 轮回之门(Heaven's Gate²)** 天堂之门的进化形态。重编译器静态分析中间表示,识别可在 x86 模式执行的代码片段,自动注入模式切换跳转,制造 x86 到 x64 模式的高频震荡。IDA 与 x64dbg 在模式边界处彻底崩溃。 **Ⅴ. 花指令迷宫** 重编译时插入多形态无意义跳转指令族群,污染反汇编器的指令解析流,制造虚假基本块边界。 **Ⅵ. 指令虚拟化(核心防护)** 核心算法编译目标为自定义字节码,运行于私有虚拟机之上解释执行。攻击者须先逆向 VM 架构,再逆向字节码语义,双重逆向成本指数级上升。 重编译时在代码块间随机插入变长 NOP 序列,破坏基于字节模式的签名识别。 * **破解思路** 首先我们去除花指令, 模式有三种. 第一种为EB + 随机字节. 第二种是call + 随机字节然后然后ret. 第三种是push + lea + xchg [rsp] + ret, 后面跟随机字节. 我们通过识别这三种模式写脚本进行去除. 之后去除随机字节数的nop, 虽然字节数有不同, 但反汇编都是nop相关. 直接去除即可. 实际上不去或者都改成0x90的nop也没什么影响. 然后我们直接把模式切换(天堂之门)的代码nop即可. 实际上去掉模式的来回切换并不会影响代码的执行结果, 它们的作用只是干扰调试器和反编译. 接下来开始处理间接跳转, 一种是push + lea + xchg[rsp] + ret, 直接改成jmp到目标即可, 另一种是把下一行地址异或, 通过特权指令进入VEH再处理RIP跳回正确地址, 同样改成直接jmp到目标即可. 至此, IDA实际上已经能F5了, 可以看到大致的逻辑, 有些地方由于指令替换动了栈反编译有些问题, 但是大致逻辑已经比较清晰. 互相抵消的垃圾指令实际上可以不处理, 不影响F5的结果. 那些被替换的指令改回来就可以正常反编译了. 然后我们先吃透VEH里面干了什么, 保留和算法有关的逻辑, 去除检测相关内容. 和CRC有关的地方, 直接Patch给原代码CRC校验值即可. 同时可以去除和检测相关的特权指令. 至此, 我们已经可以调试了, 然后动态调/跑模拟脚本看个人喜欢. 甚至可以接入MCP让AI来逆向. 我们先看输入是怎么转换成加密块的, 根据这个来写魔改base64的加密算法, 然后再看加密块如何解密成答案, 据此编写AES加密算法, 我们就可以做正确的输入了, 剩下的就是分析答案应该如何构建. 通过上一步的去混淆和基本还原之后可以在GoodGoodStudy_Clean中找到Map的代码,下图的指针变量是比较重要的值负责指向定位pBuffer该pBuffer将会被算法操作。(说个题外话,其实在这里编译器的特征已经出来了,选手应该能知道我用的哪个系列的编译器) 主要是要找到指针变量这样可以拿到pBuffer从而能找到 对Buffer的逻辑  当我们找到pBuffer之后就能找到核心算法,通过阅读汇编我们可以进行分析了,我这里浅浅还原一下,需要识别出`and ecx, 3FFFh`这里是一个很常见的编译优化,如果选手懂得编译优化应该能很清楚理解这个stub是一个模然后从数组中map的代码,负责将用户名map到一个序列中去。  var_258是一个计数器变量这里也不难分析出  我们还原一下到C ``` while (ebx=nSize < count=64h=1000个根) ; 这里可以通过 上图的编译期计算得到count的具体数值 { seed ^= (seed >> 16); seed *= 0x5BD1E995; seed ^= (seed >> 13); seed *= 0xC2B2AE35; seed ^= (seed >> 16); int idx = seed % 16384; if (!used[idx]) { used[idx] = 1; equations[nSize++] = idx; } seed += hash + nSize; } ``` 写出这个代码然后用用户名map一下就能得到索引的数组这里的思路其实已经很清晰了用密码输入到虚拟机里面然后进行计算如果是0就验证通过了,所以这里的索引数组是方程组的索引,而下一步我们应该通过找到方程的系数然后把系数全部dump出来然后就可以愉快的进行解方程了。然后分析一下能找到一个简易的字节码虚拟机  这里是 VM_LOAD的Branch 慢慢分析基本可以知道 1. 0x5A LOAD_COEFF // 压入多项式系数 2. <0x5A PUSH_X // 压入x(当前根) 3. 0x7E MUL // 乘法 4. 0x91 ADD // 加法 5. 0xFF END // 结束 整个流程需要在调试器中看一下都命中率了哪些就能看到具体的执行流程可以通过静态分析分析出对应每个分支的作用,算法本身不难这一步比较考验选手的基本功,最后拿到虚拟执行序列后需要选手能看出来整个是一个 bcd解码 + 多项式计算。通过上几步的baseno64和Aes能够解出来 密码的样子`-`的ascii 应该能敏感的找出来  这里是VMContext赋值  去调试器开始调试取到这个值可以拿到bcd解码的系数。 BCD解码结构 一个`usign int` 人肉F5一下 ``` void decode_bignum_bcd(BigNum *num, const uint8_t *input) { // 7FF54C: movzx edi, byte ptr [rsp+r8+...] // input[0] = 符号+长度 num->sign = (input[0] & 0x80) ? -1 : 1; num->len = input[0] & 0x7F; int idx = 1; // 从高位到低位解包 nibble for (int i = num->len - 1; i >= 0; i -= 2) { uint8_t byte = input[idx++]; // 7FF558: shr r11d, 4 // 7FF55C: mov [r10+rdx*4], r11d num->digits[i] = (byte >> 4) & 0x0F; // 高nibble // 7FF566: jz → 跳过低nibble写入(i==0时) // 7FF568: and edi, 0Fh // 7FF56B: mov [r10+rdx*4-4], edi if (i > 0) num->digits[i - 1] = byte & 0x0F; // 低nibble // 7FF570: 处理第二个字节 byte = input[idx++]; // 7FF57B: shr ebx, 4 // 7FF57E: mov [r10+rdx*4-8], ebx num->digits[i - 2] = (byte >> 4) & 0x0F; // 7FF583: cmp r11, 2 → i==2时跳过 // 7FF589: and edi, 0Fh // 7FF58C: mov [r10+rdx*4-0Ch], edi if (i > 2) num->digits[i - 3] = byte & 0x0F; } } ``` 然后去调试器里找到自己的需要dump的寄存器,开始dump最后能够得到这么个东西,然后给出这个解密脚本 ``` #!/usr/bin/env python3 """ 直接从 polynomial_data_encrypted.h 提取并解密所有多项式系数 输出:poly_coeff_result.txt,每行11个系数(x**10系数在前,常数项在后) """ import re import sys def derive_xor_key(poly_idx, coeff_idx, byte_pos): seed = ((poly_idx * 0x9E3779B9) & 0xFFFFFFFF) ^ \ ((coeff_idx * 0x517CC1B7) & 0xFFFFFFFF) ^ \ ((byte_pos * 0x85EBCA6B) & 0xFFFFFFFF) seed = (seed ^ (seed >> 16)) & 0xFFFFFFFF seed = (seed * 0x5BD1E995) & 0xFFFFFFFF seed ^= (seed >> 13) return seed & 0xFF def decrypt_coefficient(encrypted_data, poly_idx, coeff_idx): return bytes([b ^ derive_xor_key(poly_idx, coeff_idx, i) for i, b in enumerate(encrypted_data)]) def decode_bcd(bcd_data): """ BCD解码 byte[0]: 符号位(bit7) + 长度(bit6:0) byte[1+]: 高4位对应高索引digits,低4位对应低索引digits digits[0]=个位, digits[length-1]=最高位 """ if not bcd_data: return '0' first_byte = bcd_data[0] is_negative = bool(first_byte & 0x80) length = first_byte & 0x7F if length == 0: return '0' digits = [0] * length bcd_bytes = bcd_data[1:] i = length - 1 byte_pos = 0 while i >= 0 and byte_pos < len(bcd_bytes): byte = bcd_bytes[byte_pos] digits[i] = (byte >> 4) & 0x0F if i > 0: digits[i - 1] = byte & 0x0F i -= 2 byte_pos += 1 # digits[length-1]=最高位, digits[0]=个位,从高到低拼接 num_str = ''.join(str(digits[length - 1 - j]) for j in range(length)) num_str = num_str.lstrip('0') or '0' return ('-' + num_str) if is_negative else num_str def read_file(path): for enc in ['utf-8', 'gbk', 'latin-1', 'cp1252']: try: with open(path, 'r', encoding=enc) as f: content = f.read() print(f"使用编码: {enc}") return content except UnicodeDecodeError: continue with open(path, 'r', encoding='utf-8', errors='ignore') as f: content = f.read() print("使用编码: utf-8 (忽略部分字符)") return content def parse_header(header_file): print(f"读取头文件: {header_file}") content = read_file(header_file) print("提取数据池...") pool_match = re.search( r'g_coeff_pool\[\d+\]\s*=\s*\{(.*?)\};', content, re.DOTALL ) if not pool_match: print("错误:找不到 g_coeff_pool") sys.exit(1) pool_hex = re.findall(r'0[xX]([0-9A-Fa-f]{2})', pool_match.group(1)) coeff_pool = bytes([int(h, 16) for h in pool_hex]) print(f"数据池大小: {len(coeff_pool)} 字节") print("提取索引表...") index_match = re.search( r'g_coeff_index\[\d+\]\[\d+\]\s*=\s*\{(.*?)\};', content, re.DOTALL ) if not index_match: print("错误:找不到 g_coeff_index") sys.exit(1) all_entries = re.findall( r'\.offset\s*=\s*(\d+)\s*,\s*\.length\s*=\s*(\d+)', index_match.group(1) ) print(f"找到 {len(all_entries)} 个索引条目") index_data = [] for i in range(0, len(all_entries), 11): chunk = all_entries[i:i+11] poly_indices = [(int(o), int(l)) for o, l in chunk] index_data.append(poly_indices) print(f"索引表: {len(index_data)} 个多项式") return coeff_pool, index_data def decrypt_all(header_file, output_file): coeff_pool, index_data = parse_header(header_file) results = [] errors = 0 print("开始解密...") for poly_idx, poly_indices in enumerate(index_data): coeffs = [] # coeffs[0]=常数项, coeffs[10]=x**10系数 for coeff_idx, (offset, length) in enumerate(poly_indices): if offset + length > len(coeff_pool): coeffs.append('0') errors += 1 continue encrypted = coeff_pool[offset: offset + length] decrypted = decrypt_coefficient(encrypted, poly_idx, coeff_idx) try: value = decode_bcd(decrypted) coeffs.append(value) except Exception: coeffs.append('0') errors += 1 while len(coeffs) < 11: coeffs.append('0') results.append(coeffs) if (poly_idx + 1) % 1000 == 0: print(f"进度: {poly_idx + 1}/{len(index_data)}") # 每行从x**10到常数项(高次在前) with open(output_file, 'w', encoding='utf-8') as f: for coeffs in results: line = ' '.join(coeffs[10 - i] for i in range(11)) f.write(line + '\n') print(f"\n解密完成!") print(f" 多项式数量: {len(results)}") print(f" 错误数量: {errors}") print(f" 输出文件: {output_file}") print("\n前3个多项式(x**10系数在前,常数项在后):") for i, coeffs in enumerate(results[:3]): terms = [] for power in range(10, -1, -1): coeff = coeffs[power] if coeff != '0': if power == 0: terms.append(coeff) elif power == 1: terms.append(f"{coeff}*x") else: terms.append(f"{coeff}*x**{power}") poly_str = ' + '.join(terms).replace('+ -', '- ') print(f" [{i}]: {poly_str[:150]}") if __name__ == "__main__": header_file = sys.argv[1] if len(sys.argv) > 1 else "polynomial_encrypted.h" output_file = sys.argv[2] if len(sys.argv) > 2 else "poly_coeff_result.txt" decrypt_all(header_file, output_file) ``` 运行后能得到形如 ``` 1 -5504304 13367861336912 -18797839904507158562 16865717393470649561482359 -10014052860006038221174516333246 3937600747563618199662067918004185288 -990992421773767987072605490850819205452928 145986750134480188808306645034410873933983516160 -9971044755838299580893883126108014461311674327859200 89101831096711312116801480146060811753799003788754944000 1 -4770942 9784840737132 -11307963885139034470 8110255689747038943686343 -3745998013649063632590473842716 1117518324531851761941027556732969996 -209360034555725622622600390755305209985280 22925444086448748901146743782223422071021195456 -1248997240739909435499705865193365008979530835656192 21692444981647368038098204058681957470528304441615081472 1 -4538440 8983695429224 -10185264527389127754 7298360761628368896230647 -3437705555322848017720159296734 1071341093919404455290523185382435856 -216358823306181714156032718431043629442576 26811242393323054207024250984928358843112232432 -1816675984385636239367956594760913286042099263778656 50371905889105550677315306868642673115409526544372080000 1 -3955061 6708316400246 -6391322764199031854 3763529213845025652038189 -1419758994450626569351593292937 343856474369168184916260588561623884 -51993513655040650345427253512483845750836 4572708781210295821376281626216960074691843120 -198527120000781391129226739002804295466459089144192 2591525224881617138088010728933559323671037516639559680 1 -5144384 11457976625912 -14487393710483404806 11463228763051874009191651 -5905037377498740355984657971346 1998478709856770420634574997938519508 -437931756988151732448750179004890728889304 59455134916427074432052772040154088736364128128 -4521371090077768940201672807054202916591155739983360 146553010466161914040873133011499663728726015427340288000 ``` 这样的多项式系数,通过Matlab或者Python 就能够拿到对应的根 然后根据上面得出的密码idx 通过usermap拿到方程的idx 把每个方程按照大小拼起来就可以得到答案且这里还需要把根从小到大排序一下 然后再BaseNo64一下 + AES一下就是最终的答案了。
登录后可查看完整内容
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
最后于
2026-8-17 12:17 被kanxue编辑 ,原因:
上传的附件:
KCTF.zip
(4.97MB,17次下载)
KCTF.z05
(10.00MB,13次下载)
KCTF.z04
(10.00MB,13次下载)
KCTF.z03
(10.00MB,13次下载)
KCTF.z02
(10.00MB,13次下载)
KCTF.z01
(10.00MB,13次下载)
收藏
・
3
点赞
・
5
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
教教我吧~
这个讨论对我很有帮助,谢谢!
2026-8-17 14:34
mxym_
这个讨论对我很有帮助,谢谢!
2026-8-17 14:02
Dy1an
期待更多优质内容的分享,论坛有你更精彩!
2026-8-17 13:20
Ally Switch
+10
为你点赞!
2026-8-17 13:10
backer
非常支持你的观点!
2026-8-17 12:43
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
3
)
落音吹雪
雪 币:
205
活跃值:
(135)
能力值:
( LV2,RANK:10 )
在线值:
发帖
1
回帖
41
粉丝
0
关注
私信
落音吹雪
2
楼
真的屌
2026-8-17 14:31
0
mb_czvsfrqr
雪 币:
3
活跃值:
(225)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
24
粉丝
0
关注
私信
mb_czvsfrqr
3
楼
落音吹雪
真的屌
求大佬技术破解棋牌 我这里一天几十个到一百个 资源很多很大 希望可以寻一个有实力大佬一起合作共赢
2026-8-17 15:50
0
星野安全
雪 币:
2532
活跃值:
(920)
能力值:
( LV7,RANK:110 )
在线值:
发帖
14
回帖
6
粉丝
48
关注
私信
星野安全
1
4
楼
反调试的强度确实挺高的
2026-8-17 16:43
1
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
TeddyBe4r
6
17
发帖
37
回帖
330
RANK
关注
私信
他的文章
[原创]轮回地狱WP
444
[原创] 基于LLVM的图拓扑签名编译器技术Part1-LeafNodeInject And LNLocated
3500
[原创]基于LLVM的通用自包含化(Shellcode)编译器开发思路
13673
[求助]找一份Windows Rootkit 远程开发工作或者文件过滤驱动开发
4272
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
谁下载
×
kanxue
huangyalei
pzhxbz
xoxo999
Dy1an
DannysMask
教教我吧~
mxym_
玖捌陆
wufake
eappple
mb_hpyrncja
mb_lthgjpwj
mb_jkhtkeuc
谁下载
×
kanxue
huangyalei
pzhxbz
xoxo999
Dy1an
DannysMask
教教我吧~
mxym_
玖捌陆
wufake
mb_hpyrncja
mb_lthgjpwj
谁下载
×
kanxue
huangyalei
pzhxbz
xoxo999
Dy1an
DannysMask
教教我吧~
mxym_
玖捌陆
wufake
mb_hpyrncja
mb_lthgjpwj
谁下载
×
kanxue
huangyalei
pzhxbz
xoxo999
Dy1an
DannysMask
教教我吧~
mxym_
玖捌陆
wufake
mb_hpyrncja
mb_lthgjpwj
谁下载
×
kanxue
huangyalei
pzhxbz
xoxo999
Dy1an
DannysMask
教教我吧~
mxym_
玖捌陆
wufake
mb_hpyrncja
mb_lthgjpwj
谁下载
×
kanxue
huangyalei
pzhxbz
xoxo999
Dy1an
DannysMask
教教我吧~
mxym_
玖捌陆
wufake
mb_hpyrncja
mb_lthgjpwj
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部