外面的世界:V8 != V8(2018.2.5更新odbgscript2.06 V8版)
2018.2.5更新
1、增加了odbgscript2.06的chm格式帮助文件,包括到目前为止的新命令说明和使用。对部分原有命令书写格式排版。
==================================== 爱生活,爱OD =========================================
2018.1.23更新
1、修复了一下输出中文显示的问题。
2、 包括#inc命令载入.js后缀文件中eval替换字符@ @,之前忘记更新了。
3、版本2.06.
======================================= 爱生活,爱OD ======================================
2018.1.4更新(odbgscript2.06):
1、优化和修复V8内存泄漏;
2、此版集成两个js引擎,一个是v8,一个是ms-js。原因是v8版本较ms-js新,支持es6,另外ms-js支持本地文件操作。
v8版本dojs命令:dojs($$),ms-js版本dojs命令:msjs(m$).
3、增加ddd命令,即在od数据区显示指定地址数据。用法:ddd xxx(内存地址)。
4、释放#字符,原eval命令的替换字符 @ # 变成 @ @。
5、 odbgscript版本升级:2.04升级到2.06版本。
======================================= 正 文 开 始 =========================================
看下图就明白了,一个汽车引擎V8,一个JavaScript引擎V8。一个硬件,一个软件。今天讲讲后者,V8是Google的作品,它使用C++开发,完全开源,最著名的是使用在Chrome浏览器中作为JavaScript解析引擎。V8可独立运行,也可嵌入其他编程语言中,最大特点:为快速运行JavaScript而生。nodejs也跟着火了一把,原因之一V8 inside 。

V8在执行之前将JavaScript编译成了机器码,而非位元组码或是直译它,以此提升效能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序与V8引擎的速度媲美二进制编译。
V8可以做什么呢?对于我来说,那就是加强DOJS($$)命令!DOJS 传送门 走你(也包括其他脚本命令)。进去之后,第一版dojs,是我利用的电脑自带的js引擎,应该是MS-JS-ENGINE,有点老啊,谁知道如何升级,请指教。
最新V8源码版本是6.x.xxx,需要vs编译后使用。成功编译源码,对于大多数人来说,还是老费劲了,不过还好,网上总是有乐于分享的人,我搜到的最新编译后的版本是V8-5.6版。支持目前最新JavaScript的ES6标准。感谢 拥剑公子 分享。
要想把V8成功嵌入到自己代码中,有点像你不是高富帅,却要一个beautiful-girl真心跟着你一样。说难也难,说易也易。要有诚心+毅力+运气。相信你也有春天,哦,我是说V8会跟你走。
在失败N次,绝望N-1次,度数增加N之后,终于肾上腺爆发了,这种感觉你懂的。
有以下几点会影响肾上腺分泌:
1、如何在自己的代码中正确引用V8的语法。
虽然网上有很多hello world,但已经很老了,不能正确编译运行。N次失败后,想到了红杏,看看外面的世界。有个好东西,速度有点慢但至少可以找到你心中的她。关键点,相应的v8版本对相应的语法结构(N次失败后的惨痛领悟)。
2、如何管理内存,防止内存泄漏。
有了正确的V8语法,你也不一定成功。我去。看着任务管理器内存的不断增加,蛋疼。N次失败后,开始自己琢磨Isolate定义及使用,即可多线程也可重复利用,于是乎灵光乍现,方向锁定,测试重复利用。脑海中慢慢又有了美好的想象。
3、终于终于她来了,可惜不会中文,如何本地化输入输出?
Unicode->Utf8,Utf8->Unicode。这就是秘诀。 NB的无须解释。至此肾上腺全面爆发中 ...
DOJS($$)命令输出3种数据类型,1、(u)int32. 2、常规字符串(包括字母、数字、符号和中文等). 3、尽可能将除了1和2之外的类型转换为字符串输出。
ODbgScript2.04运行结果如下,另:一亿测试传送门
V8 代码:
上面V8代码不多不少,刚好能实现我想要的结果。失败和成功可能天壤之别,也可能就在你面前。
附件使用说明:
1、附件为OllyDBG2.01的脚本插件ODBGscript2.06,其内嵌了Google v8 JavaScript 和 ms-js 引擎,支持dojs($$)命令和js的es6标准。
2、ODbgScript2.dll放到plugin文件夹下
3、release1和2分别解压后的各文件全部一定要放在与ollydbg.exe同文件夹下面。
4、增加odbgscript2.06帮助文件chm格式
V8语法简介:
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。



