代码请参考``` github.com/guijialei-w…
这是今天干的网站

www.endata.com.cn/BoxOffice/B…
老规矩,还是先找包,这个还是比较简单的,他的请求参数好像也没什么,只是需要我们将返回的数据进行解密就行了,这就是我们的思路

接着我们尝试怎么去看看解密的数据,emmm先尝试一下搜索url看看


那么这很明显是个ajax请求,我们看到传入的数据还是加密的,说明解密的过程在这个后面,我们继续调试,发现这段代码在执行try这段语句之后,数据就解析完成了,那么就说明这个语句里面就有我们需要的解密过程,那么我们看看这段代码逻辑
这段代码看起来是一个条件语句,用于处理某种异步操作的结果。让我来解释一下:
1. `(e = "{" == e[0] ? JSON.parse(e) : JSON.parse(webInstace.shell(e)))` 这部分是一个条件表达式,根据字符串 `e` 的首字符是 `{` 还是其他字符来选择不同的解析方式。如果首字符是 `{`,则使用 `JSON.parse(e)` 解析,否则使用 `JSON.parse(webInstace.shell(e))` 解析。解析的结果会被赋值给变量 `e`。
1. `1 == (e...` 这里开始是一个条件判断,检查解析后的数据的 `Status` 或 `Code` 属性是否等于 1 或 200。如果等于,则执行 `r(e.Data)`,否则继续判断。
1. `200 == e.Code ? r(e.data)` 这里检查 `e.Code` 是否等于 200,如果是,则执行 `r(e.data)`。
1. 最后,如果前面的条件都不满足,执行 `a(e.Msg)`,其中 `e.Msg` 是一个消息。
那么我们可以知道,这段代码最后返回的就是JSON.parse(webInstace.shell(e))
那么就说明webinstance.shell就是我们需要的解密函数,那么我们进去查看

这一段乱七八糟的就是混淆了
ob混淆的特征主要包括以下几点:
1. **变量和函数重命名:** 通过将变量和函数的名称更改为无意义、难以理解的字符串,增加代码的复杂性,使逆向工程更加困难。
1. **无用代码的插入:** 在代码中插入一些看似有逻辑但实际上是无用的代码,增加代码量,混淆分析者对实际执行流程的理解。
1. **控制流程的改变:** 改变代码的结构和控制流,例如插入多余的条件语句、循环或跳转语句,使程序的执行路径变得更加复杂。
1. **字符串加密:** 对常量字符串进行加密,使其在内存中的表示更加难以识别,增加分析者解密字符串的难度。
1. **反调试和反分析技术:** 插入反调试代码,以及检测分析工具的存在,阻碍逆向工程的进行。
这些特征共同作用,使得代码在保持功能不变的情况下,变得更加晦涩难懂,提高了破解和逆向工程的难度。
那我们的主要任务就是还原这个函数,把它重新变化成我们能看懂的东西
大概看了一下,执行下面的代码顺序是7,1,8,9,5,2,3,6,0,4,然后我们进行一下简单的整理,这里的倒数第二个函数我之前整理过一下,原来的不是这样的,我们找到了执行的顺序后,继续去浏览器调试(就是我们不知道的变量,就去控制台去输入,去看是什么东西)
function shell(data) { var _0x51eedc = { 'pKENi': function _0x2f627(_0x5b6f5a, _0x440924) { return _0x5b6f5a === _0x440924; }, 'wnfPa': 'ZGz', 'VMmle': '7|1|8|9|5|2|3|6|0|4', 'GKWFf': function _0x1a4e13(_0x40cfde, _0x16f3c2) { return _0x40cfde == _0x16f3c2; }, 'MUPgQ': function _0x342f0d(_0x19038b, _0x4004d6) { return _0x19038b >= _0x4004d6; }, 'hLXma': function _0x55adaf(_0x45a871, _0x161bdf) { return _0x45a871 + _0x161bdf; }, 'JdOlO': function _0x13e00a(_0x5899a9, _0x4bb34d) { return _0x5899a9 + _0x4bb34d; }, 'qrTpg': function _0x1198fb(_0x55b317, _0x22e1db, _0x1b091a) { return _0x55b317(_0x22e1db, _0x1b091a); }, 'pdmMk': function _0xe2b022(_0x4af286, _0x4c2fd4) { return _0x4af286 - _0x4c2fd4; }, 'xVKWW': function _0x1094a3(_0x5f3627, _0x2a0ac5, _0x3ad2e5) { return _0x5f3627(_0x2a0ac5, _0x3ad2e5); } }; if (!navigator || !navigator[_0x2246('0x26d', '0I#o')]) return '';
if (_0x51eedc[_0x2246('0x263', 'Jsmq')](null, _0xa0c834) || _0x51eedc[_0x2246('0x264', '!2eC')](0x10, _0xa0c834['length']))
return _0xa0c834;
var _0x554c90 = _0x51eedc[_0x2246('0x26e', 'Yb4P')](_0x51eedc[_0x2246('0x26f', 'BQ5p')](parseInt, _0xa0c834[_0x51eedc[_0x2246('0x270', 'Z2VK')](_0xa0c834['length'], 0x1)], 0x10), 0x9)
, _0x2cf8ae = _0x51eedc[_0x2246('0x271', 'yY#5')](parseInt, _0xa0c834[_0x554c90], 0x10);
_0xa0c834 = _0x9843d3(_0xa0c834, _0x554c90, 0x1)
_0x554c90 = _0xa0c834[_0x2246('0x26b', 'UwHa')](_0x2cf8ae, 0x8);
_0xa0c834 = _0x9843d3(_0xa0c834, _0x2cf8ae, 0x8);
_0x2cf8ae = _grsa_JS[_0x2246('0x265', 'RQ2o')][_0x2246('0x266', '3j7z')][_0x2246('0x267', 'RQ2o')](_0x554c90);
_0x554c90 = _grsa_JS[_0x2246('0x26c', '4VZ$')]['Utf8']['parse'](_0x554c90);
_0x554c90 = _grsa_JS['DES']['decrypt']({
'ciphertext': _grsa_JS['enc']['Hex']['parse'](data)
}, _0x2cf8ae, {
'iv': _0x554c90,
'mode': _grsa_JS['mode']['ECB'],
'padding': _grsa_JS['pad']['Pkcs7']
})['toString'](_grsa_JS['enc']['Utf8']);
return _0x554c90[_0x2246('0x268', 'cs*4')](0x0, _0x51eedc[_0x2246('0x269', 'MVsm')](_0x554c90[_0x2246('0x26a', '0J6f')]('}'), 0x1));
var CryptoJS = require("crypto-js")
function shell(data) {
var _0x51eedc = {
'pKENi': function _0x2f627(_0x5b6f5a, _0x440924) {
return _0x5b6f5a === _0x440924;
},
'wnfPa': 'ZGz',
'VMmle': '7|1|8|9|5|2|3|6|0|4',
'GKWFf': function _0x1a4e13(_0x40cfde, _0x16f3c2) {
return _0x40cfde == _0x16f3c2;
},
'MUPgQ': function _0x342f0d(_0x19038b, _0x4004d6) {
return _0x19038b >= _0x4004d6;
},
'hLXma': function _0x55adaf(_0x45a871, _0x161bdf) {
return _0x45a871 + _0x161bdf;
},
'JdOlO': function _0x13e00a(_0x5899a9, _0x4bb34d) {
return _0x5899a9 + _0x4bb34d;
},
'qrTpg': function _0x1198fb(_0x55b317, _0x22e1db, _0x1b091a) {
return _0x55b317(_0x22e1db, _0x1b091a);
},
'pdmMk': function _0xe2b022(_0x4af286, _0x4c2fd4) {
return _0x4af286 - _0x4c2fd4;
},
'xVKWW': function _0x1094a3(_0x5f3627, _0x2a0ac5, _0x3ad2e5) {
return _0x5f3627(_0x2a0ac5, _0x3ad2e5);
}
};
var _0x4da59e = {
'bUIIa': function _0x2a2af9(_0x779387, _0x4a4fec) {
return _0x779387 + _0x4a4fec;
}
};
var _0x9843d3 = function (a, b, c) {
if (0 == b)
return a['substr'](c);
var ret;
ret = '' + a['substr'](0x0, b);
return ret += a['substr'](_0x4da59e['bUIIa'](b, c));
}
var a = parseInt(data[data['length'] - 1], 16) + 9
, b = parseInt(data[a], 16);
data = _0x9843d3(data, a, 1)
a = data['substr'](b, 8);
data = _0x9843d3(data, b, 8);
b = CryptoJS['enc']['Utf8']['parse'](a);
a = CryptoJS['enc']['Utf8']['parse'](a);
a = CryptoJS['DES']['decrypt']({
'ciphertext': CryptoJS['enc']['Hex']['parse'](data)
}, b, {
'iv': a,
'mode': CryptoJS['mode']['ECB'],
'padding': CryptoJS['pad']['Pkcs7']
})['toString'](CryptoJS['enc']['Utf8']);
return a['substring'](0x0, _0x51eedc['hLXma'](a['lastIndexOf']('}'), 0x1));
}
console.log(shell("AA10EAA531F17D920C828814BD85A049FEEE5D8A6366D27ACE2B65B70723FCA32E1798F4AAA4A0EBAFE6F0A887490EA688C1804AF944DF6A73A2EBF3F7B888D9ECF16EF1F813CEEE7E28EBD393C448FC959D4BF3B1DC4CEA30AA3A1BAE70A39E9C1367A99DAAA4C8DF21D1F60B1F19E04F49DEE765D50252AD30DF665BBEEA4A4A5F68DCC573D62170E2B70378CCD600521CD9BE38459B5DFBB4C0C41391F97566FF8F51683E23EBF5CD06A817F158E8C9630A6FA1AD419AACDF23B16EFFECC1812AB70B88750B0F838A7B1E5ECE4D7B72CC7D8A0AC0B6A3544325BA0F1C77747F65D252F2D91088627CC6E4C939EE466DE96FC9527D19B418D60ED01E1C5EFD30DC004C372743D413913462D05EE715B4E43954236F12FE7F3D02AF4E09143AF706A4C94EDF4236345B5FB3CA6BC4ECB48E4193635CC3CFD753931D97C68B4376BE1C9F5ABEB9A8E45436CF3840347D7C9E75A0A7602B11824140B936B742DDCECDAC8D337CF160A24702752D3B18EF1DF68221774AEAA551BF93EF8C6F07D872AC65EF7EA598C296FFB5C661911C508DCD38C205DE0D3530C9662F6BF65190164BCC2F51F267E761437917C71A346932C54FBB6A46DC7517474785DB63233E5EF643B0CE09905B7DD97C7ACEA904CA47F8799E3CB20F3E6BA78DAA868BB9D6D0897E93706F49D65D51C3059834CAE9BB64FD47C966D6C05A297FE6F6DC7C2B30C647FEA880D32CA39407CF8EF20784B306AC3D1F304054E3395F9F58205A539816DAC6DD0E2E0241D10DD757535F7A3512723D1B6333FA26A4C7050802BDC6DF592637145F8C29B9914846111B8906A44544EAD0D0AB3FC3E0EA9EEB48AB4C6B37FA913AEF0A40D281BF2EEF0D6A76260795DAA226C15EB65A47549F390198616CC3AB5FB43FDE01F80E2A9C60011443767A80DCF948341247B54A4F3D00916F4F2EE449AB42575A1CD88F52AB996141B7573504FBBAA8E4DDC1753BC23C5CABEDA65A7933614FBB1A902E90E30C3EBA21A0BC5F68ABBABD6984C92B1B949FAD72D5C9B41C020535C91C2611F77D435730F2E0A1864041839D2F82B7DB265155109BA5EBA53901E6615A2104BB3E058F7C94B101CC8E5DF89E7FBC85AF0D64BAA4559D42513521F4B3E1F50002053FFDF9CA191F98E253C7A9D888EBC39C505585959BA7490EA688C1804AFE91FD7F840F268F77B888D9ECF16EF1F8D3518D3BC891DE50C5146D6C056B552BAEEC313D6D9B1205D5A5B8EB0CCD50CBC628D47745412C31D7AFC8B1C36E0FE0C20B1A2B6252F53706F15A542835E4D110BE62E5627E460AD61BF329CD692CDA6ABCA02B23D602AAC8B564B8C1F522FD7CBCF064F1ABCDF58C099D793134DB05E82EDE722CC5340F20284E5DA46F3293DA889C6D78EE695CE0E2ADDFA0837442DC95D0CF742FA5938E5E85B169DAC16676B9509BCD27B9811821EF146B7F419E989C5FB83FF628D045CABD1C8DE716AF124685D239F568ED599E9ED2E5E56A5314C982D19AD44AA67B78AB5BB9CBCD38B161DA55E2F8D6C120EC00E43C569E7F66FFD8B2AFA31E8A2B27D0908EE3CFB6750C4A7971E748C6261469B7942F719A4EDDE447C2068EEDAAA4C8DF21D1F608597DB880667DE6A5D50252AD30DF665993EEDB2B4DFEBED1250A516E3F93F9B8CCD600521CD9BE3A494E7BBCFFC9A80D2AF1139D91C27BDAC8B564B8C1F522FD7CBCF064F1ABCDF58C099D793134DB05E82EDE722CC5340F20284E5DA46F329243A33675108EA31CE0E2ADDFA0837442DC95D0CF742FA5938E5E85B169DAC16676B9509BCD27B9811821EF146B7F419E989C5FB83FF628DA9794A473EDEDD6D9925D9E686B77B3538C93CC59B6BE0D74ABBF1B6E0B92D8E21D0298584A85FD98B161DA55E2F8D6C120EC00E43C569E7CEE2FC262ECD38A4A2B27D0908EE3CFB61C9AC1FDFA015989CFD2BB708AAEF5F778EF5701938FDBA06C0A7A5ACEF3898C6A20F625D12227BC9390816A972EF5A14D580C6D4C4D20593DEB021D9E7066AA1F9C532623AAB3F8269CD6C69793BA39AA251E9545638EDAED6D2F0F80CEFACC69FDF902C13008F4DED3EE20DF7E9E09FA06F085909974DDC93D7716B16C910863944F785B5E9A4C2F2DAF5143C3EFA3DB5BC7B44DCCB11520BAC0A258A7568BC7DE62450052CC5A52E4EE804BD1C343665E1C5013598295B74B8EBF04A1F1D0B79032B659A6FFF434E8835C48F231A995857E0606A5ABFE9058FD92B20FDA06A98A881E76DA10D0325E769364566A17C99FCD11736DE63C352166266FE5DDCB8D0E651D994392B6B0BB70C33668CC9B1A8E660B9178B56F0A6232E8B4B65E0B99E15860C66DB30424B2848E9EA5C617EFD6493D7B5FA9B9C3ABDC0908F7F9833080D6DFDFF4C884857AF37EF04AD498612E6C853CAFC24DF7494AE35A56209297586CCFCCC9D042DCA5510194FE744A46DC7517474785DB63233E5EF643B0CE09905B7DD97C7AC8EEF07A30505153FCB20F3E6BA78DAA868BB9D6D0897E93706F49D65D51C3059834CAE9BB64FD47C966D6C05A297FE6F6DC7C2B30C647FEA1A8F7E891C54E1D4464B5989A4E9334A12F4EC605ACE5C466843E0DB4E3CB6F051AE1205AD247CFEAD5C661E29725D25B6333FA26A4C7050CD5130B24C914FD78B8D54C53D51F71511B8906A44544EADFBF86A8B58E4DC51B5A385CF11E6D369A4632073F046ACA406C0A7A5ACEF3898C6A20F625D12227BCF1E28C35A7AA22B14D580C6D4C4D20599B7CC2B83CE78362E4487A3234D3D21CE04DA8D7028266C812F70F1ABAED6D597641FCDAF5F53805C9C7D0AAADAEF31E18DB2A33CFC580BCF4C897D17729AB830F0019BF761A703CF7B4D656BE8BD48AFDD61EB9EC2D8B5984A885B8ECC9E078386B20BD858463AF065BF71DF528F0FD4AC281614D25F4CEB061C584E76C150F4C2FF354516062776AB94AD6D457B2B76AAE95B21DF5CAB99BFEC41BE85E226A9BA486E6AE84693C6AAAB1BF5BAE4EA4BEF8B33C2FBA58BBF2C9C12E377D25A43E00A035CE2D7ADEEE6B18857B301C27DC368F704146A2F7313F610EC7DFD1F7F0326A584482BF5F0D6A76260795DAA226C15EB65A475494C4ADDD70D4AF316FB43FDE01F80E2A9BF0F69A795B46A99E93F6EB9FC4DE1E3FD268401477733579AA251E9545638ED57BEC76C48FEE4F75C9C7D0AAADAEF311464DFE5107B1CF1CF4C897D17729AB830F0019BF761A703483E910AF7BE1B76D1F5CB51B87C4D7C984A885B8ECC9E078386B20BD858463AF065BF71DF528F0FD4AC281614D25F4CEB061C584E76C150AAD50F8C16898B071D293D1032E0FBFA913BE80459B85C2FDAC11B4C0A9E635951C52B8435242E054320F8B77B4F1D494BEF8B33C2FBA58BBF2C9C12E377D25AC0117C640FAC739DEEE6B18857B301C22CA28C9E94B449D5932932C5DEA595D106C0A7A5ACEF3898C6A20F625D12227BC9390816A972EF5A14D580C6D4C4D2054BE2E35238A9C3852E4487A3234D3D21F7905A7B4A8FC45F812F70F1ABAED6D5927537BA7E914EDEEE54A7946AD54BA16408DE298B4025C27DB24C37F73BA28BC40EE6CA7545BB15EFFECC1812AB70B88750B0F838A7B1E501D1E4E5F702CAC1AC0B6A3544325BA0F1C77747F65D252F2D91088627CC6E4C939EE466DE96FC9527D19B418D60ED01E1C5EFD30DC004C32E249081BFF4D0E0727ED9AE2A6C4FAFBE48518359A8764877659A29E8886E431281991A47031DD7E5946DD43F160DE235CC3CFD753931D916D7C4ACBE6E1879ABEB9A8E45436CF380FB823860F9A8E889BCF29AF207F2E25550F359C020755837CF160A24702752014078E4005D994BA49227790C6FC9DB8D51BA325CCE7C4C679A58218DD80C838CCD600521CD9BE3159F7D113A894325EF6FED5FDDF96D26AC8B564B8C1F522FD7CBCF064F1ABCDFDDF8A7E16864FEAE8A7C14840A9A85C1CF4C897D17729AB830F0019BF761A703A3BA5A1D5FF19EDA698EFE86AEFE722C984A885B8ECC9E078386B20BD858463AF065BF71DF528F0FD4AC281614D25F4CEB061C584E76C150AAD50F8C16898B07DAB9A6A52E844E0C8295C70368A2DA763A1907BD16F91B4BB7623099D69EB07A84122FEB015E645F4BEF8B33C2FBA58B5FFF59E957D95816CD5CE86F5D1EC2F2EEE6B18857B301C280F788F7000A050B08CD143A41349167ADCBCDBDDCAA7ECEF0D6A76260795DAA226C15EB65A475498E1BB8821366EBC9FB43FDE01F80E2A9BF87A18924C2648350C16319395AB52A0864FE3CB2F8838D9AA251E9545638ED57BEC76C48FEE4F75C9C7D0AAADAEF31E18DB2A33CFC580BCF4C897D17729AB830F0019BF761A703C9CA0E315E453B04AFDD61EB9EC2D8B5984A885B8ECC9E078386B20BD858463AF065BF71DF528F0FD4AC281614D25F4CEB061C584E76C150F4C2FF354516062776AB94AD6D457B2BB5A4BC6BD783F63E0F53F953377EBA267EA381B99F39F11690207E747692278E4BEF8B33C2FBA58B5FFF59E957D95816C3418226ED3BE5C5EEE6B18857B301C29038727D5E74EF93A2AFAA094344AD68B99E15860C66DB30EFA0FED31D520EAB9432D4DC59A236359C3ABDC0908F7F98EC3396F21D704BE11911C508DCD38C20718678EDF5942C4BBF65190164BCC2F55C7FFC7D3F3F6CE97F158E8C9630A6FA1AD419AACDF23B16EFFECC1812AB70B88750B0F838A7B1E5ECE4D7B72CC7D8A0AC0B6A3544325BA0F1C77747F65D252F2D91088627CC6E4C939EE466DE96FC9527D19B418D60ED013275F07F151CCA6CA0A39AC63254C1B86E92EC51302F2A13BA0D18755B1399F4FC7CAE1B9038F44B39E6BB58600F09E8812E3DBCE62781D735CC3CFD753931D9C6634B89F4AA8BA806A8427B26B566C280FB823860F9A8E8B3CE61195F07AF5DC524155CC05BB69D960CA24C591E08E35D5A5B8EB0CCD50C327C6AC2BEBB10531D7AFC8B1C36E0FEA4F21BBAAC5F7E33F7C38BC49639D4F4BFA18BCCBFDC18739AB42575A1CD88F5EF89FEB4E1897CFFC69FDF902C13008F4DED3EE20DF7E9E09FA06F085909974DDC93D7716B16C91000FED0AF01333E239D3A66F51264989C3DB5BC7B44DCCB11520BAC0A258A7568BC7DE62450052CC5A52E4EE804BD1C343665E1C501359829C1E619CFA77410C5B83A7DB3CBB3EE7E7FE3035FE6A28D81F96EB2003C80B02B86BF3FE8D73376FAA0D7D78937E041C40325E769364566A17C99FCD11736DE633440BA66FF5F84A6B8D0E651D994392B7D7B8635881728928B25ABC4CF308D1DF0D6A76260795DAA226C15EB65A47549F390198616CC3AB5FB43FDE01F80E2A96E0063AA0DB3F228223B9F7790AC1D6C0864FE3CB2F8838D9AA251E9545638ED64BC97ECE0DE60ED5C9C7D0AAADAEF31E18DB2A33CFC580BCF4C897D17729AB830F0019BF761A703590959F4E20504395514D6EB7BB9831D984A885B8ECC9E078386B20BD858463AF065BF71DF528F0FD4AC281614D25F4CEB061C584E76C150AAD50F8C16898B07D734E91C064C08732274A5186BA1F9C28F2F3E921E7D35CBDBF89CC49BF5B0CA7740BC5A052B01044BEF8B33C2FBA58B5FFF59E957D95816A6145C2C58790011EEE6B18857B301C2B8EE7981A4A20247F774BD36345149525D5A5B8EB0CCD50CBC628D47745412C31D7AFC8B1C36E0FE2D7D336854E084F3D8BFA265F6093C128B8A1A120C09925F9AB42575A1CD88F5C979009B9CC4DD3B4FBBAA8E4DDC1753BC23C5CABEDA65A7933614FBB1A902E90E30C3EBA21A0BC5F68ABBABD6984C92B1B949FAD72D5C9B41C020535C91C2611F77D435730F2E0A1864041839D2F82B7DB265155109BA5EBA53901E6615A2104BB3E058F7C94B10DCCFA715B9A6EBA332F18DA6D1F2A687358FD58EAFEE8D2ACC1D8A3033F0DF7C969C2A24A19235EBBC39C505585959BA7490EA688C1804AFEB50386F6F3215487B888D9ECF16EF1F58CE70286CC26DB6E970583A270D2D144E0F22D0A2F7F1536FC69B3004C20A752AB11ADBB5ED4F9475F599F4F4267A7317526F4DF55E83A8D102B5C9173E6B661261DDB824844447A5AFC04C3440736BE4E12C6161123014F7CBB37B41C16ACC567F09E85BFE2E369F6B078BA9C1A419A949540764E29CFE2AC862405193927BF564C86D3E5882C85E82EDE722CC53405E950C6025E7437B28ED5BDC360ADE55CE0E2ADDFA0837442DC95D0CF742FA5938E5E85B169DAC16676B9509BCD27B9811821EF146B7F419E989C5FB83FF628D920B9FBA6ACD28921EB2AEF1155BF216F152AA497F7E9501101E95BDB2630D37D6A1ED469E99F4D88B161DA55E2F8D6C120EC00E43C569E70FCEA51C783D18A1A2B27D0908EE3CFB77D0DEF46CB252ED3B761C1A45D8A944974BB82C85931CB6609855252626E58579AC03B0E0A264377C8157B6590C9B2D6926523D110B695F6E7379A0A35E260A4857AF37EF04AD49BEC0C4DDF97A100BDF7494AE35A5620933F017E36718D34871A346932C54FBB6A46DC7517474785DB63233E5EF643B0CE09905B7DD97C7AC7DA141F1C29E0D8DCB20F3E6BA78DAA868BB9D6D0897E93706F49D65D51C3059834CAE9BB64FD47C966D6C05A297FE6F6DC7C2B30C647FEA551ED97C372EBD57C783B83E8FEA78CF7A5E4C603F82B701FC0F75E99F560D38536FDB7D8C531FB8E19F45A9BA68062FB6333FA26A4C7050C327FBFF7ED3CD5E8571E7DC61FEE87C11B8906A44544EADF93C41C77B2B6563FF2E776687BEA5A6B99E15860C66DB30782F533F176A5D3DF485422B7A01799B9C3ABDC0908F7F98952A3A2F725233181911C508DCD38C20F4B00B62EC313B57BF65190164BCC2F5AA4D361A3ABD4A440232CEE8E5CBF4E41AD419AACDF23B16EFFECC1812AB70B88750B0F838A7B1E5CB83352A54072690AC0B6A3544325BA0F1C77747F65D252F2D91088627CC6E4C939EE466DE96FC9527D19B418D60ED013275F07F151CCA6C4FFB4A3359A65C4A6E92EC51302F2A13D1B7E7E26D2250946089E6A49493B74FF3A01B4CCB8A56091EA23BA95AE1BC0135CC3CFD753931D975FB02571981122606A8427B26B566C265D85675F4BFE9C50C8120EDADB7ADDD2AB11ADBB5ED4F944D1B7FD198A95A7428BE6016AA4F1ABFD102B5C9173E6B66D60831F741BFA649A5AFC04C3440736B80E46232FBE73122F7CBB37B41C16ACC567F09E85BFE2E369F6B078BA9C1A419C8E31171703F60EE5368CC0DAD56CF7D664772AABE2A8EF95679CD61E10E03C4A7767F6EDF115720E9A55D4FC3CB9C35282D136BF772BD634645B6CAE09228BBCD597D2484EF3068EDF7E115435B688B2A5E10B99DE5250BFA12ED6CAA39DC6AB178C88CB00069CED6A74601F110CB26B9C78170278D2DD8FA261E6C334AA28E2A2688A94A467BFF0D2EC442740F1F1A8F817B00A5705FEA9F981BCA0870496E6BC88FB6EAC8A00F470FB432BD05F517A995ED128332F58186799B96E3389F81A7BAD006510CE010F0D6A76260795DAA226C15EB65A4754924D817B81CA5404BFB43FDE01F80E2A91601E02AA856191E636247AE7F2C9BCF739F9BF365A757BB9AA251E9545638EDDA0D183768A1CC505C9C7D0AAADAEF311464DFE5107B1CF1CF4C897D17729AB830F0019BF761A7034964EC6508695C9B5514D6EB7BB9831D984A885B8ECC9E078386B20BD858463AF065BF71DF528F0FD4AC281614D25F4CEB061C584E76C150AAD50F8C16898B07A8EBB904082CB699FC4F91AB678257B2B65F3941A29FA5D433829B62490D6FE97B365F7F2B268E944BEF8B33C2FBA58B5FFF59E957D95816348D517A3B0CE32CEEE6B18857B301C252CAAF82E55DBCC535ECFA360EFAB83E37CF160A247027521CEBC47021FF4DA49181AD7BAC62AEF7A4655A3926E42B9DBA8FDC7F09554E448CCD600521CD9BE362D0AFB95D55B9D6EF6FED5FDDF96D26AC8B564B8C1F522FD7CBCF064F1ABCDF58C099D793134DB05E82EDE722CC5340F20284E5DA46F32971FF54360BDEABCCCE0E2ADDFA0837442DC95D0CF742FA5938E5E85B169DAC16676B9509BCD27B9811821EF146B7F419E989C5FB83FF628D92B4937AC641B4D827E915FBC3AA9E2676FCF963405DE0B885D8465225562B605916F5690D6B6BDD8B161DA55E2F8D6C120EC00E43C569E7FD6C50F243BB503BA2B27D0908EE3CFB2EC16233DF30719CDDD698A3910B4227CFA4C9E43CCE302166FC0297641E44B437CF160A24702752F1A9B4BBB7D775516F203378825D08A0A4655A3926E42B9DFF816BA462639F428CCD600521CD9BE3159F7D113A894325E193C5E8BDBC4391AC8B564B8C1F522FD7CBCF064F1ABCDF58C099D793134DB05E82EDE722CC5340F20284E5DA46F32998D70B08D8854BDFCE0E2ADDFA0837442DC95D0CF742FA5938E5E85B169DAC16676B9509BCD27B9811821EF146B7F41924B8E1060AEE83DBC09ABBACB377E0657A32C56A99B44AEB6272C4614CB6BB3841F687D790B7EB5628670D0322BDD6488B161DA55E2F8D6C120EC00E43C569E7E5FA316D83B068B1A2B27D0908EE3CFBD14ECC9C46BCE0BEB4EAB7685DB3F16CA276AC49429A05B0DAAA4C8DF21D1F608597DB880667DE6A5D50252AD30DF665F6E978094B2DB468C5F846E11C6E52B1110BE62E5627E460AD61BF329CD692CD64A66255D7C690974FBBAA8E4DDC1753BC23C5CABEDA65A7933614FBB1A902E90E30C3EBA21A0BC59A171F5042ADA9501EDCDAF01D8064F841C020535C91C2611F77D435730F2E0A1864041839D2F82B7DB265155109BA5EBA53901E6615A210A4773AB45D069C72AED92240FBA9273D5D5A7E45AA8EE492A810C4DE6E391CD88919DB3EC93E3747424C78866E657F76BC39C505585959BA7490EA688C1804AF636BF4861E89BBA67B888D9ECF16EF1FEEEDB797A13BCED434CBABE6B4E6CEBB2AB11ADBB5ED4F94C45474AE4F7134F6C694D20B9900536CD102B5C9173E6B6695F0039959F420ADA5AFC04C3440736BE4E12C6161123014F7CBB37B41C16ACC567F09E85BFE2E369F6B078BA9C1A419A949540764E29CFE5A108E04FD5FE4415E3FD4EF3B7269F25E82EDE722CC5340EC43DF7F6A09FED5AF9C1C741331EAE9CE0E2ADDFA0837442DC95D0CF742FA5938E5E85B169DAC16676B9509BCD27B9811821EF146B7F41924B8E1060AEE83DB57D10CD136D19BCEE4CA8ED4B30A526A1DB53474AB951E1125953CBBCEBD95F265111C0D534BC44145EFB7A7A1628012B4D1542E815ACF4B308F6DAF33DE0E8C0B17B6BB7957B09B"))
这是我修改后的代码,试运行后也没有问题了代码还是参考我提供的网址