
1.png (148.28 KB, 下载次数: 0)
下载附件
2025-6-6 09:10 上传

2.png (43.89 KB, 下载次数: 0)
下载附件
2025-6-6 09:10 上传

userLogin.png (18.46 KB, 下载次数: 0)
下载附件
2025-6-6 09:10 上传

login.png (19.51 KB, 下载次数: 0)
下载附件
2025-6-6 09:10 上传

触发断点.png (154 KB, 下载次数: 0)
下载附件
2025-6-6 09:11 上传

password.png (58.4 KB, 下载次数: 0)
下载附件
2025-6-6 09:10 上传

点进去.png (39.27 KB, 下载次数: 0)
下载附件
2025-6-6 09:11 上传

拷贝.png (18.19 KB, 下载次数: 0)
下载附件
2025-6-6 09:10 上传

AI.png (40.44 KB, 下载次数: 0)
下载附件
2025-6-6 09:10 上传
md5: function(e) {
function t(e, t, n, i, r, o) {
return a((s = a(a(t, e), a(i, o))) >> 32 - c, n);
var s, c
}
function n(e, n, i, r, o, a, s) {
return t(n & i | ~n & r, e, n, o, a, s)
}
function i(e, n, i, r, o, a, s) {
return t(n & r | i & ~r, e, n, o, a, s)
}
function r(e, n, i, r, o, a, s) {
return t(n ^ i ^ r, e, n, o, a, s)
}
function o(e, n, i, r, o, a, s) {
return t(i ^ (n | ~r), e, n, o, a, s)
}
function a(e, t) {
var n = (65535 & e) + (65535 & t);
return (e >> 16) + (t >> 16) + (n >> 16) > 2] >> i % 4 * 8 + 4 & 15) + t.charAt(e[i >> 2] >> i % 4 * 8 & 15);
return n
}(function(e, t) {
e[t >> 5] |= 128 >> 9 > 5] |= (e.charCodeAt(i / l) & n)
import hashlib
def standard_md5(target_string):
return hashlib.md5(target_string.encode()).hexdigest()
print(standard_md5("123456")) # 输出: e10adc3949ba59abbe56e057f20f883e
小结: 本次逆向没有碰到复杂的场景,比如js代码的混淆和加密,跟栈和下断点也比较简单,只是最后加密函数的逻辑复杂,但是没关系,借助AI强大的分析,最后实现解密(我好奇的是,以前没有AI的时代,碰到这种很长很长的加密函数逻辑,大佬们是怎么熬过来的,非常欢迎大佬分享以前的经验...俺十分佩服...).本次逆向适合小白新手练练手感,为以后应对更为复杂的场景打下基础
PS: 这里还可以有另外一种思路,就是在python脚本里面,直接执行拷贝下来的md5()函数,这样做的好处就是不用再去关注md5()函数的复杂逻辑,反正我们只关心结果,能拿到结果就行,python脚本如下
">
[color=]import
execjs
[color=]#
[color=]创建完整的
[color=] JavaScript
[color=]函数
js_code =
[color=]"""
[color=]function md5(e) {
[color=] function t(e, t, n, i, r, o) {
return a((s = a(a(t, e), a(i, o))) >> 32 - c, n);
[color=] var s, c
[color=] }
[color=] function n(e, n, i, r, o, a, s) {
[color=] return t(n & i | ~n & r, e, n, o, a, s)
[color=] }
[color=] function i(e, n, i, r, o, a, s) {
[color=] return t(n & r | i & ~r, e, n, o, a, s)
[color=] }
[color=] function r(e, n, i, r, o, a, s) {
[color=] return t(n ^ i ^ r, e, n, o, a, s)
[color=] }
[color=] function o(e, n, i, r, o, a, s) {
[color=] return t(i ^ (n | ~r), e, n, o, a, s)
[color=] }
[color=] function a(e, t) {
[color=] var n = (65535 & e) + (65535 & t);
return (e >> 16) + (t >> 16) + (n >> 16)
[color=] }
[color=] var s, c = 0, l = 8;
[color=] return function(e) {
for (var t = c ? "0123456789ABCDEF" : "0123456789abcdef", n = "", i = 0; i
[color=] n += t.charAt(e[i >> 2] >> i % 4 * 8 + 4 & 15) + t.charAt(e[i >> 2] >> i % 4 * 8 & 15);
[color=] return n
[color=] }(function(e, t) {
e[t >> 5] |= 128 e[14 + (t + 64 >>> 9 for (var s = 1732584193, c = -271733879, l = -1732584194, u = 271733878, p = 0; p
[color=] var d = s
[color=] , h = c
[color=] , f = l
[color=] , g = u;
[color=] s = n(s, c, l, u, e[p + 0], 7, -680876936),
[color=] u = n(u, s, c, l, e[p + 1], 12, -389564586),
[color=] l = n(l, u, s, c, e[p + 2], 17, 606105819),
[color=] c = n(c, l, u, s, e[p + 3], 22, -1044525330),
[color=] s = n(s, c, l, u, e[p + 4], 7, -176418897),
[color=] u = n(u, s, c, l, e[p + 5], 12, 1200080426),
[color=] l = n(l, u, s, c, e[p + 6], 17, -1473231341),
[color=] c = n(c, l, u, s, e[p + 7], 22, -45705983),
[color=] s = n(s, c, l, u, e[p + 8], 7, 1770035416),
[color=] u = n(u, s, c, l, e[p + 9], 12, -1958414417),
[color=] l = n(l, u, s, c, e[p + 10], 17, -42063),
[color=] c = n(c, l, u, s, e[p + 11], 22, -1990404162),
[color=] s = n(s, c, l, u, e[p + 12], 7, 1804603682),
[color=] u = n(u, s, c, l, e[p + 13], 12, -40341101),
[color=] l = n(l, u, s, c, e[p + 14], 17, -1502002290),
[color=] s = i(s, c = n(c, l, u, s, e[p + 15], 22, 1236535329), l, u, e[p + 1], 5, -165796510),
[color=] u = i(u, s, c, l, e[p + 6], 9, -1069501632),
[color=] l = i(l, u, s, c, e[p + 11], 14, 643717713),
[color=] c = i(c, l, u, s, e[p + 0], 20, -373897302),
[color=] s = i(s, c, l, u, e[p + 5], 5, -701558691),
[color=] u = i(u, s, c, l, e[p + 10], 9, 38016083),
[color=] l = i(l, u, s, c, e[p + 15], 14, -660478335),
[color=] c = i(c, l, u, s, e[p + 4], 20, -405537848),
[color=] s = i(s, c, l, u, e[p + 9], 5, 568446438),
[color=] u = i(u, s, c, l, e[p + 14], 9, -1019803690),
[color=] l = i(l, u, s, c, e[p + 3], 14, -187363961),
[color=] c = i(c, l, u, s, e[p + 8], 20, 1163531501),
[color=] s = i(s, c, l, u, e[p + 13], 5, -1444681467),
[color=] u = i(u, s, c, l, e[p + 2], 9, -51403784),
[color=] l = i(l, u, s, c, e[p + 7], 14, 1735328473),
[color=] s = r(s, c = i(c, l, u, s, e[p + 12], 20, -1926607734), l, u, e[p + 5], 4, -378558),
[color=] u = r(u, s, c, l, e[p + 8], 11, -2022574463),
[color=] l = r(l, u, s, c, e[p + 11], 16, 1839030562),
[color=] c = r(c, l, u, s, e[p + 14], 23, -35309556),
[color=] s = r(s, c, l, u, e[p + 1], 4, -1530992060),
[color=] u = r(u, s, c, l, e[p + 4], 11, 1272893353),
[color=] l = r(l, u, s, c, e[p + 7], 16, -155497632),
[color=] c = r(c, l, u, s, e[p + 10], 23, -1094730640),
[color=] s = r(s, c, l, u, e[p + 13], 4, 681279174),
[color=] u = r(u, s, c, l, e[p + 0], 11, -358537222),
[color=] l = r(l, u, s, c, e[p + 3], 16, -722521979),
[color=] c = r(c, l, u, s, e[p + 6], 23, 76029189),
[color=] s = r(s, c, l, u, e[p + 9], 4, -640364487),
[color=] u = r(u, s, c, l, e[p + 12], 11, -421815835),
[color=] l = r(l, u, s, c, e[p + 15], 16, 530742520),
[color=] s = o(s, c = r(c, l, u, s, e[p + 2], 23, -995338651), l, u, e[p + 0], 6, -198630844),
[color=] u = o(u, s, c, l, e[p + 7], 10, 1126891415),
[color=] l = o(l, u, s, c, e[p + 14], 15, -1416354905),
[color=] c = o(c, l, u, s, e[p + 5], 21, -57434055),
[color=] s = o(s, c, l, u, e[p + 12], 6, 1700485571),
[color=] u = o(u, s, c, l, e[p + 3], 10, -1894986606),
[color=] l = o(l, u, s, c, e[p + 10], 15, -1051523),
[color=] c = o(c, l, u, s, e[p + 1], 21, -2054922799),
[color=] s = o(s, c, l, u, e[p + 8], 6, 1873313359),
[color=] u = o(u, s, c, l, e[p + 15], 10, -30611744),
[color=] l = o(l, u, s, c, e[p + 6], 15, -1560198380),
[color=] c = o(c, l, u, s, e[p + 13], 21, 1309151649),
[color=] s = o(s, c, l, u, e[p + 4], 6, -145523070),
[color=] u = o(u, s, c, l, e[p + 11], 10, -1120210379),
[color=] l = o(l, u, s, c, e[p + 2], 15, 718787259),
[color=] c = o(c, l, u, s, e[p + 9], 21, -343485551),
[color=] s = a(s, d),
[color=] c = a(c, h),
[color=] l = a(l, f),
[color=] u = a(u, g)
[color=] }
[color=] return Array(s, c, l, u)
[color=] }(function(e) {
for (var t = Array(), n = (1 t[i >> 5] |= (e.charCodeAt(i / l) & n)
[color=] return t
[color=] }(s = e), s.length * l))
[color=]}
[color=]"""
[color=]
[color=]#
[color=]创建
[color=] JS
[color=]环境
ctx = execjs.compile(js_code)
[color=]#
[color=]调用
[color=] md5
[color=]函数
input_string =
[color=]"123456"
md5_hash = ctx.call(
[color=]"md5"
, input_string)
[color=]print
(
[color=]f"MD5 of '
[color=]{
input_string
[color=]}
[color=]':
[color=]{
md5_hash
[color=]}
[color=]"
) # MD5 of '123456': e10adc3949ba59abbe56e057f20f883e
```