抓包

image.png

分析

定位代码

image.png

image.png

解密混淆

  1. function doLogin() {
  2. var encrypt = new JSEncrypt();
  3. var public_key = $("#pk").val();
  4. encrypt.setPublicKey(public_key);
  5. var password_old = $("#MemberPassword").val();
  6. var pass_new = encrypt.encrypt(password_old);
  7. $("#MemberPassword").val(pass_new);
  8. var password_old_2 = $("#reMemberPassword").val();
  9. var pass_new_2 = encrypt.encrypt(password_old_2);
  10. $("#reMemberPassword").val(pass_new_2);
  11. }

核心代码

  1. function doLogin() {
  2. var encrypt = new JSEncrypt();
  3. var public_key = $("#pk").val(); // 获取html中id为pk的内容
  4. encrypt.setPublicKey(public_key);
  5. var password_old = $("#MemberPassword").val(); // 获取html中MemberPassword为pk的内容
  6. var pass_new = encrypt.encrypt(password_old); // 加密
  7. $("#MemberPassword").val(pass_new); // 设置id为MemberPassword的标签内容为pass_new
  8. var password_old_2 = $("#reMemberPassword").val(); // 获取html中reMemberPassword为pk的内容
  9. var pass_new_2 = encrypt.encrypt(password_old_2); // 加密
  10. $("#reMemberPassword").val(pass_new_2); // 设置id为reMemberPassword的标签内容为pass_new_2
  11. $("#login_button").submit() // 提交表单
  12. }

调试

image.png
双击doLogin前面的f
image.png

VM中的代码不是混淆代码
image.png

image.png

image.png

函数栈

tmp.gif

总结

调试步骤:
1.找到JS的关键代码打断点
2.重新运行
3.观察调试栏右侧的变量和函数、中间代码区的断点执行进度和代码右边的当前变量值