小白记录Js逆向的第一天.
本帖最后由 会唱歌的鬼 于 2024-5-3 12:44 编辑听了很多老师的逆向课发现 很多东西能听懂
能听懂 但是真做不出来..
然后一个偶然 我看到补环境的部分 才明白自己缺乏的是什么 相信很多小白应该和我一样都是这个问题。
那就是 Js逆向 如果连js基础都不懂 怎么做逆向..
如果简单的还好 看看调用栈 熟悉一下基本的js dom等就大概能破了 但是现在很多站不是这么简单的呀.
就好像 一个RSA解密 你找到了入口的位置 加密函数的位置 但是你都不知道正常的RSA加密需要什么参数 传几个值 分别都是什么东西 那。。何谈逆向
我觉着 能看懂但是自己动手做不出来的很大一个原因就是 对js 对一些加密算法不熟悉。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
开这个文章的目的就是 一个逆向Js小白探索Js 查漏补缺.
本人基础: Java开发 Vue开发 略懂Flutter .
电脑: MacBook Pro ==> 为什么说这个呢 因为网上很多的公开的课用的都是Windows电脑 很多配套的软件比如乐易编程助手等等的在Mac都没有办法打开 所以后面我会找一些Mac平替的软件
如果你也和我一样 有类似的基础 欢迎收看我日后文章Js逆向的踩坑过程.
我会尽量以小白的视角 通俗易懂的描述Js逆向过程中有些关键词 方便大家理解.
之前一直听说js有原型链 原型对象 原型等等这些概念 一直没当回事儿 感觉没啥用..但 确实挺有用的 往下看吧..
## 原型
>通过之前的例子我们知道
>
>原型就是一个函数
>
>原型对象就是一个函数名的.prototype属性的返回值
>
>实例对象就是new了一个原型的名字返回的结果
知道这个那就好理解了 拿Document和document做一个举例 看看这俩玩意有啥区别又有啥关联.
浏览器打开F12
输入Document发现 这玩意是一个函数 那通过上面的总结是不是发现这东西有点像原型.
行 那我们既然猜测这东西是原型 那肯定有对应的原型对象吧.
尝试用这东西Document.prototype 看看有没有.prototype 属性 发现是有的 看看它的返回值 发现是一个大对象.
!(https://gitee.com/xiaoyangqun/public-images/raw/master/images/image-20240503120801116.png)
**看看里面的内容:**
这我们是不是能猜测出来 返回的这东西就是prototype挂载的所有内容了.
!(https://gitee.com/xiaoyangqun/public-images/raw/master/images/image-20240503121218751.png)
## 原型对象
这里用小白的语言给大家解释一下:
原型对象就是一个函数名(原型)的.prototype属性的返回值
或者
原型对象就是一个实例对象的.__proto__返回结果.
当然还有其他的Api可以获取到这些内容
比如 这个Api 也可以通过原型 转成原型对象
```javascript
Object.getPrototypeOf("原型")
```
## 实例对象
行 那既然知道了Document对象是一个函数 是一个原型了.
我们尝试和小写的document去做一些关联.
纯猜测啊 大写的既然是原型 小写的估计应该是实例对象了
试试呗..
以吾爱的站做个举例 我们输出一下小写的document对象.
发现只有这么点内容.
!(https://gitee.com/xiaoyangqun/public-images/raw/master/images/image-20240503121459510.png)
因为document对象挂载的东西比较多
原型对象Document.prototype 实际上是实例对象的.__proto__.__proto__属性 相当于往里面拿了两个.
==至于为啥 这里我也不太了解 正在搜资料..==
不过可以确定的是 最起码这几个东西我们关联上了 大概知道了 原型对象 原型 和实例对象之间的区别了.
!(https://gitee.com/xiaoyangqun/public-images/raw/master/images/image-20240503122921592.png)
>正常不应该用这个document对象做举例的 这东西太复杂
>
>如果是正常咱们定义的话 对这几个概念就比较通透了
给大家放一段代码 可以自己运行试试:
```javascript
//原型 是一个函数
function User(){
}
User.prototype.username = "张三";
User.prototype.password = "密码";
User.prototype.login = function (username,password){
console.log(`${username}登录成功`);
}
console.log("原型",User);
//原型对象 从原型到原型对象
console.log("原型对象",User.prototype);
//实例对象 从原型到实例对象
var user = new User();
console.log("实例对象",user);//本身new出来的是一个空的对象 User {}
user.login("李四","李四的密码"); //但是可以使用原型对象的方法和属性
//从原型对象到原型
console.log("从原型对象到原型 利用构造器",User.prototype.constructor);
console.log("从原型对象到原型 利用构造器",User.prototype.constructor ===User);
//从原型对象到实例对象
var user2 = new User.prototype.constructor;
console.log("实例对象",user2);
//从实例对象到原型对象
var user3 = new User();
console.log("原型对象",user3.__proto__);
console.log(Object.getPrototypeOf(user3) === User.prototype);
//从实例对象到原型
var user4 = new User();
console.log("从实例对象到原型",user4.__proto__.constructor);
console.log(Object.getPrototypeOf(user4).constructor);
```
输出:
```txt
原型
原型对象 { username: '张三', password: '密码', login: }
实例对象 User {}
李四登录成功
从原型对象到原型 利用构造器
从原型对象到原型 利用构造器 true
实例对象 User {}
原型对象 { username: '张三', password: '密码', login: }
true
从实例对象到原型
``` 问一下大家 我用Typora写的Markdown类型的文档 图片用的是gitee中转的图床(类似)在typora软件里文档是正常的 为什么到了吾爱去粘贴过来文档 图片就不显示了 难道是有检测还是跨域的问题?大家有了解的吗? 最近也是学js逆向中,楼主基础整理的很到位,一起进步! Scan 发表于 2024-5-3 12:57
最近也是学js逆向中,楼主基础整理的很到位,一起进步!
一起加油! 会唱歌的鬼 发表于 2024-5-3 13:11
问一下大家 我用Typora写的Markdown类型的文档 图片用的是gitee中转的图床(类似)在typora软件里文档是正 ...
dz系统和typora图片格式有区别,最好手动转换一下 会唱歌的鬼 发表于 2024-5-3 13:11
问一下大家 我用Typora写的Markdown类型的文档 图片用的是gitee中转的图床(类似)在typora软件里文档是正 ...
gitee通过Referer进行防盗处理(只需要gitee或者什么都不传递),浏览器会自动添加Referer导致被屏蔽,而typora不会 kittylang 发表于 2024-5-3 13:25
gitee通过Referer进行防盗处理(只需要gitee或者什么都不传递),浏览器会自动添加Referer导致被屏蔽,而ty ...
嗯呢 刚才看了 是这个原因 谢谢:lol 看不到图啊 Courser 发表于 2024-5-3 13:57
看不到图啊
gitee给拦截了 后面我本地上传图片吧{:1_907:} 楼主用户要多发哦,跟着你学
页:
[1]
2