欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

外面的世界:V8 != V8(2018.2.5更新odbgscript2.06 V8版)

外面的世界: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语法简介:

V8对外的API接口是C++的接口。V8的API定义了几个基本概念:

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功