最近弄一个网站,此网站使用的时asp+vb组件的形式,用户登录的时候会产生一段加密后的字符串,我想弄清楚这种加密方式,请大家帮忙看看,反编译DLL后,找到了关键的加密代码,但是读不懂,请大家帮忙看看
Public Function mkey(UID, ymStr) '110EDA50
loc_110EDA50: push ebp
loc_110EDA51: mov ebp, esp
loc_110EDA53: sub esp, 0000000Ch
loc_110EDA56: push 11005066h ; __vbaExceptHandler
loc_110EDA5B: mov eax, fs:[00h]
loc_110EDA61: push eax
loc_110EDA62: mov fs:[00000000h], esp
loc_110EDA69: sub esp, 000000E8h
loc_110EDA6F: push ebx
loc_110EDA70: push esi
loc_110EDA71: push edi
loc_110EDA72: mov var_C, esp
loc_110EDA75: mov var_8, 11001D78h
loc_110EDA7C: xor edi, edi
loc_110EDA7E: mov var_4, edi
loc_110EDA81: mov esi, Me
loc_110EDA84: push esi
loc_110EDA85: mov eax, [esi]
loc_110EDA87: call [eax+04h]
loc_110EDA8A: mov ecx, arg_14
loc_110EDA8D: lea eax, var_5C
loc_110EDA90: push eax
loc_110EDA91: mov var_4C, edi
loc_110EDA94: mov [ecx], edi
loc_110EDA96: mov edx, [esi]
loc_110EDA98: lea ecx, var_4C
loc_110EDA9B: mov var_24, edi
loc_110EDA9E: push ecx
loc_110EDA9F: push esi
loc_110EDAA0: mov var_28, edi
loc_110EDAA3: mov var_38, edi
loc_110EDAA6: mov var_3C, edi
loc_110EDAA9: mov var_5C, edi
loc_110EDAAC: mov var_6C, edi
loc_110EDAAF: mov var_7C, edi
loc_110EDAB2: mov var_8C, edi
loc_110EDAB8: mov var_9C, edi
loc_110EDABE: mov var_AC, edi
loc_110EDAC4: mov var_BC, edi
loc_110EDACA: mov var_CC, edi
loc_110EDAD0: mov var_EC, edi
loc_110EDAD6: mov var_44, 00000001h
loc_110EDADD: mov var_4C, 00000002h
loc_110EDAE4: call [edx+0000052Ch]
loc_110EDAEA: lea edx, var_5C
loc_110EDAED: lea ecx, var_38
loc_110EDAF0: call [11001014h] ; __vbaVarMove
loc_110EDAF6: lea ecx, var_4C
loc_110EDAF9: call [11001024h] ; __vbaFreeVar
loc_110EDAFF: mov edx, [esi+5Ch]
loc_110EDB02: push edx
loc_110EDB03: push 1100D0D0h ; "_MKEY_"
loc_110EDB08: call [11001070h] ; &
loc_110EDB0E: lea ecx, var_6C
loc_110EDB11: mov var_44, eax
loc_110EDB14: mov eax, [esi+38h]
loc_110EDB17: lea edx, var_4C
loc_110EDB1A: push ecx
loc_110EDB1B: push edx
loc_110EDB1C: mov edx, UID
loc_110EDB1F: mov var_4C, 00000008h
loc_110EDB26: mov ebx, [eax]
loc_110EDB28: lea ecx, var_9C
loc_110EDB2E: call [1100101Ch] ; __vbaVarVargNofree
loc_110EDB34: push eax
loc_110EDB35: lea eax, var_5C
loc_110EDB38: push eax
loc_110EDB39: call [11001204h] ; __vbaVarCat
loc_110EDB3F: lea ecx, var_3C
loc_110EDB42: push eax
loc_110EDB43: push ecx
loc_110EDB44: call [110011FCh] ; __vbaStrVarVal
loc_110EDB4A: mov edx, [esi+38h]
loc_110EDB4D: push eax
loc_110EDB4E: push edx
loc_110EDB4F: call [ebx+1Ch]
loc_110EDB52: cmp eax, edi
loc_110EDB54: fclex
loc_110EDB56: jnl 110EDB6Ah
loc_110EDB58: mov ecx, [esi+38h]
loc_110EDB5B: push 0000001Ch
loc_110EDB5D: push 11008D08h
loc_110EDB62: push ecx
loc_110EDB63: push eax
loc_110EDB64: call [11001088h] ; __vbaHresultCheckObj
loc_110EDB6A: lea edx, var_6C
loc_110EDB6D: lea eax, var_AC
loc_110EDB73: push edx
loc_110EDB74: push eax
loc_110EDB75: mov var_A4, 11008D68h
loc_110EDB7F: mov var_AC, 00008008h
loc_110EDB89: call [11001260h] ; __vbaVarTstNe
loc_110EDB8F: lea ecx, var_3C
loc_110EDB92: mov bx, ax
loc_110EDB95: call [11001324h] ; __vbaFreeStr
loc_110EDB9B: lea ecx, var_6C
loc_110EDB9E: lea edx, var_5C
loc_110EDBA1: push ecx
loc_110EDBA2: lea eax, var_4C
loc_110EDBA5: push edx
loc_110EDBA6: push eax
loc_110EDBA7: push 00000003h
loc_110EDBA9: call [1100103Ch] ; __vbaFreeVarList
loc_110EDBAF: add esp, 00000010h
loc_110EDBB2: cmp bx, di
loc_110EDBB5: jz 110EDC55h
loc_110EDBBB: mov ecx, [esi+5Ch]
loc_110EDBBE: push ecx
loc_110EDBBF: push 1100D0D0h ; "_MKEY_"
loc_110EDBC4: call [11001070h] ; &
loc_110EDBCA: mov edx, [esi+38h]
loc_110EDBCD: mov var_44, eax
loc_110EDBD0: lea eax, var_6C
loc_110EDBD3: lea ecx, var_4C
loc_110EDBD6: mov var_4C, 00000008h
loc_110EDBDD: mov ebx, [edx]
loc_110EDBDF: mov edx, UID
loc_110EDBE2: push eax
loc_110EDBE3: push ecx
loc_110EDBE4: lea ecx, var_9C
loc_110EDBEA: call [1100101Ch] ; __vbaVarVargNofree
loc_110EDBF0: lea edx, var_5C
loc_110EDBF3: push eax
loc_110EDBF4: push edx
loc_110EDBF5: call [11001204h] ; __vbaVarCat
loc_110EDBFB: push eax
loc_110EDBFC: lea eax, var_3C
loc_110EDBFF: push eax
loc_110EDC00: call [110011FCh] ; __vbaStrVarVal
loc_110EDC06: mov ecx, [esi+38h]
loc_110EDC09: push eax
loc_110EDC0A: push ecx
loc_110EDC0B: call [ebx+1Ch]
loc_110EDC0E: cmp eax, edi
loc_110EDC10: fclex
loc_110EDC12: jnl 110EDC26h
loc_110EDC14: mov edx, [esi+38h]
loc_110EDC17: push 0000001Ch
loc_110EDC19: push 11008D08h
loc_110EDC1E: push edx
loc_110EDC1F: push eax
loc_110EDC20: call [11001088h] ; __vbaHresultCheckObj
loc_110EDC26: mov ebx, [11001014h] ; __vbaVarMove
loc_110EDC2C: lea edx, var_6C
loc_110EDC2F: lea ecx, var_38
loc_110EDC32: call ebx
loc_110EDC34: lea ecx, var_3C
loc_110EDC37: call [11001324h] ; __vbaFreeStr
loc_110EDC3D: lea eax, var_5C
loc_110EDC40: lea ecx, var_4C
loc_110EDC43: push eax
loc_110EDC44: push ecx
loc_110EDC45: push 00000002h
loc_110EDC47: call [1100103Ch] ; __vbaFreeVarList
loc_110EDC4D: add esp, 0000000Ch
loc_110EDC50: jmp 110EDEABh
loc_110EDC55: mov ebx, [esi]
loc_110EDC57: mov eax, 00000008h
loc_110EDC5C: mov var_9C, eax
loc_110EDC62: mov var_BC, eax
loc_110EDC68: lea edx, var_6C
loc_110EDC6B: lea eax, var_9C
loc_110EDC71: push edx
loc_110EDC72: mov edx, UID
loc_110EDC75: push eax
loc_110EDC76: lea ecx, var_AC
loc_110EDC7C: mov var_94, 1101BD3Ch ; "SELECT COUNT(ID) FROM Users WHERE ID ="
loc_110EDC86: mov var_B4, 1101BD90h ; "AND mkCode <> ''"
loc_110EDC90: call [1100101Ch] ; __vbaVarVargNofree
loc_110EDC96: lea ecx, var_4C
loc_110EDC99: push eax
loc_110EDC9A: push ecx
loc_110EDC9B: call [11001204h] ; __vbaVarCat
loc_110EDCA1: push eax
loc_110EDCA2: lea edx, var_BC
loc_110EDCA8: lea eax, var_5C
loc_110EDCAB: push edx
loc_110EDCAC: push eax
loc_110EDCAD: call [11001204h] ; __vbaVarCat
loc_110EDCB3: push eax
loc_110EDCB4: push esi
loc_110EDCB5: call [ebx+5Ch]
loc_110EDCB8: cmp eax, edi
loc_110EDCBA: jnl 110EDCCBh
loc_110EDCBC: push 0000005Ch
loc_110EDCBE: push 11007F5Ch
loc_110EDCC3: push esi
loc_110EDCC4: push eax
loc_110EDCC5: call [11001088h] ; __vbaHresultCheckObj
loc_110EDCCB: mov edx, var_C8
loc_110EDCD1: sub esp, 00000010h
loc_110EDCD4: mov ecx, esp
loc_110EDCD6: mov eax, 00000002h
loc_110EDCDB: push 00000001h
loc_110EDCDD: mov var_E4, 00000001h
loc_110EDCE7: mov [ecx], eax
loc_110EDCE9: xor eax, eax
loc_110EDCEB: mov var_EC, 00008002h
loc_110EDCF5: mov [ecx+04h], edx
loc_110EDCF8: lea edx, var_7C
loc_110EDCFB: mov [ecx+08h], eax
loc_110EDCFE: mov eax, var_C0
loc_110EDD04: mov [ecx+0Ch], eax
loc_110EDD07: lea ecx, var_6C
loc_110EDD0A: push ecx
loc_110EDD0B: push edx
loc_110EDD0C: call [110010ECh] ; __vbaVarIndexLoad
loc_110EDD12: add esp, 0000001Ch
loc_110EDD15: push eax
loc_110EDD16: lea eax, var_EC
loc_110EDD1C: push eax
loc_110EDD1D: call [110012A0h] ; __vbaVarTstGe
loc_110EDD23: lea ecx, var_7C
loc_110EDD26: mov bx, ax
loc_110EDD29: lea edx, var_6C
loc_110EDD2C: push ecx
loc_110EDD2D: lea eax, var_5C
loc_110EDD30: push edx
loc_110EDD31: lea ecx, var_4C
loc_110EDD34: push eax
loc_110EDD35: push ecx
loc_110EDD36: push 00000004h
loc_110EDD38: call [1100103Ch] ; __vbaFreeVarList
loc_110EDD3E: add esp, 00000014h
loc_110EDD41: cmp bx, di
loc_110EDD44: jz 110EDE06h
loc_110EDD4A: mov ebx, [esi]
loc_110EDD4C: lea edx, var_5C
loc_110EDD4F: lea eax, var_9C
loc_110EDD55: push edx
loc_110EDD56: mov edx, UID
loc_110EDD59: push eax
loc_110EDD5A: lea ecx, var_AC
loc_110EDD60: mov var_B4, edi
loc_110EDD66: mov var_BC, 00000002h
loc_110EDD70: mov var_94, 1101BDD8h ; "SELECT mkCode FROM Users WHERE ID ="
loc_110EDD7A: mov var_9C, 00000008h
loc_110EDD84: call [1100101Ch] ; __vbaVarVargNofree
loc_110EDD8A: lea ecx, var_4C
loc_110EDD8D: push eax
loc_110EDD8E: push ecx
loc_110EDD8F: call [11001204h] ; __vbaVarCat
loc_110EDD95: push eax
loc_110EDD96: push esi
loc_110EDD97: call [ebx+5Ch]
loc_110EDD9A: cmp eax, edi
loc_110EDD9C: jnl 110EDDADh
loc_110EDD9E: push 0000005Ch
loc_110EDDA0: push 11007F5Ch
loc_110EDDA5: push esi
loc_110EDDA6: push eax
loc_110EDDA7: call [11001088h] ; __vbaHresultCheckObj
loc_110EDDAD: mov eax, var_BC
loc_110EDDB3: mov ecx, var_B8
loc_110EDDB9: sub esp, 00000010h
loc_110EDDBC: mov edx, esp
loc_110EDDBE: push 00000001h
loc_110EDDC0: mov [edx], eax
loc_110EDDC2: mov eax, var_B4
loc_110EDDC8: mov [edx+04h], ecx
loc_110EDDCB: mov ecx, var_B0
loc_110EDDD1: mov [edx+08h], eax
loc_110EDDD4: lea eax, var_6C
loc_110EDDD7: mov [edx+0Ch], ecx
loc_110EDDDA: lea edx, var_5C
loc_110EDDDD: push edx
loc_110EDDDE: push eax
loc_110EDDDF: call [110010ECh] ; __vbaVarIndexLoad
loc_110EDDE5: add esp, 0000001Ch
loc_110EDDE8: mov edx, eax
loc_110EDDEA: lea ecx, var_38
loc_110EDDED: call [11001014h] ; __vbaVarMove
loc_110EDDF3: lea ecx, var_5C
loc_110EDDF6: lea edx, var_4C
loc_110EDDF9: push ecx
loc_110EDDFA: push edx
loc_110EDDFB: push 00000002h
loc_110EDDFD: call [1100103Ch] ; __vbaFreeVarList
loc_110EDE03: add esp, 0000000Ch
loc_110EDE06: mov eax, [esi+5Ch]
loc_110EDE09: push eax
loc_110EDE0A: push 1100D0D0h ; "_MKEY_"
loc_110EDE0F: call [11001070h] ; &
loc_110EDE15: mov ecx, [esi+38h]
loc_110EDE18: sub esp, 00000010h
loc_110EDE1B: mov var_44, eax
loc_110EDE1E: mov eax, var_38
loc_110EDE21: mov edx, esp
loc_110EDE23: mov var_4C, 00000008h
loc_110EDE2A: mov ebx, [ecx]
loc_110EDE2C: mov ecx, var_34
loc_110EDE2F: mov [edx], eax
loc_110EDE31: mov eax, var_30
loc_110EDE34: mov [edx+04h], ecx
loc_110EDE37: mov ecx, var_2C
loc_110EDE3A: mov [edx+08h], eax
loc_110EDE3D: mov [edx+0Ch], ecx
loc_110EDE40: lea edx, var_4C
loc_110EDE43: push edx
loc_110EDE44: mov edx, UID
loc_110EDE47: lea ecx, var_9C
loc_110EDE4D: call [1100101Ch] ; __vbaVarVargNofree
loc_110EDE53: push eax
loc_110EDE54: lea eax, var_5C
loc_110EDE57: push eax
loc_110EDE58: call [11001204h] ; __vbaVarCat
loc_110EDE5E: lea ecx, var_3C
loc_110EDE61: push eax
loc_110EDE62: push ecx
loc_110EDE63: call [110011FCh] ; __vbaStrVarVal
loc_110EDE69: mov edx, [esi+38h]
loc_110EDE6C: push eax
loc_110EDE6D: push edx
loc_110EDE6E: call [ebx+20h]
loc_110EDE71: cmp eax, edi
loc_110EDE73: fclex
loc_110EDE75: jnl 110EDE89h
loc_110EDE77: mov ecx, [esi+38h]
loc_110EDE7A: push 00000020h
loc_110EDE7C: push 11008D08h
loc_110EDE81: push ecx
loc_110EDE82: push eax
loc_110EDE83: call [11001088h] ; __vbaHresultCheckObj
loc_110EDE89: lea ecx, var_3C
loc_110EDE8C: call [11001324h] ; __vbaFreeStr
loc_110EDE92: lea edx, var_5C
loc_110EDE95: lea eax, var_4C
loc_110EDE98: push edx
loc_110EDE99: push eax
loc_110EDE9A: push 00000002h
loc_110EDE9C: call [1100103Ch] ; __vbaFreeVarList
loc_110EDEA2: mov ebx, [11001014h] ; __vbaVarMove
loc_110EDEA8: add esp, 0000000Ch
loc_110EDEAB: lea ecx, var_38
loc_110EDEAE: lea edx, var_4C
loc_110EDEB1: push ecx
loc_110EDEB2: push edx
loc_110EDEB3: mov var_94, 00000007h
loc_110EDEBD: mov var_9C, 00008002h
loc_110EDEC7: call [1100109Ch] ; arg_1 = Len(arg_2)
loc_110EDECD: push eax
loc_110EDECE: lea eax, var_9C
loc_110EDED4: push eax
loc_110EDED5: call [1100114Ch] ; __vbaVarTstEq
loc_110EDEDB: test ax, ax
loc_110EDEDE: jz 110EDF23h
loc_110EDEE0: mov ecx, [esi]
loc_110EDEE2: lea edx, var_4C
loc_110EDEE5: push edx
loc_110EDEE6: push esi
loc_110EDEE7: call [ecx+60h]
loc_110EDEEA: cmp eax, edi
loc_110EDEEC: jnl 110EDEFDh
loc_110EDEEE: push 00000060h
loc_110EDEF0: push 11007F5Ch
loc_110EDEF5: push esi
loc_110EDEF6: push eax
loc_110EDEF7: call [11001088h] ; __vbaHresultCheckObj
loc_110EDEFD: mov esi, [11001204h] ; __vbaVarCat
loc_110EDF03: lea eax, var_38
loc_110EDF06: lea ecx, var_4C
loc_110EDF09: push eax
loc_110EDF0A: lea edx, var_5C
loc_110EDF0D: push ecx
loc_110EDF0E: push edx
loc_110EDF0F: call __vbaVarCat
loc_110EDF11: mov edx, eax
loc_110EDF13: lea ecx, var_38
loc_110EDF16: call ebx
loc_110EDF18: lea ecx, var_4C
loc_110EDF1B: call [11001024h] ; __vbaFreeVar
loc_110EDF21: jmp 110EDF29h
loc_110EDF23: mov esi, [11001204h] ; __vbaVarCat
loc_110EDF29: mov edx, UID
loc_110EDF2C: lea ecx, var_9C
loc_110EDF32: call [1100101Ch] ; __vbaVarVargNofree
loc_110EDF38: push eax
loc_110EDF39: lea eax, var_38
loc_110EDF3C: lea ecx, var_4C
loc_110EDF3F: push eax
loc_110EDF40: push ecx
loc_110EDF41: call __vbaVarCat
loc_110EDF43: mov edx, ymStr
loc_110EDF46: push eax
loc_110EDF47: lea ecx, var_AC
loc_110EDF4D: call [1100101Ch] ; __vbaVarVargNofree
loc_110EDF53: lea edx, var_5C
loc_110EDF56: push eax
loc_110EDF57: push edx
loc_110EDF58: call __vbaVarCat
loc_110EDF5A: mov edx, eax
loc_110EDF5C: lea ecx, var_24
loc_110EDF5F: call ebx
loc_110EDF61: lea ecx, var_4C
loc_110EDF64: call [11001024h] ; __vbaFreeVar
loc_110EDF6A: cmp var_28, edi
loc_110EDF6D: jnz 110EDF7Eh
loc_110EDF6F: lea eax, var_28
loc_110EDF72: push eax
loc_110EDF73: push 11005AF4h
loc_110EDF78: call [1100121Ch] ; __vbaNew2
loc_110EDF7E: mov esi, var_28
loc_110EDF81: lea ecx, var_24
loc_110EDF84: push ecx
loc_110EDF85: mov var_54, 80020004h
loc_110EDF8C: mov var_5C, 0000000Ah
loc_110EDF93: call [1100105Ch] ; __vbaStrErrVarCopy
loc_110EDF99: mov var_44, eax
loc_110EDF9C: lea eax, var_6C
loc_110EDF9F: push eax
loc_110EDFA0: lea ecx, var_5C
loc_110EDFA3: lea eax, var_4C
loc_110EDFA6: mov var_4C, 00000008h
loc_110EDFAD: mov edx, [esi]
loc_110EDFAF: push ecx
loc_110EDFB0: push eax
loc_110EDFB1: push esi
loc_110EDFB2: call [edx+24h]
loc_110EDFB5: cmp eax, edi
loc_110EDFB7: fclex
loc_110EDFB9: jnl 110EDFCAh
loc_110EDFBB: push 00000024h
loc_110EDFBD: push 1100B6D8h
loc_110EDFC2: push esi
loc_110EDFC3: push eax
loc_110EDFC4: call [11001088h] ; __vbaHresultCheckObj
loc_110EDFCA: lea edx, var_6C
loc_110EDFCD: lea ecx, var_24
loc_110EDFD0: call ebx
loc_110EDFD2: lea ecx, var_5C
loc_110EDFD5: lea edx, var_4C
loc_110EDFD8: push ecx
loc_110EDFD9: push edx
loc_110EDFDA: push 00000002h
loc_110EDFDC: call [1100103Ch] ; __vbaFreeVarList
loc_110EDFE2: add esp, 0000000Ch
loc_110EDFE5: push 1100B6D8h
loc_110EDFEA: push edi
loc_110EDFEB: call [110012C4h] ; __vbaCastObj
loc_110EDFF1: push eax
loc_110EDFF2: lea eax, var_28
loc_110EDFF5: push eax
loc_110EDFF6: call [110010D4h] ; Set (object)
loc_110EDFFC: lea ecx, var_4C
loc_110EDFFF: lea edx, var_24
loc_110EE002: push ecx
loc_110EE003: push 00000005h
loc_110EE005: lea eax, var_5C
loc_110EE008: push edx
loc_110EE009: push eax
loc_110EE00A: mov var_44, 00000006h
loc_110EE011: mov var_4C, 00000002h
loc_110EE018: call [1100112Ch] ; arg_1 = Mid$(arg_2, arg_3, mkey)
loc_110EE01E: lea edx, var_5C
loc_110EE021: lea ecx, var_24
loc_110EE024: call ebx
loc_110EE026: lea ecx, var_4C
loc_110EE029: call [11001024h] ; __vbaFreeVar
loc_110EE02F: push 110EE084h
loc_110EE034: jmp 110EE071h
loc_110EE036: test byte ptr var_4, 04h
loc_110EE03A: jz 110EE045h
loc_110EE03C: lea ecx, var_24
loc_110EE03F: call [11001024h] ; __vbaFreeVar
loc_110EE045: lea ecx, var_3C
loc_110EE048: call [11001324h] ; __vbaFreeStr
loc_110EE04E: lea ecx, var_8C
loc_110EE054: lea edx, var_7C
loc_110EE057: push ecx
loc_110EE058: lea eax, var_6C
loc_110EE05B: push edx
loc_110EE05C: lea ecx, var_5C
loc_110EE05F: push eax
loc_110EE060: lea edx, var_4C
loc_110EE063: push ecx
loc_110EE064: push edx
loc_110EE065: push 00000005h
loc_110EE067: call [1100103Ch] ; __vbaFreeVarList
loc_110EE06D: add esp, 00000018h
loc_110EE070: ret
loc_110EE071: lea ecx, var_28
loc_110EE074: call [11001328h] ; __vbaFreeObj
loc_110EE07A: lea ecx, var_38
loc_110EE07D: call [11001024h] ; __vbaFreeVar
loc_110EE083: ret
loc_110EE084: mov eax, Me
loc_110EE087: push eax
loc_110EE088: mov ecx, [eax]
loc_110EE08A: call [ecx+08h]
loc_110EE08D: mov edx, arg_14
loc_110EE090: mov eax, var_24
loc_110EE093: mov ecx, var_20
loc_110EE096: mov [edx], eax
loc_110EE098: mov eax, var_1C
loc_110EE09B: mov [edx+04h], ecx
loc_110EE09E: mov ecx, var_18
loc_110EE0A1: mov [edx+08h], eax
loc_110EE0A4: mov [edx+0Ch], ecx
loc_110EE0A7: mov eax, var_4
loc_110EE0AA: mov ecx, var_14
loc_110EE0AD: pop edi
loc_110EE0AE: pop esi
loc_110EE0AF: mov fs:[00000000h], ecx
loc_110EE0B6: pop ebx
loc_110EE0B7: mov esp, ebp
loc_110EE0B9: pop ebp
loc_110EE0BA: retn 0010h
End Function
其中UID可以为10000,ymstr为域名,数据库里面读出的MKCODE可以为任意
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)