本文仅用于编程学习,不提供任何破解版或注册机。
今天在52pojie论坛看到一个人发了个求助,简单说就是想练习做一个某起名软件的注册机,但有一出乱码的地方看不懂,代码如下
public static void FuncWriteRegFile(ref string pcn, ref string psw, ref string tyear, ref string tmonth, ref string tday)
{
string tmpstr = "格\u0003 ?\u0001 媀\bSW?聥\a吚\u000f咘 h @ 瑜\t 吚塃黸\bj\u000eX轾 奛`婩D€?鲑\u001b蓙 ?伭 p 嬞\u000f痌??儵 +?葔M鴕\u0003塃鴍 岶bP\u0015\u0018\u0010罿凐塃\btO鯢`\bt%伱 \u0010 SP柁\u0015 吚t8u?u?u\b鑼\u0015 吚t&險岾 QP杓\u0015 吚t\u0016u鴭5lP罿Vu\b鑖\u0015 吚u\u001fu?\u0015\u0010\u0010罿儅\bt\tu\b\u0015\u0014\u0010罿给\u0003 隓h?罿Vu?u鳶鑇?u\b\u0015\u0014\u0010罿婨鼆g\u0004 ";
string tmpstr2 = string.Concat(new string[]
{
pcn,
"|",
psw,
"|",
tyear,
"|",
tmonth,
"|",
tday
});
string contents = ModPCAndRegcode.GetEncrypt(tmpstr) + "\r\n" + ModPCAndRegcode.GetEncrypt(tmpstr2) + "\r\nMZ \u0003 \u0004 @ \u000e\u001f? ???L?This program cannot be run in DOS mode.$ 轊\r\n#?dp?dp?dp?ep?dp`\a}p?dp`\a[p?dp\r\n\a!p?dp@\axp?dp`\aYp?dpRich?dp PE L\u0001\u0004 P\u0017? \u000e!\v\u0001\a \r\n> \b ? \u0010 P 罿 \u0010 \u0002 \u0005 \u0001 \u0005 \u0001 \u0004 € \u0004 \u0003 \u0004 \u0010 \u0010 \u0010 \u0010 `K a\u0002 DI P ` ? p X\u0001 p\u0010 \u001c x\u0002 D \u0010 d .text ? \u0010 > \u0004 `.data P \u0002 B @ ?rsrc ? ` \u0004 D @ @.reloc ? p \u0002 H \r\n @ B\u001e鄛; ??* ??5 ntdll.dll USER32.dll KERNEL32.dll \r\n rF鍂鋡浶鋡蠕鋡E氬w.沅w1撶w蔈鍂\u001a射w?鍂(6鍂g1鍂?鍂q袖w獿鍂W\u0003鎤\u001f射w仒鍂X4鍂彲鋡 \bK褀 e\u0011鴚 E噠; \u0002 \u001d ? ? .\\ SOFTWARE\\CLASSES .DEFAULT reg NB10 E\r\n噠;\u0001 vmmreg32.pdb 婦$\b冭 t\u0012Hu\u0014j ?\u001a 吚t\t3离\b楮\u0019 3繞? V媡$\b?吚W?\u0010\u0010罿t\u0006P變& 婩\u0004吚t\aP變f\u0004 _^? 婽$\u0004SVW媧\u00043拦 螳婤\b?j Y+羣-?9咑媆9\u0004t*;饂&凔t\u0010f侞 s\u001a\u000f敷媄\u0004?硧49\u0003?苪?繽^[? 格\u0003 塍婦$\b婰$\u0004k?\u0003A\u0018﨟\u0019億$\f t\b€H\u0018\u0004€I`\u0001? U嬱冹\u0010S媇\bW?婳\u0010凒u\a3篱 婼\bV?9?\u0003?驂U餽\r\n儀\bu\a3篱 j 3蒦;謮M魤M黺i?>塢\u0010儃\u0004t\u000e\u00033?>塃鴭?騬靸} t\u001f+]鬝u?u?\u0015\\\u0010罿婾饍?\u0001]鼖]鴭\r\nM鼌蓇\u0005塢鼖?騭\u0018?>儀\u0004u\b\u00030;騬耠\u0003塃?騬殝]\b嬃+菈G\u0010婥\f僆\u0004僆\bS?璧?3繞^_[陕\u0004 婦$\u0004婰$\fV媡$\fk?\u0003p\u0018婩\f;羠\u00043离s媀\bS+袓?\u000f 併 ?侞 Wv\u0005j\u000eX隤S6?* 孁?t鞻?柙?婫\u0010凐u\u0012婩\b塆\u0010\u0003莾H\u0004僅\b?\u0003菋?N\b\u0001N\f婲\f?婦$\u0010€N\u0018\f塣\b€H`\u00053繽[^? 婦$\u0004V媡$\u0010W媩$\u0010k\u001c\u0003x\u0018;w\fv\u0005j\u000eX隡SW鑟??婹\u0010?\r\n?;髒\u0005j\u000eX?+迌?r\u0018\u0003謮Q\u0010婬\b?僉0\u0004塋0\b?0?婸\b?塓\u0010)w\f婰$\u001c?3繹_^? 婰$\u0004婣\u0010V?W\u000f穨\u0014;菎P\u0001v\u0006f塅\u0014?S媃\r\n\u0004?撾? t\f\u000f穨\u0014B兠\u0004;譾颷_塓\u0010^? U嬱Q婨\f婱\bk?\u0003A\u0018S媇\u0014?V?W?\u001e孃+?x\b塎黶i儂\u0004uc婱\u0010+螊2;蝫X+駜?塽\fr\u001d?9塽\b?\u0011婻\b僋\u0004塚\b婾\f?婾\b?婻\b\u0003?\v)H\f婱鼖A\u0010;莡\u000f塓\u0010??\b婩\b;莟\a凐u耠\u0003塚\b3离\u0003j\u000eX_^[陕\u0010 婰$\b婽$\u0004?僆\u0004V媝\u0010塹\b嬹+饓p\u0010?\u0001B\f^? 婦$\u0004婰$\b9H\u0010v\u0003塇\u0010婡\u0004? ? U嬱Q僥 S媇\bf儃0 V媠\u0018W媨(墋\b\u000f唨 奆\u0018?tH儅\fu\u0004?tZ婩\b?u\b塆\u0004婩\fu\u0010塆\bf婩\u0010€g\f鹒塆\u0016?4 吚tOv\bWu\u0010?4 吚t?媫\b?儅\ft\u0016\r\nv\bWu\u0010v\u0014u\f瑁( 吚u\u001e\u0003~\b\u000f稢0E鼉?9E鼔}\br€3繽^[陕\f 给\u0003 腧婰$\u0004婣\u0018婹(V3鰂9q0v\u001a兝\u0018W€ 麎P?P?穣0F兝\u001c;鱮隷^? 婦$\u0004\u000f稨0吷V媝\u0018v'W孂奆\u0018$\a<\u0001u\u0010€~\u0019 u\r\nV鑆?€f\u0018 €f\u0018齼?Ou輄^? 婦$\u0004?RGDBu\ff儀\u0006 u\u00053繞?3缆\u0004 U嬱冹 V媢\bW\u000f穨0岹\u0004k?P墋\b钃& 嬓呉u\bj\u000eX閯 嬒k?S嬞灵\u00023缷珛藡]\b僥\b 冡\u0003呟螵岰\u0004塚\u0018塅\u001c媣(vR峼\fVu\f桧2 吚tKj 岴郟u\f铔2 吚t9岴郟鑍吚t3墂\b婨鋲G鼖E?w?E\b?\u000f稥鰤\r\nG\u0004兦\u001c9]\br?繹_^陕\b 给\u0003 腧格\u0003 腚V媡$\bv\b栲% 吚?t\u001bh? 栊% 吚塅\u0004t\u00043离\tV??j\u000eX^? V媡$\fW媩$\f\u000f稧0;餽\r\n格\u0003 閾 k?\u0003w\u0018S鯢\u0018\u0001u|V铚嬝呟u_P兦bW\u0015\u0018\u0010罿孁?t\u001cv\u0014W?2 吚t\u000fv\b6W杓1 吚u\a圾\u0003 ?6鑩?吚u\a获\u0003 ?V柚?嬝呟t\u0016?t\aW\u0015\u0014\u0010罿V钃?嬅?W\u0015\u0014\u0010罿€N\u0018\u0003﨔\u00193繹_^? U嬱Vu\f媢\bV?吚u3婱\f\u000f禪\u0010k?\u0003N\u0018W媦\u0004?梾襙u\u0011Ru\fV枞?格\u0003 ??\u0003蕥U\u0014?^]? U嬱VW媫\b\u000f\r\n穡0侢? 塽\bs\u0018;w\u001cr岶\u0004k?Pw\u0018栳$ 吚u\bj\u000eX閼 僄\u001c\u0004塆\u0018k?\u0003w\u0018S媇\f伱\u001f\u0010 併 ?V塣\b鑞?吚t\u0005j\u000eX隺僨\u0010 僋\u0014艶\u0018\a艶\u0019\u0001岰鄩F\f? RGDB塜\u0004婲\ff僠\u0014 塇\bf婱\bf茾\f\b f塇\u000e茾\u0010 婲\f僅$僅(塇 fG0僌2\u0001€O`\u0005V钁?[_^]? U嬱S媇\bf儃0 VW\u000f剨 僥\b \u000f穥0嬿k?\u0003s\u0018隿冾\u001cO亊\u0010 sV儅\b t\u0010婩\b+F\f\u0003E\f= ?婨\f;F\fw8WS柃?吚u-9E\bt\u000eu\fWS鑤?吚u\u0011u\u0010u\fWS桫?吚tIj WS鑌??u?}\bu\f荅\b\u0001 閦\r\nu\fS鑻?吚uN\u000f穥0u\u0010Ou\f嬿k?\u0003s\u0018WS璇?吚u'V??\u000f纷\u000f啡菱\u0010\v褘M\u0010?塛\u0004?+\u000e媀\u0004??离\fj WS桁?j\u000eX_^[]? U嬱W媫\b岴\bPu\u0010u\fW杼?吚u(V媢\fu\bk?\u0003w\u0018V鑾?u\u0010V瑾?j\u0001u\fW锠?^_]? U嬱冹\u0010W媫\b婫\b峂黁w\f塃\bP鐰\u001f 吚\u000f呇\u0001 婨黃媂\b Vj w\f? u\b#?迚]鴫E痂? 岴黀Su\b?\u001f 吚\u000f厰\u0001 Su\b?! 吚t\u0004€`\u0002飲M鼖Y\u0004#?_\fu\u001a吚t\t婱饓H\u0010婱鼖A\u00043E??A\u0004隑j u?u\b鑕\u0019 ;\r\n迚]?兂 岴黀Su\b琛\u001e 吚\u000f?\u0001 婨鼖\u0018#?_\fu菋\b3M??\bj\u0001u?u\b?\u0019 \u000f禛\u0016P\u000f稧\u0014Pu\b杩?w\fu\b棹\u001a 媉\u0010€O\u0002\u0002;?冞 岴鬚Su\b?\u001e 吚\u000f吺 婨魤]鴫E鼖X\u0004#?辳3岴鬚Su\b?\u001e 吚u婨?p\u0004j\u0001u?u\b璎\u0018 閲 格\u0003 閲 婨鼖\u0018#?辳\u0011岴鬚Su\b栀\u001d 吚t!婨鼖X\b#?_\ft\u0011岴鬚Su\b杌\u001d 吚t\u0003兯u?u\b枥\u001f 吚t\u0004€H\u0002\u0002婨?禜\v\u000f稝\fQPu\b桄?j\u0001u?u\b?\u0018 u?u\b?\u001a ;??3繼[_陕\u0004 U嬱Q僥 岴黀u\fu\b鑄\r\n\u0014 吚u.婱鼖A\b婹\f;PHVt\u0013鯜`€uQ柘?婱鼖痣\u0003j\u0005^Q?\u0014 嬈^陕\b 婦$\b\u000f稨\r\n\u000f稰\bV媡$\bfN\u000ef儈\u000e W峾\u0011\ft\u0016媀\b?\a+?諶QP\u0015\\\u0010罿兡\f)~\b_^? U嬱QQ儅\f t\u0014ju\f\u0015\u001c\u0010罿吚t\u0005jWX隸V岴\bP璧\u001d 嬸咑uM岴黀岴鳳u\fu\b鑳$ 嬸咑u4婨\b€x\u0017\u0006t\u0019婬\b鯝`€u\u0010u?u\\婨\b?j\u0005^\u000f稨\u0014j\u0001Qp\b钘?嬈^陕\b U嬱冹\u0010SV媢\b鯢\u0002\u0010婩\b塃鴭E\fW塃\bt\u0011婲 ;羠\r\n+翂E\b婩$?婩\u0010? ;脡E黶:岴餚u?u\a\u001c 吚\u000f呡 9E\bt3婨饗8j \r\nu??u? M\b;麎}黵砌F\u0002 \u000f劔 婩\b媝\u0004闇 岴鬚婨?蓨H\v\u000f稝\fQPu犍吚塃\buS媇\u0010呟媫\u0014t.婱?稟\f9\aw\t荅\b ?P兞\u0014QS\u0015\\\u0010罿婨?稝\f兡\f€$\u0018 婨?稝\f?婨?稝\fj Pu忬媫黬 Wu? 婨\f€N\u0002\u0010塅 墌$隩儅\b t\u0015?M\b咑u窀\u0003\u0001 _^[陕\u0010 媫\u0010僥\b ?媇\u0014t&婩\b9\u0003w\t荅\b ?P岶PW\u0015\\\u0010罿婩\b兡\f€$\a 婩\b?婨\b牖U嬱u\u0014u\u0010\u0015 \u0010罿吚t\u0005jWX?岴\bP杳\u001b 吚u\u0012岴\u0014Pu\u0010u\fu\b鑂?]? \r\nU嬱V媢\bf婩\u0014f=t7峂\bQ3蓨N\u0016\u000f防QPv\b韪?吚uN婨\b\u000f稰\u000e婱\f;蕆\u0016\u000f稦\u0014j Pv\b钖??\u0001 ?\u000f稰\u0010\u000f穚\f\u0003聟蓫D\u0006\u0014t\u0011\u000f穚\b\u000f稰\r\n\u0003餓岲\u0016\fu飲M\u0010?3繼]? U嬱V? \u0010罿W媫\u0014j\u0004W謪纔07u\u0010謪纔%媫\u001c?t\u0012j\u0004W謪纔\u0015j\u0004W謪纔\f儅$ u\u000f儅 t\u0014jWX_^]? j\u0004u$謪纔鞃E\bP枨\u001a 嬸咑uA岴\u001cPu\fu\b?嬸咑u,u$u Wu\u0014u\u0010u\u001cu\b? 嬸婨\b\u000f稨\u0014j Qp\b璧?嬈霙婦$\u0004?CREGu*婬\u0004侚 \u0001 t\b侚 \u0002 u\u0017鯜\u0012\u0004t\fj \r\nP?\u001d 吚u\u00053繞?3缆\u0004 SUV媡$\u0010WjV铔\u001b P罿3呻\b;苩\r\n嬋 吚u綦\u000f吷 u\aP罿??媬\u0004?\u0010\u0010罿?w\u0004璺嬊?P諈u韹F\b吚t 3?^\f孁v\u0012?吚t\u0003P誄兦\b;^\fr?v\b諎F\u0018吚t!3f9~0嬝v\u0012S鑎?\u000f稦0G兠\u001c;鴕?v\u0018誚誣^]3繹? U嬱侅\b\u0001 V媢\bf婩`?t\u0004≒t\a3篱? SWj f\u0010 崀bWf塅`荅\u0003 兯\u00150\u0010罿吚\u000f刼\u0001 鯢`\u0004t{W\u0015 \u0010罿嬝侞\u0004\u0001 \u000f僒\u0001 W?,\u0010罿崊P譑t\r\n€?\\u髤踭€? ?h?罿崊P讔咗?P鑃 凐塃\b\u000f?\u0001 j 崀bW\u0015\u0018\u0010罿嬝凔tx?j\u0001W\u0015\u0018\u0010罿凐塃\b\u000f勝 凔u\u0006鯢2\u0001t(鯢`\b婩\u0014t\a\u0005 \u0010 ?兝 塅(j 岶 Pu\b鐱 吚tu\bSV鑿\u0015 吚塃黸\u0011u\bSV璐?吚塃黷/凔t\aS\u0015\u0014\u0010罿儅\btr凔t崊P\u0015(\u0010罿j\aW\u00150\u0010罿險u\b?\u0014\u0010罿變?t-S讔FbP荅\u0003 \u0015(\u0010罿吚t-岶bP崊P\u0015$\u0010罿吚t\u0018V桧?V栳\u0015 僨2f`鷥e j\a岶bP\u00150\u0010罿€f`飲E黖[^陕\u0004 V媡$\bf婩`≒u\u0018f Vf塅`\r\n枨\u0015 V柩?€f`?繼? V?hP罿?嬈?PT$\f咑u骬? U嬱V媢\b婩\b婬HW峌\bRQP塏\f鑉\u0016 孁?u4婨\b€f\u0002閒?HK婬\u0004佱 Wv\f塏\u0010f婬\fv\bf塏\u0014夽\v團\u0016柰\u0010 ?v\b栎?嬊_^]? U嬱QQSVWu\f\u0015 \u0010罿兝dP?\u0019 嬸咑u\bj\u000e[?\u0001 j\u0019Yu\f3缷珝FbP\u0015,\u0010罿媇\u0010塢\u0010僥\u0010\u0002u!j u\f\u00154\u0010罿凐u\r\n圾\u0003 轲 P\u0015\u0014\u0010罿儅\u0010 f荈`\u0003 t\u0006f荈`C 雒\u0004荈 CREGt€N`\b荈$ \u0002 ?荈$ \u0001 3€?G鲔V墌2荈@RGKN荈P\t \u001b蹆NH僋L冦\u007fCf\r\n塣6瑕\u0014 嬝呟uq鯢`\bu\a荈\u0014 jV瓒?嬝呟uV岴黀岴鳳V桎\u000f 嬝呟uB婨鴫FH婱 \tA\b婱?\u0001婱?A\u0004婨黤!X\u000e婨黤丠\fWu鳹鑲\u000f V鐴?嬝呟t\u0019儅\u0010 u\tu\f\u0015(\u0010罿V鑬?嬅?P罿?婨\b?hP罿?3繽^[陕\f U嬱QSVWu\f\u0015 \u0010罿兝dP杈\u0017 嬸咑u\f荅? 椋 j\u0019Yu\f3缷珝FbP\u0015,\u0010罿j u\f荅\u0003 \u0015\u0018\u0010罿孁?tnj 峖 SW柙# 吚tWS璞?吚t)僨2鷣~$ \u0002 u\u0004€N`\bj 峖@SW瑭# 吚t,?RGKNt\t\r\n荅\u0003 ?V鐿\u0013 吚塃黸\u000eWV鑜?吚塃黷\u0012W\u0015\u0014\u0010罿V鑾?婨;W\u0015\u0014\u0010罿u\f\u00158\u0010罿凐t\u0012Pu\f\u00150\u0010罿吚u\u0004€N`€P罿?婨\b?hP罿?3繽^[陕\b U嬱侅\u0004\u0001 亇\b\u0002 €t 亇\b\u0003 €t\u0017亇\b\u0001 €u\u0006儅\u0014 u\bjWX閼 V媢\f咑t\u0012jV\u0015\u001c\u0010罿吚t\u0005jWX雟岴\bP?\u0014 婨\b鯜\u0002\u0004u\bp\b栳?咑u\u00043离Tj 崊Ph\u0004\u0001 V\u0015<\u0010罿吚t\u0006嵉婨\u0010?t\u0015冟\u0002燕P婨\bV兝\bP杷??婨\bV兝\bP??吚u\bu\b鐹?^陕\u0010 j t$\u0010t$\u0010t$\u0010?\r\n? 岲$\u0004P琛\u0013 吚u\f婦$\u0004p\b??? U嬱QQ儅\b t5u\b鑤\u0004 吚u)u\f岴黀u\b璁\u0004 吚v\u0016岴鳳岴黀j 铔\u0004 吚u\u0003@?3郎? U嬱QQju\u0010\u0015\u001c\u0010罿吚t\bjWX樗 亇\b\u0002 €t\u0013亇\b\u0003 €t\r\n蛤\u0003 榀 W岴\bP?\u0013 孁?\u000f厴 媫\f岴黀W鑑吚t\u001bj 岴鳳Wu\b鑧\u0004 吚u\u000fuv\u0012 框\u0003 雃婨黇兝\u0010P桷\u0014 嬸咑u\u0005j\u000e_隠W岶P\u0015,\u0010罿婨鼔F\bu黈铻\u0015 u\u0010團\f岶\u0004P桦?孁?u\u0016婨\b婡\b婡\u0004?婨\b婡\b塸\u0004?V\u0015\u0010\u0010罿^嬊_陕\f U嬱Q\b\u0002 €t\u0013亇\b\u0003 €t\r\n蛤\u0003 閴 S岴\bP?\u0012 嬝呟uv岴黀u\f或\u0003 鑾?吚ta婨\b婡\bV媝\u0004W3?婨?F\bu\u0011P岶Pu\f?\u0015 吚t孇?咑u唠-?u婨\b婡\b?塇\u0004???媬\u0004W??W鑱?V\u0015\u0010\u0010罿3踎^嬅[陕\b U嬱冹\fSV媢\bW岴鬚3跾V桀? \u0001 雖岴黀5|P罿岴鳳岴\bP5€P罿Cu魤}\bV荅?@ ?\u0019 吚u#儅?u\u0003M?u?5|P罿u?5€P罿u\f?\u001c \u000f稦\u0014j Pv\b鑓?岴鬚SV鑪?吚t弮=xP罿 w}\u0005xP罿岴\bP5€P罿3跾險j 岴黀5€P罿CV鑹\u0002 \r\n吚u3j\u0001岴鳳5€P罿u\f鑡\u0002 吚u\u0013u?u\u0017ue\u0010 u]\u0010 岴\bP5€P罿SV墋\b鐷?吚t?xP罿_^[陕\b VWh \u0001 枥\u0012 吚?\u0010\u0010罿P罿u\u0005j\u000e^?h\u0001@ 琚\u0012 吚P罿u\u0005j\u000e^?媡$\u0010?xP罿 Vt$\u0010钑?v\b璜?嬸5€P罿?5|P罿譥嬈^? SW鑣\u000f 孁?u\u0005j\u000e[隸VW?\u0011 j\u0001t$\u0018峸\bV桄?嬝呟u=W鑤?嬝呟u\u0010Wt$\u0014鐽嬝呟t\u001a?j 兝bP\u00150\u0010罿?兝bP\u0015(\u0010罿6鑨?W鑉\u000f ^_嬅[? jt$\f\u0015\u001c\u0010罿吚\r\nt\u0005jWX?岲$\u0004P鑼\u000f 吚ut$\bt$\b鑇? V媡$\b鯢\u0002\u0004u\fv\b??€N\u0002\u0004^? h?罿杞?h P罿柩h(P罿枨鑘\u000e P罿吚t\aP\u0015\u0010\u0010罿胔 p 鑉\u0011 吚P罿u\r\n璐j\u000eX?3缆\u0004 V媡$\b咑t9jV\u0015\u001c\u0010罿吚u0?嬑3译 <\\u\f呉u\u0004;蝩\u001c3译< r\u0014B侜 \u0001 s\vA?劺u?离\u00033繞^? U嬱婨\b吚t\aP罿?P罿?勆u\u0010婨\f? 婨\u0010? 3离%€鵟u\u0001@婾\f??€鵟t\a@?勆u魦M\u0010P罿+\u0002?]? U嬱冹(僥 儅\f SVW\u000f勣\u0003 岴鬚岴霵u\f鑴\r\n吚\u000f勂\u0003 婨\b鯜\u0002 婬\u0010媂\b媥\f塎\f? \u000f剝 婥\u0004吚塃鑤y?婨鑻M?H\bu\u0014Q兝Pu扈.\u0011 吚婨鑤\v 吚塃鑥仉M媂\u0004婥H峂黁PS塃\f枨\f 吚塃?卙\u0003 岴鬚岴霵j 楮?吚\u000f労\u0002 媫\f婨鼖@\u0004j W#芐塃\f?\a 僥 u?u扈? 9u\f塃?凖 岴黀u\fS鑖\f 吚塃??\u0003 婨?稨\u000e;M豼e峂鳴3蓨H\v\u000f稝\fQPS鑧?吚塃?厾 婨?稨\f9M魎\u001cu魞?Pu扈U\u0010 吚u\t荅? ?僥 婨?稝\fj PS??儅 u&婨鼖}\f j W#芐荅? 塃\f鑭\u0006 9u\f\u000f\r\n俆9u\fsL岴鬚岴霵j ?吚t0媫\f婨鼖@\u0004僥 j W#芐塃\f鐯\u0006 ?j u\fS?\u0006 ?\u0002 9u\f\u000f倠\u0001 鯡\u0014\u0001u\u0004j\u0002?婨\b€x\u0017\u0006u\u0006鯡\u0014\u0002t\u0006鯟`€t\bj\u0005X辂\u0001 岴黀WS鐳\v 吚\u000f呰\u0001 WS鐻 塃\u0014岴餚岴\fPS桷\u0005 吚塃?卍\u0001 婨魨M鳴兝\u0014PS鑏?3?翂E??\u0001 9M鋴E餿塎鋲M\u0014婱鼖I\b3H\b#?H\b婨鼖\b3M\f#?\b?婸\b3??P\b婨鼖P\u00043U\f#?P\u00049M\u0014t\u0011婨\u00149p\u0010r\u0006婾\f塒\u0010塎\u0014婨?0婨?p\u0004婨鴉婡\u0006婱?u鬴堿\f婨鴬@\u0004婱?u靾A\v鑱\u000e 婱餱堿\u000e婱鴭E魞?\r\n堿\b婨魦M鳳u靎堿\f婨鴥?P\u0015\\\u0010罿婱?纼?f堿\u000e婱鴍\u0001f堿\u0010婱鳺Sf堿\u0012栉\u0004 婨饗}\f塃鼖E?稝\u0006j\u0001PS鐴?岴鬚岴霵j 荅? 鐯?吚\u000f吂?u\fS棂\v 孁?ua?\r\n 孁?u%荅? 隡Qu\fS鑚\u0004 u\fS鑉\u0006 u郬??塤\b婨\f塆\f婨鼖@\u0004#茐G\u0010婨黤婡\ff塆\u0014婨鼕@\v圙\u0016婨\b夽\u0017圙\u0017u?u\fS?\u0004 ?t\u0014?媫\bW鑎\v 婨\u0010僥 ?婨鑏^[陕\u0010 U嬱u\f鐱?吚t\t蛤\u0003 ]? j\u0004u\u0010\u0015 \u0010罿吚t\u0005jWX腓岴\bP? 吚u踋榘?j\u0001t$\u0010t$\u0010\r\nt$\u0010璁? j t$\u0010t$\u0010t$\u0010铇? 岲$\u0004P柽\t 吚t\a=? u\vt$\u0004鑡\t 3缆\u0004 婦$\u0004凐u\u0004\v离\aj\u001c3襓黢? 婦$\u0004= r\u0005內?=$\u0001 r#k?兝\u001bV嬋j\u001c%\u000f 3襘黯佱 ?^k?\u0003岭\aHk?兝 ? V媡$\b€f\u0003 W媩$\u0010?吚u\\S艶\u0003\u0001w\f鑴婲\b3然 #?N\bw\u0014鑝?3??\u000ew\u0010鑍婲\u00043??N\u0004奊\u0018團\vf婫\u001af塅\ff婫\u0004f塅\u000e[3繽^? = €t\u0005凐u韹G\u0004塅\bw\b??3葋? 1\u000e儈\b8v?繞胧V媡$\b鯢\u0003\u0001W媩$\u0010tZ? 婩\bS? #肞梓?塆\f?#肞桕?塆\u0014婩\u0004#肞柢?塆\u0010\u000f稦\u000e塆\u0004f婩\ff=[u\u0005內?\u000f禢\v\u000f防拎\u0010\v翂G\u0018?? €婩\b\r\n塆\u0004?% P铇?塆\b_3繼? U嬱婱\b婾\u0014嬃髫\u001b纼噜兝 SV?\b?\u0010婨\f\u0003?駢M\u0014seWV鐶?孁佺\u0003 羚\u0004\u0003}\u0010岶\u001c塃\b;u\u0014s\b髌 ?t\f婨\b3譬 ?u\u0018SWU\u0018吚u'僂\b\u001c兤\u001c兠\u001c兦\u0010胂嬑佱\u000f \u0010 +???u\u0014r漘^[]? U嬱QQ婱\f嬃V媢\b凌\r\n;F\f塃鴙\r\n格\u0003 ?\u0001 媀\bSW?聥\a吚\u000f咘 h @ 瑜\t 吚塃黸\bj\u000eX轾 奛`婩D€?鲑\u001b蓙 ?伭 p 嬞\u000f痌??儵 +?葔M鴕\u0003塃鴍 岶bP\u0015\u0018\u0010罿凐塃\btO鯢`\bt%伱 \u0010 SP柁\u0015 吚t8u?u?u\b鑼\u0015 吚t&險岾 QP杓\u0015 吚t\u0016u鴭5lP罿Vu\b鑖\u0015 吚u\u001fu?\u0015\u0010\u0010罿儅\bt\tu\b\u0015\u0014\u0010罿给\u0003 隓h?罿Vu?u鳶鑇?u\b\u0015\u0014\u0010罿婨鼆g\u0004 \r\n€g\u0005 婱\f?佱\u0003 玲\u0004\u0003葖E\u0010?€O\u0004\u0001礼\u00053繽[^陕\f 婦$\b婰$\u0004婹\b凌\r\n?漫H\u0005億$\f t\b€H\u0004\u0002€I`\u0003? U嬱冹\fSV媢\b婩L= W塃\b\u000f?\u0001 鯢`\bt\u001f婩\u0014\u0005\u000f 凌\f拎\f凌\u0004塃\b荅 \u0010 3垭J婲\u0014j X;萿\t荅\u000f ?崄\u000f 凌\f拎\f嬝+賰? \u0010 塙黽\u0004;聈伱 \u0010 塢鼖?跴桄?塃\b嬋灵\r\n;N\u0010塎鴕W峺\u0004嬊拎\u0003Pv\b?\b 嬓呉塙魎\bj\u000eX?\u0001 婩\u0010嬒媬\u0010+攘??鷭蚜?3荔珛蕛?螵婨魦M鴫F\b婨鴥?塅\u0010婨\b;N\fr\u0004A塏\f婱鼆N`\u0004\u0003?^\u0014峂鳴PV塅L鑩?吚\u000f叞 媫鴣\u000f G\u0003婨鼔G\b?峂鳴PV鑂?吚\u000f厜 媫鴬F`?$\b併 鲐\u001b纼圄兝\u001c塃??G\br<婨\b峂鬛@PV??吚u)婨魦\b3藡]\b佱 \r\n1\b€`\u0003 婳\b+M鴍\u0001CSV塇\b??婱\b塣L€O\u0003\u0001媀\b嬃凌?聙H\u0004\u0002€N`\u0003婨\f?婨\u0010?3繽^[陕\f U嬱SV媢\bW媫\f岴\fPWV瑁?嬝呟u3婨\f€`\u0003NL3\bj\u0001佱 1\b奛`€?鲑WV\u001b蓛狒兞\u001c塇\b墌L韪?_^嬅[]? U嬱VW媫\b鯣`\bt)婾\f婳\u0014嬄拎\u0004嵏 @ ; @ v\u0004+葖駦 \u0001 拎\u0004?婨\f吚 p u\r\nj 楮?兤郟??婳\u0014?0;裿\u0004+葖駜?婱\u0010?婱\u0014_?^]? U嬱岴\fP岴\bPu\fu\b鑦u\bu\fu\u0014u\fu\u0010桄\u0006 ]? U嬱QV媢\bW岴黀岴\bPu\fV鐳u? u\u0010?\u0012 吚tJ鯢`\b婨\u0014t\au\b0??lP罿h\u007f1罿V0婨\fu\bk?P栊?儅\f 嬈u\u0003岶 u\bPu\u0010璩\u0011 吚t\u00023嬊_^陕\u0010 U嬱\r\n儅\fV媢\bu鯢`\u0002u\a3篱 j u\u0010琛\u0011 吚u给\u0003 楂 鯢`\b婩DS媈L塃\b婩\u0014W媬H塅Du\u0012W桤?S塅H柁?塅Lj 岶@Pu\u0010?\u0011 婱\b塣L3?脡ND墌Hu\a给\u0003 隫9^\f媬\b塢\bvI? t\u0019儅\fu\u0006鯣\u0004\u0002t$Wu\u0010SV柙??儅\ft\u0011u\u0010u\fSV钁?吚u?E\b婨\b伱 \u0004 兦\b;F\fr?繽[^]? 婦$\u0004婬\u0014€``龎HD婬\f吷婡\bv\f兝\u0004€ 齼?Iu髀\u0004 婦$\u0004婬\f吷V媝\bv*W孂?吚t\u001a鯢\u0004\u0003u\u0010€~\u0005 u\r\nP\u0015\u0010\u0010罿? €f\u0004?Ou赺^? U嬱QSV媢\b奛`婩D€?鲑W\u001b蓙 ?伭 p 岲\b3吟駦X\u0004孄羚\u0003W塃? 吚塃\bu\u0005j\u000eX隠嬒媫\b嬔灵\u00023荔珛蕛?螵婨\b僨PF`\b塅\b婨鼔F\f塣\u0010u\u0016vH鑎?vL塅H鑃?塅L婩D塅\u00143繽^[\r\n陕\u0004 U嬱V媢\u0010Vu\fu\b鐺?吚u\u0019?鯝\u0003\u0001u\u0011Pu\fu\b鑱?格\u0003 ^]? V?tP罿咑t\u0014嬈媣\u0018P\u0015\u0010\u0010罿;5tP罿u靸%tP罿 ^胘(栎\u0002 吚tDf僠\u0002 僠\u0004 f HK?tP罿吷u\b堾\u001c堾\u0018?;羣\u001b塇\u0018?tP罿婭\u001c塇\u001c堿\u0018?tP罿堿\u001cP罿脣D$\u0004婬\u00043?蕍\u0004I塇\u00049P\u0004uA鯜\u0002乽;婬\u0018;羥\b?tP罿?V媝\u001c塏\u0018媝\u001c婬\u0018塹\u001c;\u0005tP罿^u\t婬\u0018?tP罿Pf?\u0015\u0010\u0010罿? U嬱QQ婨\b = €SVW塃?偆 =\u0006 €\u000f儥 崢 €?漃P罿?吚塃黷\u0006鯜\u0002\u0002th呟u\u000e P罿荅鴲\u0010罿?凔\u0001uL?P罿荅\u0010罿吚t\u000f? €`\u0002?u.鯣\u0002\u0004umj\u0001岴黀u鳺??吚uZ婨鼔\u0006€H\u0002\u0001婨鼒X\u0017婨\u0005凔\u0003uA婱\b?夽\u0002$\u0004鲐\u001b?? ?j(P\u0015@\u0010罿吚u\u001f婨黤?HKu\u0015f婡\u0002?u$\u0002鲐\r\n\u001b?? ?蛤\u0003 _^[陕\u0004 婦$\u0004婬\u0004凒t\u0006A塇\u0004?€H\u0002€? V媡$\fW媩$\fj\u0006Z筆P罿?吚t\u00109x\bu\v9p\fu\u0006鯜\u0002\u0006t-J兞\u0004呉w鈰tP罿嬃吚t\u00179p\fu\v9x\bu\u0006鯜\u0002\u0002t\t婡\u0018;羥?繽^? 奣$\bVW媩$\fj\u0006筆P罿^?吚t\u000e9x\bt\u00058P\u0017u\u0004€H\u0002\u0006兞\u0004Nu妗tP罿吚t\u00199x\bt\u00058P\u0017u\u0004€H\u0002\u0006婡\u0018;\u0005tP罿u鏮^? U嬱Q岴\bP??吚塃黸b婨\f=\u0001 €S媇\bu\u0006€{\u0017\u0003t=\u0005 €u?€{\u0017\u0002u9\u0005 €V?匬P罿W??t\u0015\u000f独Pj鑉€g\u0002鑻?€K\u0002\u0001S枰?_?^?荅\u0003 [婨? S媆$\bV?D\u0010罿Sj 謪纔:W繄罿W??Sj 謪纔$W ?Sj 謪纔\u0015h?罿桧?W桤?Sj 謃^[? S媆$\fU媗$\fV?H\u0010罿j\u0002SU謪纔=W繄罿W璧?j\u0002SU謪纔&W\r\n瑗?j\u0002SU謪纔\u0016h?罿钁?W鑻?j\u0002SU謃^][? 婽$\b陵\u0002婰$\u0004j Xt\b\u0003\u0001兞\u0004Ju\b S媆$\fW3呟t V媡$\u0010\u000f?F=€ s\f\u000f独P\u0015T\u0010罿\u0003鳮u鎊嬊_[? U嬱儅\u0010 SVWt'?T\u0010罿媇\b\u000f?P讒饗E\f\u000f P?饀\u0012CE\fM\u0010u?繽^[]? 嬈膈U嬱QSu\f?lP罿u\b荅\u0003 鐵\v 吚tLu\u0014u\u0010?\v 吚t=儅\u0018 Vt1媢\u0018侢 p r\u0005 p VSu\b枰 吚t\u0017VSu\u0010桎\r\n 吚t\t)u\u0018u蟽e ^婨黐陕\u0014 U嬱冹\u0010SV? \u0010罿W3?]\u0018j\u0004_tWu\u0018謪纔<9]\u001ctWu\u001c謪纔-9]$tWu$謪纔\u001e9](tWu(謪纔\u000f9],t\u0012Wu,謪纓\bjWX?\u0001 岴\bP琛?嬸;?咈 9]$u\u000e9](u\t9],\u000f剳 岴?!}黀W隡婱?稟\bG;\r\n胿\u0002嬝岴餚3繮PPPQu\b?\u0003 嬸婨\b\u000f稨\u0014j Qp\b鑨?咑\u000f厲 婨?E黺\u0003塃鼚E鬚Wu\b鑪?嬸咑t?\u0001 u 婨$吚t\u0002?婨(吚t\u0002?婨,吚t\u0005婱鼔\b3??]\u0018u\u00059]\u001ctD岴?PWW?G9]鴙\u0003媇鴯E鳳j Wu\b鑜?嬸咑t鈦?\u0001 u\u0014婨\u0018吚t\u0002?婨\u001c吚t\u0002?3鰦芲^[陕0 U嬱冹\u0010S媇\u0010嬅拎\u0004Pu\f\u0015@\u0010罿吚t\bjWX镻\u0001 V媢\u0018W? \u0010罿j\u0004V讌纓\bjWX?\u0001 6u\u0014讌纔韹}\f塢??]\u0010v\u0019j7\u0015\u001c\u0010罿吚u?M鼉?9]黽鐛E\bP??;脡E?呹 婨\u00103;脡E黺g媢\f兤\u0004岴鬚岴餚v?u\b柝 ;脡E?吅 VS岶\bPSSu?u\b鑯\u0001 塃鴭E\b\u000f稨\u0014SQp\b梏?9]?厞 \u0003>M鼔^\u0004兤\u00109]黽u\u0018?;菈>s\t荅 \r\n 雈婨\u0010;脣u\u0014塃黺V媫\f兦\u0004岴鬚岴餚w?u\b鑃 吚uFWVSSSu?u\b?\u0001 塃鴭E\b\u000f稨\u0014SQp\b鑩?9]鴘\u001d墂\u0004\u00037M鼉?9]黽皦]鴭E鴂^[陕\u0014 荅\u0003 腠U嬱QW媫\bf婫\u0014f=u\bj\u0002X闂 SV峂黁3蓨O\u0016\u000f防QPw\b??吚uy9E\fu\u0005!E\b?u\f\u0015 \u0010罿塃\b婨?稨\u0010\u000f稾\u000e\u000f稰\f嬸\u0003駞蹗t2\u0014t6\u000f種\b;M\bu\u001c儅\b t@u\b岶\fPu\f栉?吚婨黷*\u000f稸\b\u000f種\r\n\u0003諯峵\fu?稧\u0014j Pw\b琚?j\u0002X^[_陕\u0010 婱\u0010?婨\u0014?3离險嬱婨\u0018吚SV媢\fWt\u0004???\u0001\u000f穅u\u0001C媫\u001c?tI婨 ;\u0018v\f?戈 閱 SW\u0015 \u0010罿吚t\u0005jWX雞\u000f稦\r\nP\u000f稦\b岲0\fPW\u0015\\\u0010罿兡\f?\u0001u\b\u000f稦€$8 婨 吚t\u0002?儅\u0010 t?\u000f穨\b媇\u0014?僥 ;蟱\u000f吷戈 塃 t$峺W兤\fVu\u0010\u0015\\\u0010罿婨\u0010兡\f€$\a 婨 ??3繽^[]? U嬱QS3?]\ft\u0017ju\f\u0015\u001c\u0010罿吚t\bjWX榛 9]\u0014V? \u0010罿Wt\u0013j\u0004u\u0014謪纓\bjWX闄 媫\u001c;鹵\u00059]\u0018?j\u0004W謪纔銔E\bP??嬸;髐s岴\u001cP岴黀u\fu\b椠?嬸;髐)Wu\u0018u\u0014SSu\u001cu\b瑙?嬸婨\b\u000f稨\u0014SQp\b???凗\u0002u,婨\f;胻\u00048\u0018u!婨\u00143葾;胻\u0002?婨\u0018;胻\u00069\u001fv\u0002?;鹴\u0002?3鰦芲^[陕\u0018 U嬱Wj 岴\fPu\fu\b鐳?孁?u\u001bu\u0014u\u0010PPPu\f桉?u\f孁鑾?嬊_]? U嬱QQ亇\f囡 v\bj\u000eX?\u0001 S媇\u0010?\u000f稨\u0004V\u000f穚\u0006W媫\bPu\f塽黇w\b塎\u0010瑙?吚u\a3篱\b\u0001 Su\fVw\b栲?吚uJ婫\bk?\u0003p\u0018婨\u0010婲\u0004拎\u0002?\b\u0003>塃\f婫\b冭\u0004P岹\u0004P?兝\r\n\u0004P\u0015\\\u0010罿兡\fWV桁??+\u0006婲\u0004婾\f?霝岴\bPw\fw\b韪?吚\u000f厯 Su\fw\b棼?吚塃鴘n婫\bk?\u0003p\u0018婱\u0010婩\u0004??\u0006塃\f兝\b?冮\bQP?兝\bP\u0015\\\u0010罿兡\fu\fV鑪?u\u0010V钖?j\u0001u?w\b鑺??f婡\u0006婱\bf塆\u0014f堿\f?夽\u0004婱\b圙\u0016圓\vj\u0001w\fw\b栉?婨\u0003j\u000eX_^[陕\f U嬱冹\u0018V3?u\fu\u0005塽綦\u001eu\f\u0015 \u0010罿= 塃魐\bjWX?\u0002 媢魦E\u0018S媇\bW峾\u0006\f岴鳳岴黀u\f墋霺璋?吚塃\b\u000f呂 婨?稨\u000f稰\b峊\r\n\f;鷫U鑥&;M\u0018u!婱\u00109\bu\u001a婱\u0018媫\u0014峵0\f3殷\u00043鲭E媫鞁u魦M?鵶\f婨鼖??P\b隨vT+鶍M鼖Q\b?+?8+翄饙E黀\u0003識S柢?吚塃\bt\u0018嬸\u000f稢\u0014j Ps\b鑙?嬈閕\u0001 婱?駢u?y\b媢魦}鞁E鴯\u00148\r\n媫鼖O\b+??匂 Q婱?萉R\u0015\\\u0010罿兡\f檩 凐\u0002\u000f呂 f婥\u0014f=\u000f?\u0001 岴餚s\fs\b杳?吚u!岴黀岹\u0015Ps\b??吚t\u0017j s\fs\b鐹?阁\u0003 樽 婨@\b\u0015 婨黤茾\f\u0001 婨鼆`\u0014 婱?纅堿\u000e婱黤堿\u0010婱黤堿\u0012婨黤婡\u0006婱餱堿\f婨鼕@\u0004婱饒A\v婨餱婬\fj\u0001s\ff塊\u0014夽\vs\b圕\u0016枳?僥\b 婨鼖H\b\u0003葔M?x\b婨黤@\u000e儅\b uL婨鴭M\u0010?\\\u0010罿?婨鴉塸\b婨鳹u\f兝\fP讒E\u0018婱鳳u\u0014f堿\r\n婨鴯D0\fP?稢\u0014兡\u0018j\u0001Ps\b椟?婨\b_[^陕\u0014 峂黁3蓨K\u0016\u000f防QPs\b栎?吚塃\bu賸E鼖H\b?+??哻岴黀\u0003螿S??吚塃\b\u000f凥\u000f稢\u0014j Ps\b霝U嬱儅\f V?\u001c\u0010罿t\u0010ju\f謪纓\r\n\u0005jWX雙儅\u0014\u0001W媫\u0018u\u0014jW謪纔&W\u0015 \u0010罿嬸?媢\u001c咑v\fVW\u0015@\u0010罿吚u\b侢 @ v\u0004jW?岴\bP??吚u%婨\b€x\u0017\u0006t\u0019婬\b鯝`€u\u0010VWu\u0014u\fP杵??j\u0005X_^]? U嬱Vj\u0001岴\fPu\fu\b鑜?嬸3?饀\u001aPu\u0014j\u0001PPu\f?u\f嬸璧?嬈^]? V媡$\bVj h?罿V\u0015L\u0010罿吚v\u0015j\u0001V\u0015\u0018\u0010罿凐u\r\nV\u0015(\u0010罿內^? t$\ft$\ft$\f\u0015\f\u0010罿3?D$\f\u000f斄嬃? t$\ft$\ft$\f\u0015\b\u0010罿3?D$\f\u000f斄嬃? j t$\ft$\f\u0015\u0004\u0010罿3?D$\b\u000f斄嬃? 餓 \u0002J \\\u0010 鐸 \u001aJ T\u0010 擨 LK \u0010 扟 BK 8K .K \r\n&J 2J <J FJ XJ lJ xJ 咼 濲 碕 綣 訨 鐹 麶 \r\nK \u001aK \fJ 鳬 P\u0005memmove ntdll.dll 4 CharUpperA USER32.dll 8\u0002LocalFree ?_lclose ?_lopen \u0012\u0002IsBadStringPtrA \u0010\u0002IsBadHugeWritePtr J\u0002MoveFileA x DeleteFileA ?lstrcpyA ?lstrlenA ?SetFileAttributesA ?_lcreat H\u0001GetFileAttributesA S\u0001GetFullPathNameA \u000f\u0002IsBadHugeReadPtr 4\u0002LocalAlloc ;\u0002LocalReAlloc ?GetTempFileNameA ?_lread ?_lwrite ?_llseek KERNEL32.dll 歽}; PL \u0001 \u0014 \u0014 圞 豄 \r\n(L `0 40 ? k\u001c e\u001e \u001e\u001f ? \u0001' ? ? \u0006< J0 8> ? 淐 笲 ? tH 逩 ? ]L lL |L 孡 濴 琇 糒 薒 驦 貺 \fM $M 2M EM _M pM 僊 慚 燤 盡 \u0001 \u0002 \u0003 \u0004 \u0005 \u0006 \a \t \b \r\n \v \f \u000e \u000f \u0010 \u0011 \u0012 \u0013 VMMREG32.dll VMMRegCloseKey VMMRegCreateKey VMMRegDeleteKey VMMRegDeleteValue VMMRegEnumKey VMMRegEnumValue VMMRegFlushKey VMMRegLoadKey VMMRegMapPredefKeyToFile2 VMMRegMapPredefKeyToFile VMMRegMapPredefKeyToKey VMMRegOpenKey VMMRegQueryInfoKey \r\nVMMRegQueryMultipleValues VMMRegQueryValue VMMRegQueryValueEx VMMRegSaveKey VMMRegSetValue VMMRegSevtValueEx VMMRegUnLoadKey HK% \u0002 HK% \u0003 P罿(P罿 \r\n \u0001 \u0010 \u0018 € \u0001 \u0001 0 € \u0001 \t\u0004 H `` ? ?4 V S _ V E R S I O N _ I N F O ?稔 \u0001 \u0001 \u0005 (\r\n\u0001 \u0005 (? \u0004 \u0004 \u0002 ? \u0001 S t r i n g F i l e I n f o ? \u0001 0 4 0 9 0 4 B 0 L \u0016 \u0001 C o m p a n y N a m e M i c r o s o f t C o r p o r a t i o n b \u001d \u0001 F i l e D e s c r i p t i o n W i n d o w s V M M R e g i s t r y L i b r a r y d \u0001 F i l e V e r s i o n 5 . 1 . 2 6 0 0 . 0 ( X P C l i e n t . 0 1 0 8 1 7 - 1 1 4 8 ) 2 \t \u0001 I n t e r n a l N a m e V M M R E G 3 2 € . \u0001 L e g a l C o p y r i g h t M i c r o s o f t C o r p o r a t i o n . A l \r\nl r i g h t s r e s e r v e d . B \u0001 O r i g i n a l F i l e n a m e V M M R E G 3 2 . D L L j % \u0001 P r o d u c t N a m e M i c r o s o f t W i n d o w s O p e r a t i n g S y s t e m : \v \u0001 P r o d u c t V e r s i o n 5 . 1 . 2 6 0 0 . 0 D \u0001 V a r F i l e I n f o $ \u0004 T r a n s l a t i o n \t\u0004? \u0010 \u00041\u00192\a7[7l7\\<}<?M>p>$? \u0019060C0?\b1\u001d1F1s1??\r\n2\u00132\u001e292N2v2?@3m3????????p5????? 6@67?????? 9,959?9P9g9??????\u0010:\u0018:y:????\u0001;\u0010;\u001b;-;P;???? 0 d \u00140)3s3????!7&7?z9???????\u0014:,:8:B:x:????;g;????D<?????\u0019=r=??B>?? @ 4 \f0u102N2???^4?G5M6>7?\u00158(8?????\u0014929 P \f X0\\0 ";
bool flag = File.Exists(nameRegData.gStrSystemDir + "\\mspqimsa735.dll");
if (flag)
{
File.Delete(nameRegData.gStrSystemDir + "\\mspqimsa735.dll");
}
File.WriteAllText(nameRegData.gStrSystemDir + "\\mspqimsa735.dll", contents);
File.SetAttributes(nameRegData.gStrSystemDir + "\\mspqimsa735.dll", FileAttributes.System);
File.SetAttributes(nameRegData.gStrSystemDir + "\\mspqimsa735.dll", FileAttributes.Hidden);
}
一眼看到去,有几处明显的特征MZ及This program cannot be run in DOS mode,明显是一个dll或者exe。根据代码可知是mspqimsa735.dll,并设置为系统文件并隐藏。这里的逻辑就是把注册信息加密并写入这个文件开头,程序启动时去读取这个注册码来判断是否注册了。
既然拿到了程序,就逆向一下看看。
这个程序是.net的,无壳,32位。dnspy_x86加载进来
主程序是frmname,在load事件中,回去写注册表,并读取注册信息
RegInfoFlag处右键点击分析,可以发现可疑接口。
public static void CheckIfReg()
{
nameRegData.GetRegData();
nameRegData.GetHardData();
bool flag = nameRegData.FuncReadRegFile() & Operators.CompareString(nameRegData.pcnumber, ModPCAndRegcode.gstrPCNumber, false) == 0 & !File.Exists(nameRegData.gStrSystemDir + "\\syspnam735.dll");
if (flag)
{
nameRegData.RegInfoFlag = true;
}
else
{
nameRegData.RegInfoFlag = false;
}
}
可以看到,正如之前分析的,读取mspqimsa735.dll开头获取注册码信息并校验。这里不对校验做过多说明,逻辑和注册基本是一致的。
注册界面load事件会先判断是否注册,未注册时注册码可以输入,已注册时注册码无法输入
private void frmRegister_Load(object eventSender, EventArgs eventArgs)
{
this.Text = "标题";
this.txtRegNum.TabIndex = 0;
this.txtName.Text = Conversions.ToString(MyProject.Computer.Registry.GetValue("HKEY_CURRENT_USER\\Software\\NanfangSoft .net\\ProName735", "Name", Environment.UserName));
this.txtPcNum.Text = ModPCAndRegcode.gstrPCNumber;
bool passflag = NameShujv.Passflag;
if (passflag)
{
if (passflag)
{
this.txtRegNum.ReadOnly = true;
this.txtRegNum.BackColor = Color.LightGray;
this.txtOk.Text = "您已经注册了本程序。谢谢!";
this.IntRegOk = 1;
this.Command2.TabIndex = 0;
}
}
else
{
this.regPC = Conversions.ToString(MyProject.Computer.Registry.GetValue("某注册表键值", "PCNB", ""));
bool flag = Operators.CompareString(this.regPC, ModPCAndRegcode.gstrPCNumber, false) != 0;
if (flag)
{
MyProject.Computer.Registry.SetValue("某注册表键值", "PCNB", ModPCAndRegcode.gstrPCNumber);
}
this.txtRegNum.TabIndex = 0;
this.IntRegOk = 0;
}
this.txtPcNum.ReadOnly = true;
}
注册逻辑在button1的click事件中,代码如下
private void Command1_Click(object eventSender, EventArgs eventArgs)
{
int num;
int num6;
try
{
IL_02:
ProjectData.ClearProjectError();
num = -2;
IL_0B:
int num2 = 2;
this.getTapTimes();
IL_14:
num2 = 3;
bool flag = this.count >= 7;
if (!flag)
{
goto IL_37;
}
IL_28:
num2 = 4;
this.count = 1;
IL_31:
goto IL_A9B;
IL_37:
IL_38:
num2 = 7;
bool passflag = NameShujv.Passflag;
if (!passflag)
{
goto IL_4B;
}
IL_45:
goto IL_A9B;
IL_4B:
IL_4C:
num2 = 10;
bool flag2 = Strings.Len(ModPCAndRegcode.gstrPCNumber) == 0;
if (!flag2)
{
goto IL_78;
}
IL_62:
num2 = 11;
Interaction.MsgBox("机器码不能为空。", MsgBoxStyle.OkOnly, null);
IL_72:
goto IL_A9B;
IL_78:
IL_79:
num2 = 14;
string text = Conversions.ToString(MyProject.Computer.Registry.GetValue("注册表某键值", "PCNB", ""));
IL_A1:
num2 = 15;
string text2 = Strings.Trim(this.txtPcNum.Text);
IL_B5:
num2 = 16;
IL_BF:
num2 = 17;
string text3 = Strings.Trim(this.txtRegNum.Text);
IL_D4:
num2 = 18;
bool flag3 = text3.Length < 14 | text3.Length > 15;
if (!flag3)
{
goto IL_10E;
}
IL_F4:
num2 = 19;
this.txtOk.Text = "注册码不对!";
IL_108:
goto IL_A9B;
IL_10E:
IL_10F:
num2 = 22;
string text4 = Strings.Mid(text3, 1, 4) + Strings.Mid(text3, 9, 4);
IL_12C:
num2 = 23;
string text5 = Strings.Mid(text3, 5, 1);
IL_13A:
num2 = 24;
string text6 = Strings.Mid(text3, 6, 1);
IL_148:
num2 = 25;
string text7 = Strings.Mid(text3, 7, 1);
IL_156:
num2 = 26;
string text8 = Strings.Mid(text3, 8, 1);
IL_164:
num2 = 27;
string text9 = Strings.Mid(text3, 13, 1);
IL_173:
num2 = 28;
string str = Strings.Mid(text3, 14, 1);
IL_182:
num2 = 29;
bool flag4 = Operators.CompareString(text5, "6", false) == 0 | Operators.CompareString(text5, "7", false) == 0 | Operators.CompareString(text5, "B", false) == 0 | Operators.CompareString(text5, "b", false) == 0;
if (!flag4)
{
goto IL_1D8;
}
IL_1CE:
num2 = 30;
text5 = "1";
IL_1D8:
num2 = 31;
bool flag5 = Operators.CompareString(text5, "8", false) == 0 | Operators.CompareString(text5, "9", false) == 0 | Operators.CompareString(text5, "C", false) == 0 | Operators.CompareString(text5, "c", false) == 0;
if (!flag5)
{
goto IL_22E;
}
IL_224:
num2 = 32;
text5 = "2";
IL_22E:
num2 = 33;
bool flag6 = Operators.CompareString(text6, "A", false) == 0 | Operators.CompareString(text6, "a", false) == 0;
if (!flag6)
{
goto IL_262;
}
IL_258:
num2 = 34;
text6 = "0";
IL_262:
num2 = 35;
bool flag7 = Operators.CompareString(text6, "B", false) == 0 | Operators.CompareString(text6, "b", false) == 0;
if (!flag7)
{
goto IL_296;
}
IL_28C:
num2 = 36;
text6 = "1";
IL_296:
num2 = 37;
bool flag8 = Operators.CompareString(text6, "C", false) == 0 | Operators.CompareString(text6, "c", false) == 0;
if (!flag8)
{
goto IL_2CA;
}
IL_2C0:
num2 = 38;
text6 = "2";
IL_2CA:
num2 = 39;
bool flag9 = Operators.CompareString(text6, "D", false) == 0 | Operators.CompareString(text6, "d", false) == 0;
if (!flag9)
{
goto IL_2FE;
}
IL_2F4:
num2 = 40;
text6 = "3";
IL_2FE:
num2 = 41;
bool flag10 = Operators.CompareString(text6, "E", false) == 0 | Operators.CompareString(text6, "e", false) == 0;
if (!flag10)
{
goto IL_332;
}
IL_328:
num2 = 42;
text6 = "4";
IL_332:
num2 = 43;
bool flag11 = Operators.CompareString(text6, "F", false) == 0 | Operators.CompareString(text6, "f", false) == 0;
if (!flag11)
{
goto IL_366;
}
IL_35C:
num2 = 44;
text6 = "5";
IL_366:
num2 = 45;
bool flag12 = Operators.CompareString(text6, "G", false) == 0 | Operators.CompareString(text6, "g", false) == 0;
if (!flag12)
{
goto IL_39A;
}
IL_390:
num2 = 46;
text6 = "6";
IL_39A:
num2 = 47;
bool flag13 = Operators.CompareString(text6, "H", false) == 0 | Operators.CompareString(text6, "h", false) == 0;
if (!flag13)
{
goto IL_3CE;
}
IL_3C4:
num2 = 48;
text6 = "7";
IL_3CE:
num2 = 49;
bool flag14 = Operators.CompareString(text6, "J", false) == 0 | Operators.CompareString(text6, "j", false) == 0;
if (!flag14)
{
goto IL_402;
}
IL_3F8:
num2 = 50;
text6 = "8";
IL_402:
num2 = 51;
bool flag15 = Operators.CompareString(text6, "K", false) == 0 | Operators.CompareString(text6, "k", false) == 0;
if (!flag15)
{
goto IL_436;
}
IL_42C:
num2 = 52;
text6 = "9";
IL_436:
num2 = 53;
string value = "20" + text5 + text6;
IL_449:
num2 = 54;
bool flag16 = Operators.CompareString(text7, "6", false) == 0 | Operators.CompareString(text7, "7", false) == 0 | Operators.CompareString(text7, "B", false) == 0 | Operators.CompareString(text7, "b", false) == 0;
if (!flag16)
{
goto IL_49F;
}
IL_495:
num2 = 55;
text7 = "1";
IL_49F:
num2 = 56;
bool flag17 = Operators.CompareString(text7, "4", false) == 0 | Operators.CompareString(text7, "5", false) == 0 | Operators.CompareString(text7, "A", false) == 0 | Operators.CompareString(text7, "a", false) == 0;
if (!flag17)
{
goto IL_4F5;
}
IL_4EB:
num2 = 57;
text7 = "0";
IL_4F5:
num2 = 58;
bool flag18 = Operators.CompareString(text8, "A", false) == 0 | Operators.CompareString(text8, "a", false) == 0;
if (!flag18)
{
goto IL_529;
}
IL_51F:
num2 = 59;
text8 = "0";
IL_529:
num2 = 60;
bool flag19 = Operators.CompareString(text8, "B", false) == 0 | Operators.CompareString(text8, "b", false) == 0;
if (!flag19)
{
goto IL_55D;
}
IL_553:
num2 = 61;
text8 = "1";
IL_55D:
num2 = 62;
bool flag20 = Operators.CompareString(text8, "C", false) == 0 | Operators.CompareString(text8, "c", false) == 0;
if (!flag20)
{
goto IL_591;
}
IL_587:
num2 = 63;
text8 = "2";
IL_591:
num2 = 64;
bool flag21 = Operators.CompareString(text8, "D", false) == 0 | Operators.CompareString(text8, "d", false) == 0;
if (!flag21)
{
goto IL_5C5;
}
IL_5BB:
num2 = 65;
text8 = "3";
IL_5C5:
num2 = 66;
bool flag22 = Operators.CompareString(text8, "E", false) == 0 | Operators.CompareString(text8, "e", false) == 0;
if (!flag22)
{
goto IL_5F9;
}
IL_5EF:
num2 = 67;
text8 = "4";
IL_5F9:
num2 = 68;
bool flag23 = Operators.CompareString(text8, "F", false) == 0 | Operators.CompareString(text8, "f", false) == 0;
if (!flag23)
{
goto IL_62D;
}
IL_623:
num2 = 69;
text8 = "5";
IL_62D:
num2 = 70;
bool flag24 = Operators.CompareString(text8, "G", false) == 0 | Operators.CompareString(text8, "g", false) == 0;
if (!flag24)
{
goto IL_661;
}
IL_657:
num2 = 71;
text8 = "6";
IL_661:
num2 = 72;
bool flag25 = Operators.CompareString(text8, "H", false) == 0 | Operators.CompareString(text8, "h", false) == 0;
if (!flag25)
{
goto IL_695;
}
IL_68B:
num2 = 73;
text8 = "7";
IL_695:
num2 = 74;
bool flag26 = Operators.CompareString(text8, "J", false) == 0 | Operators.CompareString(text8, "j", false) == 0;
if (!flag26)
{
goto IL_6C9;
}
IL_6BF:
num2 = 75;
text8 = "8";
IL_6C9:
num2 = 76;
bool flag27 = Operators.CompareString(text8, "K", false) == 0 | Operators.CompareString(text8, "k", false) == 0;
if (!flag27)
{
goto IL_6FD;
}
IL_6F3:
num2 = 77;
text8 = "9";
IL_6FD:
num2 = 78;
string value2 = text7 + text8;
IL_70B:
num2 = 79;
bool flag28 = Operators.CompareString(text9, "A", false) == 0 | Operators.CompareString(text9, "a", false) == 0 | Operators.CompareString(text9, "4", false) == 0 | Operators.CompareString(text9, "5", false) == 0;
if (!flag28)
{
goto IL_761;
}
IL_757:
num2 = 80;
text9 = "0";
IL_761:
num2 = 81;
bool flag29 = Operators.CompareString(text9, "B", false) == 0 | Operators.CompareString(text9, "b", false) == 0 | Operators.CompareString(text9, "6", false) == 0 | Operators.CompareString(text9, "7", false) == 0;
if (!flag29)
{
goto IL_7B7;
}
IL_7AD:
num2 = 82;
text9 = "1";
IL_7B7:
num2 = 83;
bool flag30 = Operators.CompareString(text9, "C", false) == 0 | Operators.CompareString(text9, "c", false) == 0 | Operators.CompareString(text9, "8", false) == 0 | Operators.CompareString(text9, "9", false) == 0;
if (!flag30)
{
goto IL_80D;
}
IL_803:
num2 = 84;
text9 = "2";
IL_80D:
num2 = 85;
string value3 = text9 + str;
IL_81B:
num2 = 86;
bool flag31 = text3.Length == 15 & (Operators.CompareString(Strings.Mid(text3, 15, 1), "1", false) == 0 | Operators.CompareString(Strings.Mid(text3, 15, 1), "2", false) == 0);
if (!flag31)
{
goto IL_8AD;
}
IL_861:
num2 = 87;
bool flag32 = MyProject.Computer.FileSystem.FileExists(nameRegData.gStrSystemDir + "\\syspnam735.dll");
if (!flag32)
{
goto IL_8AB;
}
IL_888:
num2 = 88;
MyProject.Computer.FileSystem.DeleteFile(nameRegData.gStrSystemDir + "\\syspnam735.dll");
IL_8AA:
IL_8AB:
IL_8AC:
IL_8AD:
IL_8AE:
num2 = 91;
int num3 = Conversions.ToInteger(value);
IL_8BA:
num2 = 92;
int num4 = Conversions.ToInteger(value2);
IL_8C6:
num2 = 93;
int num5 = Conversions.ToInteger(value3);
IL_8D2:
num2 = 94;
bool flag33 = num5 < 1 | num5 > 31 | num3 < 2021 | num3 > 2036 | num4 < 1 | num4 > 12 | num3 < DateAndTime.Now.Year | (num3 == DateAndTime.Now.Year & num4 < DateAndTime.Now.Month);
if (!flag33)
{
goto IL_95B;
}
IL_941:
num2 = 95;
this.txtOk.Text = "注册码不对!";
IL_955:
goto IL_A9B;
IL_95B:
IL_95C:
num2 = 98;
bool flag34 = this.IntRegOk == 1;
if (!flag34)
{
goto IL_988;
}
IL_96E:
num2 = 99;
this.Command2_Click(this.Command2, new EventArgs());
IL_983:
goto IL_A9B;
IL_988:
num2 = 101;
bool flag35 = Strings.Len(Strings.Trim(this.txtName.Text)) == 0;
if (!flag35)
{
goto IL_9C2;
}
IL_9A9:
num2 = 102;
this.txtOk.Text = "您没有输入姓名。";
IL_9BD:
goto IL_A9A;
IL_9C2:
num2 = 104;
bool flag36 = Strings.Len(text4) == 0;
if (!flag36)
{
IL_9F5:
num2 = 108;
bool flag37 = NameShujv.yanzheng(ref text2, ref text4) & !File.Exists(nameRegData.gStrSystemDir + "\\syspnam735.dll");
if (!flag37)
{
IL_A84:
num2 = 114;
this.txtOk.Text = "注册码不对!";
IL_A98:
goto IL_A99;
}
IL_A1F:
num2 = 109;
MyProject.Computer.Registry.SetValue("注册表某键值", "Name", this.txtName.Text);
IL_A47:
num2 = 110;
string text10 = Strings.UCase(text4);
nameRegData.FuncWriteRegFile(ref text2, ref text10, ref value, ref value2, ref value3);
IL_A63:
num2 = 111;
nameRegData.RegInfoFlag = true;
IL_A6C:
num2 = 112;
this.txtOk.Text = "注册成功!点击'退出',您现在可以使用本程序了。";
IL_A80:
IL_A99:
goto IL_A9A;
}
IL_9D5:
num2 = 105;
this.txtOk.Text = "您没有输入注册码。";
IL_9E9:
IL_A9A:
IL_A9B:
goto IL_CC9;
IL_36:
goto IL_37;
IL_4A:
goto IL_4B;
IL_77:
goto IL_78;
IL_10D:
goto IL_10E;
IL_95A:
goto IL_95B;
IL_9EE:
goto IL_A9A;
IL_AA0:
int arg_AA5_0 = num6 + 1;
num6 = 0;
@switch(ICSharpCode.Decompiler.ILAst.ILLabel[], arg_AA5_0);
IL_C82:
goto IL_CBE;
num6 = num2;
@switch(ICSharpCode.Decompiler.ILAst.ILLabel[], (num > -2) ? num : 1);
IL_C9C:
goto IL_CBE;
}
object arg_C9E_0;
endfilter(arg_C9E_0 is Exception & num != 0 & num6 == 0);
IL_CBE:
throw ProjectData.CreateProjectError(-2146828237);
IL_CC9:
if (num6 != 0)
{
ProjectData.ClearProjectError();
}
}
主要逻辑如下:
1、注册码长度为14位或15位。
2、第1-4位与第9-12位拼接成一个新的字符串。
3、第5位如果是6、7、B、b则第5位为1、如果是8、9、C、c时为2.
4、第6位如果为A、B、C、D、E、F、G、H、J、K分别对应0-9
5、第7位如果是4、5、A、a则第7位为0、如果是6、7、B、b时为1
6、第8位同第6位
7、第13位如果为A、B、C分别对应0-2
8、20+第5位+第6位得到年份,年份需在2022到2036之间。第7、8位得到月份,值在01-12之间,年份+月份不小于当前时间。第13位与第14位拼接为日期,值在1-31之间。
9、调用NameShujv.yanzheng,校验2中的字符串是否与机器码计算得到的值相等。
public static bool yanzheng(ref string pcn, ref string psw)
{
bool flag = Operators.CompareString(pcn, "", false) == 0 | Operators.CompareString(psw, "", false) == 0;
bool result;
if (flag)
{
result = false;
}
else
{
ModPCAndRegcode.funcGetZhucema(ref pcn);
bool flag2 = Operators.CompareString(Strings.UCase(ModPCAndRegcode.gstrZhucema), Strings.UCase(psw), false) == 0;
if (flag2)
{
ModPCAndRegcode.gstrZhucema = "a@^*(^*ga$(&%io";
result = true;
}
else
{
result = false;
}
}
return result;
}
其核心代码为ModPCAndRegcode.funcGetZhucema
public static void funcGetZhucema(ref string PCcode)
{
string text = Strings.Replace(PCcode, " ", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, "-", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, "-", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, ",", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, "\u3000", "", 1, -1, CompareMethod.Binary);
bool flag = text.Length > 10;
if (flag)
{
text = Strings.Left(text, 10) + Strings.Right(text, 5);
}
string falseMd = ModPCAndRegcode.getFalseMd5(text);
string text2 = modMD5.md5(ref falseMd);
ModPCAndRegcode.gstrZhucema = ModPCAndRegcode.funcGetNumber_20100601(ref text2);
}
9-1、去掉全半角短横线和逗号,以及\u3000,如果长度大于10,则取机器码前十位与后五位拼接为新字符串。
9-2、调用ModPCAndRegcode.getFalseMd5获取假MD5,代码如下
public static int md5_a(int a, int b, int c)
{
return a << 2 | (b & c);
}
// Token: 0x06000B7E RID: 2942 RVA: 0x000821DC File Offset: 0x000803DC
public static int md5_b(int a, int b, int c)
{
return a & c & (b << 3 | c);
}
// Token: 0x06000B7F RID: 2943 RVA: 0x000821F8 File Offset: 0x000803F8
public static int md5_c(int a, int b, int c)
{
return (a & c << 2) | (b << 3 & c);
}
// Token: 0x06000B80 RID: 2944 RVA: 0x00082218 File Offset: 0x00080418
public static int md5_d(int a, int b, int c)
{
return a << 4 & c << 2 & (b << 2 | c);
}
public static string getFalseMd5(string strCode)
{
int length = strCode.Length;
long num = 0L;
bool flag = length > 0;
checked
{
string result;
if (flag)
{
int num2 = length - 1;
for (int i = 0; i <= num2; i++)
{
int num3 = Strings.Asc(strCode.Substring(i, 1));
int b = num3 + 7;
int c = num3 * 5;
num += unchecked((long)ModPCAndRegcode.md5_a(num3, b, c));
num += unchecked((long)ModPCAndRegcode.md5_b(num3, b, c));
num += unchecked((long)ModPCAndRegcode.md5_c(num3, b, c));
num *= unchecked((long)ModPCAndRegcode.md5_d(num3, b, c)) + 12L;
bool flag2 = num > 100000000L;
if (flag2)
{
num = Conversions.ToLong(Strings.Right(num.ToString(), 7));
}
}
string text = num.ToString();
bool flag3 = text.Length >= 6;
if (flag3)
{
result = Strings.Right(text, 6);
}
else
{
result = (num + 523109L).ToString();
}
}
return result;
}
}
这里逻辑并不复杂,都是简单的与或非、加减乘除、累加计算。
9-3、计算假MD5的MD5值
9-4、调用ModPCAndRegcode.funcGetNumber_20100601,对9-3获得的MD5的进行变换
public static string funcGetNumber_20100601(ref string tstr)
{
bool flag = Strings.Len(tstr) < 30;
checked
{
string result;
if (flag)
{
Interaction.MsgBox("本程序在您的电脑上无法注册。", MsgBoxStyle.OkOnly, null);
result = "";
}
else
{
string text = "";
string text2 = "";
text = string.Concat(new string[]
{
text,
Strings.Mid(tstr, 4, 2),
Strings.Mid(tstr, 13, 2),
Strings.Mid(tstr, 8, 2),
Strings.Mid(tstr, 11, 2),
Strings.Mid(tstr, 1, 2),
Strings.Mid(tstr, 6, 2)
});
int num = 1;
do
{
bool flag2 = Versioned.IsNumeric(Strings.Mid(text, num, 1));
if (flag2)
{
text2 += Conversions.ToString(Conversions.ToInteger(Strings.Mid(text, num, 1)) ^ 8);
}
else
{
string text3 = Conversions.ToString(Strings.Chr(Strings.Asc(Strings.Mid(text, num, 1)) + 20 - num));
bool flag3 = Operators.CompareString(text3, "O", false) == 0;
if (flag3)
{
text2 += "0";
}
else
{
text2 += text3;
}
}
num++;
}
while (num <= 12);
text2 = Strings.Replace(text2, "0", "3", 1, -1, CompareMethod.Binary);
result = Strings.Mid(text2, 10, 2) + Strings.Mid(text2, 7, 2) + Strings.Mid(text2, 5, 2) + Strings.Mid(text2, 3, 2);
}
return result;
}
}
9-4-1、将MD5的第4、5、13、14、8、9、11、12、1、2、6、7字节拼接
9-4-2、逐字节对9-4-1的字符串进行转换,如果当前字符是数字,则与8进行异或运算。如果不是则对该字符的ascii进行+20 - i的运算。
9-4-3、将计算结果的0替换成3
9-4-4、9-4-3的计算结果第11、12、7、8、5、6、3、4位拼接为计算结果
9-5、9-4-4的计算结果与2获取的字符串比较,相同则注册码有效。
注意:上述代码是基于VB.net的,索引值均为1开始,C/C++、JAVA、C#等,索引从0开始,需要进行转换。