【Web逆向】基于Electron的CrackMe详细教程

查看 106|回复 9
作者:hualy   
在教程开始之前,感谢collinchen1218提供的CrackMe,感谢cattie的指导CrackMe地址
1、双击打开下载好的文件


1.png (5.2 KB, 下载次数: 0)
下载附件
2024-5-21 13:02 上传

会弹出一个界面,借助大佬的经验进行操作:electron嘛,肯定会在本地设置一个服务器。直接利用netstat -na看本地端口连接情况


2.png (69.15 KB, 下载次数: 0)
下载附件
2024-5-21 13:02 上传

2、找出本地服务器打开任务管理器,找到相关进程,在这其实可以看出是Electron框架(应该把前端页面搞成exe文件的)做的,然后点击下面的第一个,右键打开菜单,转到详细信息


3.png (316.51 KB, 下载次数: 0)
下载附件
2024-5-21 13:02 上传

这样子就可以看到PID是多少了


4.png (487.84 KB, 下载次数: 0)
下载附件
2024-5-21 13:02 上传

这四个如何选择呢?答案是选第一个,也就是CrackMe的运行跳转到的那个,其他的会没反应


5.png (35.52 KB, 下载次数: 0)
下载附件
2024-5-21 13:02 上传

  • TCP:表示这是基于TCP协议的连接。
  • 127.0.0.1:49790:这是本地主机的IP地址和端口号。127.0.0.1 是本地回环地址,通常用于本地主机与本地主机之间的通信。49790 是源端口号。
  • 127.0.0.1:49789:这是另一个本地主机的IP地址和端口号,作为连接的目标。49789 是目标端口号。
  • ESTABLISHED:这表示连接已经建立,正在进行数据传输。
  • 17400:这是与此连接相关的进程的标识符,通常是操作系统分配给该进程的一个数字。
    而我们要打开的则是127.0.0.1:49789,相当于本机访问百度那样,而我们实际是本机访问本机的一个程序


    6.png (104.83 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    这样子就可以开心愉快的进行调试啦但是却发现F12、ctrl+shift+i快捷键打不开开发者工具只能够点击打开自定义及控制--更多工具--开发者工具来打开开发者工具


    7.png (157.95 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    然后进行以下操作:


    8.png (203.71 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    下断点进行动态调试,下完断点后刷新页面


    9.png (301.97 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    发现debugger


    10.png (194.2 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    解决debugger尝试1:下断点后修改断点为false,然后回车确认,测试了好多遍,时行时不行,就相当于是不行!


    11.png (51.1 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传



    12.png (36.32 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传



    13.png (133.7 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    尝试2:替换调用的js,解决不了问题就解决制作问题的代码


    14.png (189.44 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    找到制作问题的代码:


    15.png (222.55 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    解决制作问题的代码:         }[_0x17a01d(0xc2)]('debu' + 'gger')[_0x17a01d(0x100)]('action'));这一行代码,如何让它不能正常运行呢?增删改都可以,反正就是破坏原本的代码结构使其失效增:


    16.png (296.71 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    改:


    17.png (258.96 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:02 上传

    删:


    18.png (244.69 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:03 上传

    上面那几个虽然可以跳过debugger,但是可能会有一些奇奇怪怪的bug【不是】(我踩过的坑,希望有人也踩一下),所以,最好改一下[_0x17a01d(0xc2)]('debu' + 'gger')[_0x17a01d(0x100)]('action'));中的('debu' + 'gger'),比如去掉一个“g”
    找到启动的js


    19.png (205.31 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:03 上传

    开始调试


    20.png (309.37 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:03 上传



    21.png (299.85 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:03 上传



    22.png (358.09 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:03 上传

    分析代码:[JavaScript] 纯文本查看 复制代码document.addEventListener('keydown', function(event) {    if (event.ctrlKey && event.shiftKey && event.key === 'I') {        event.preventDefault()    }});document.addEventListener('keydown', function(event) {    if (event.key === 'F12') {        event.preventDefault()    }});var fl1 = "flag{";var fl2 = "pj52}";var pa1 = "collinchen1218";var pa2 = "crackme_";var nu1 = 5555 * 5555;var pa3 = nu1 + "_";var nu2 = 8888 * 8888;var pa4 = nu2 + "_";var nu3 = 5222 * 5222;var pa5 = nu3 + "_";var pa6 = "cm_";var pa7 = "horry_";var pa8 = "52pojie_";var pa9 = "magic_";var rd1 = fl1 + pa2 + pa3 + fl2;var rd2 = fl1 + pa7 + pa2 + fl2;var rd3 = fl1 + pa8 + pa6 + fl2;var rd4 = fl1 + pa9 + pa7 + fl2;var rd5 = fl1 + pa8 + pa1 + fl2;var rd6 = fl1 + pa4 + pa8 + fl2;var rd7 = fl1 + pa6 + pa5 + fl2;var rd8 = fl1 + pa8 + pa1 + fl2;var rd9 = fl1 + pa4 + pa9 + fl2;var rd10 = fl1 + pa5 + pa4 + fl2;function verifyPassword() {    var inputPassword = document.getElementById("inputPassword").value;    var correctPassword = "flag{52pojie_Ha5py_M8y_cr6ckme_qwer56uiop_ht01_N9w@2024}";    var correctPassword2 = "flag{52p0ji5_Ha58y_M8y_cr6c1me_qwer56ulkp_ht01_N9w@2024}";    if (inputPassword === "flag{asdedfgh_cm_9999}") {}    if (inputPassword === rd7 + rd3) {        document.getElementById('editable-div').innerHTML = "密码正确"    } else {        document.getElementById('editable-div').innerHTML = "密码错误"    }}
    看到以下代码就可以知道判断逻辑了
    [JavaScript] 纯文本查看 复制代码if (inputPassword === rd7 + rd3) {        document.getElementById('editable-div').innerHTML = "密码正确"    } else {        document.getElementById('editable-div').innerHTML = "密码错误"    }
    在控制台输入 rd7 + rd3,就可以看到flag了


    23.png (330.31 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:03 上传

    输入flag{cm_27269284_pj52}flag{52pojie_cm_pj52}验证一下,密码正确


    24.png (57.1 KB, 下载次数: 0)
    下载附件
    2024-5-21 13:03 上传

    下载次数, 下载附件

  • 7R903   

    谢谢楼主的教程,吐槽一下排版,看的挺累
    homehome   

    总结知识点:
    1、在任务管理的详细信息里查看程序相关端口
    2、使用netstat -aon|findstr “端口号”确定有效端口
    3、使用开发者工具-事件监听器-进行按钮事件下断
    4、移除debugger限制:
         1.1断点改为false失败
         1.2替换调用的js,将其中的 ('debu' + 'gger'),比如去掉一个“g”,使js失效
    byh3025   

    谢谢大佬的精彩分析,好好学习一下
    yulai3230   

    学习到了
    悦来客栈的老板   

    这文章也太详细了。谢谢。
    jjjzw   

    学到了,原来electron是这样的
    第一个web cm的时候就在想怎么打开的开发者工具
    zyzyzyzy   

    学习一下
    fish820   

    学到了感谢分享
    pan   

    基于此方法  好像我的查不到长连接  他直接访问的本路文件路径的.asar
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部