using System; internal class <Module> { static string a(string A_0, int A_1) { if (true) { } char[] array = A_0.ToCharArray(); int num = 1235806800 + A_1; int arg_26_0; int arg_1E_0; if ((arg_1E_0 = (arg_26_0 = 0)) >= 1) { goto IL_26; } IL_1E: if ((arg_26_0 = arg_1E_0) >= array.Length) { return string.Intern(new string(array)); } IL_26: int num2; int expr_26 = num2 = arg_26_0; char[] arg_56_0 = array; int arg_56_1 = num2; char expr_2D = array[num2]; byte b = (byte)((int)(expr_2D & 'ÿ') ^ num++); byte b2 = (byte)((int)(expr_2D >> 8) ^ num++); byte arg_4E_0 = b2; b2 = b; b = arg_4E_0; arg_56_0[arg_56_1] = (ushort)((int)b2 << 8 | (int)b); arg_1E_0 = expr_26 + 1; goto IL_1E; } static string a(string A_0, int A_1) { char[] array = A_0.ToCharArray(); int num = 578295406 + A_1; int arg_47_0; int arg_14_0; if ((arg_14_0 = (arg_47_0 = 0)) < 1) { goto IL_47; } IL_14: int num2; int expr_14 = num2 = arg_14_0; char[] arg_44_0 = array; int arg_44_1 = num2; char expr_1B = array[num2]; byte b = (byte)((int)(expr_1B & 'ÿ') ^ num++); byte b2 = (byte)((int)(expr_1B >> 8) ^ num++); byte arg_3C_0 = b2; b2 = b; b = arg_3C_0; arg_44_0[arg_44_1] = (ushort)((int)b2 << 8 | (int)b); arg_47_0 = expr_14 + 1; IL_47: if ((arg_14_0 = arg_47_0) >= array.Length) { return string.Intern(new string(array)); } goto IL_14; } }
using System; using System.Collections; using System.Web; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using WC.BLL; using WC.Tool; namespace WC.WebUI.InfoTip { public class Operate_Reg : ViewPages { protected string times; protected string url; protected HtmlForm form1; protected Panel pa; protected HtmlGenericControl tip; protected HtmlGenericControl lic; protected HtmlGenericControl u; protected HtmlGenericControl nt; protected LinkButton lb; protected void Page_Load(object sender, EventArgs e) { int a_ = 8; while (true) { int a_2 = 10; int num = 3; while (true) { string arg_3A7_0; int num2; bool flag; bool arg_24D_0; switch (num) { case 0: goto IL_127; case 1: if ((arg_3A7_0 = base.Request.QueryString[<Module>.a(<Module>.a("ⵃ╖", a_), a_2)]) == null) { num2 = 9; num = 9; continue; } goto IL_3A7; case 2: return; case 3: goto IL_2B2; case 4: { this.pa.Visible = true; this.nt.InnerText = <Module>.a(<Module>.a("ⴙ╱┈", a_), a_2) + Config.Get111(); int num3 = Convert.ToInt32(base.Request.QueryString[<Module>.a(<Module>.a("ⵃ╖", a_), a_2)]); this.tip.InnerText = <Module>.a(<Module>.a("牾睨坭稱稝볂ꪚ飅ꍗ肕", a_), a_2) + num3 + <Module>.a(<Module>.a("掗", a_), a_2); this.lic.InnerText = <Module>.a(<Module>.a("牾睨姞揂殙郍蟒袝뀟桠樢癅긒肕琪ꏧ箽", a_), a_2); num2 = 5; num = 8; continue; } case 5: num2 = 4; num = 17; continue; case 6: arg_3A7_0 = ""; goto IL_3A7; case 7: goto IL_127; case 8: goto IL_127; case 9: goto IL_127; case 10: switch (num2) { case 0: num = 21; continue; case 1: num = 26; continue; case 2: num = 12; continue; case 3: num = 2; continue; case 4: num = 22; continue; case 5: num = 13; continue; case 6: num = 19; continue; case 7: num = 1; continue; case 8: if (true) { } num = 4; continue; case 9: num = 6; continue; default: num = 11; continue; } break; case 11: goto IL_2B2; case 12: goto IL_BC; case 13: return; case 14: goto IL_BC; case 15: goto IL_127; case 16: num2 = 8; num = 24; continue; case 17: goto IL_127; case 18: goto IL_557; case 19: if (!flag) { num = 16; continue; } flag = Config.Get333(); num2 = 1; num = 23; continue; case 20: goto IL_127; case 21: arg_24D_0 = true; goto IL_24D; case 22: this.pa.Visible = true; this.nt.InnerText = <Module>.a(<Module>.a("ⴙ╱┈", a_), a_2) + Config.Get111(); this.tip.InnerText = <Module>.a(<Module>.a("䄕歠瑨逤潕若볂ꊒ飅ꭟ肕˧ꭟ", a_), a_2); this.lic.InnerText = <Module>.a(<Module>.a("䶅益毀乚掺蟵茑眵鍊鍡檊댋辵苉", a_), a_2); num2 = 0; num = 27; continue; case 23: goto IL_127; case 24: goto IL_127; case 25: arg_24D_0 = false; goto IL_24D; case 26: if (!flag) { num = 5; continue; } this.pa.Visible = false; base.Response.Write(<Module>.a(<Module>.a("ⴑ╖╆ᵯᵴﶏﶉ赅魩餞鬺䃯燵璩┄亥䩮䤝歠壝眓橚堅ⴌ䐺꤇綵殙J٤浌浊敌敞紊純攋攁洂洚敋攆ᵱᵲ╖╀ⴅⴄ┞┙㴒㵎╆╗ⵄⵝ║┛", a_), a_2)); num2 = 2; num = 15; continue; case 27: goto IL_127; } break; IL_BC: num2 = 3; num = 7; continue; IL_127: num = 10; continue; IL_24D: if (arg_24D_0) { num = 18; continue; } goto IL_557; IL_2B2: Hashtable hashtable = (Hashtable)HttpContext.Current.Application[<Module>.a(<Module>.a("ⵞ║╄ᵳᵹﶚ", a_), a_2)]; this.times = Convert.ToString(hashtable[<Module>.a(<Module>.a("ⵄ╋╃ᵲᵩﶏﶘ", a_), a_2)]); this.u.InnerHtml = this.url; num2 = 7; num = 0; continue; IL_3A7: flag = !Utils.IsNumber(arg_3A7_0); num2 = 6; num = 20; continue; IL_557: num = 14; } } } protected void Reg_Click(object sender, EventArgs e) { int a_ = 18; while (true) { int a_2 = 1; int num = 7; while (true) { int num2; bool flag; bool arg_21A_0; switch (num) { case 0: num2 = 2; num = 9; continue; case 1: goto IL_1A9; case 2: switch (num2) { case 0: num = 6; continue; case 1: num = 12; continue; case 2: num = 8; continue; case 3: num = 11; continue; default: num = 5; continue; } break; case 3: goto IL_1A9; case 4: goto IL_1A9; case 5: goto IL_123; case 6: return; case 7: goto IL_123; case 8: base.Response.Write(<Module>.a(<Module>.a("탮킥킱킬킻킦킦탐鰆腞닆艍탿덚랕볪鹫嗒Ꙧ戄罁䔚〗儭밌ヺ⛒㕽㍟偳偱偻偕瀅瀟瀜瀚瀝瀁灜瀂倽倵倳倪倻倹值倓〕〙ざせごしぇあ킦탸킳킭킢킮탵탒", a_), a_2)); num2 = 0; num = 1; continue; case 9: goto IL_1A9; case 10: goto IL_190; case 11: if (!flag) { num = 0; continue; } base.Response.Write(<Module>.a(<Module>.a("탮킥킱킬킻킦킦탐鰆腞꣗䗋嬱탳嬡䄟떞뾡慓峚憲䠳〗〕〇偩倡倻倰倶倹倥偀瀑瀚瀝瀍瀗灞灛灕偮偹倡倽倠倿倢做「", a_), a_2)); num2 = 1; num = 4; continue; case 12: return; case 13: arg_21A_0 = true; goto IL_21A; case 14: if (true) { } arg_21A_0 = false; goto IL_21A; } break; IL_123: string m = base.Request.Form[<Module>.a(<Module>.a("킡킸", a_), a_2)]; flag = !Config.Get222(m); num = 13; continue; IL_190: num2 = 3; num = 3; continue; IL_21A: if (arg_21A_0) { num = 10; continue; } goto IL_190; IL_1A9: num = 2; } } } public Operate_Reg() { int a_ = 17; int a_2 = 1; this.times = <Module>.a(<Module>.a("턞", a_), a_2); this.url = <Module>.a(<Module>.a("턑톴퇵통톯톰톳퇐톚톢퇻톷톲톷퇤턕ㅛㅐㅉㄝㅁㅔㅟ兊儰儡兠儂儷儹儌焃焞煕焎焉焌焙焈児兲儳儲儳儡典党ㅈㅜㅒㅕㅉㄏㅗㅂ텁톱퇮퇺퇣톽톡톙톇톺톷퇬퇥퇻톻텈ㅙㄉㄚㅜ", a_), a_2); base..ctor(); } } }
这混淆过的,是反编译出来的吧。
对的
@我就是村长: 您是专门研究破解呢,还是学习网站?如果是要破解,建议换个思路吧。
@liqipeng: 啥思路呢
@我就是村长: 破解可以考虑如何跳过注册码,而不是一定要了解它的注册码的算法。比如说它进行注册码验证的代码,肯定有判断返回true或false,改成让它始终返回true,那注册码计算就失效了。
还需要了解il,因为很明显这混淆过的代码反编译出来的已经不符合csharp语法了,无法编译通过,要改只能直接改il代码。
也可以考虑DLL注入,进行托管函数拦截,然后使用反射等手段也有可能达到目的。