首页 > 其他分享 >WebAssembly逆向

WebAssembly逆向

时间:2023-04-02 18:15:18浏览次数:40  
标签:WebAssembly 逆向 wasmer wasm result Wasm pywasm

一、WebAssembly

  • 简介

    • WebAssembly是一种可以使用非JavaScript编程语言编写代码,并且能在浏览器上运行的技术方案。借助Emscripten编译工具,能将C/C++文件转成wasm格式,JavaScript可以直接调用该文件并执行其中的方法。
  • 好处

    • 可以隐藏核心逻辑,增大逆向难度
    • 提高执行效率(基于C/C++编写)

二、解决方案(模拟执行)

  • python模拟执行wasm库

    • 一、pywasm:使用简单
    • 二、wasmer:功能更强大
  • pywasm使用

    • 安装

      pip3 install pywasm
    • 使用

      import pywasm
      
      runtime = pywasm.load('./Wasm.wasm') # 加载wasm文件
      result = runtime.exec('encrypt', [10,200]) # 通过runtime.exec()执行wasm文件中的方法,参数1:方法名,参数2:传入该方法的参数列表
      print(result)

      示例中Wasm.wasm文件下载地址:https://spa14.scrape.center/js/Wasm.wasm

  • wasmer使用

    • 安装

      pip3 install wasmer
      pip3 install wasmer-compiler-cranelift
    • 使用

      from wasmer import engine,Store,Module,Instance
      from wasmer_compiler_cranelift import Compiler
      
      store = Store(engine.JIT(Compiler)) # 声明一个Store对象
      module = Module(store, open('./Wasm.wasm', 'rb').read()) # 将wasm转化为Module对象
      instance = Instance(module) # 将其转化为Instance对象
      result = instance.exports.encrypt(10, 200) # 调用encrypt方法,并传入参数
      print(result)
    • 更多API:

      • 参考:https://wasmerio.github.io/wasmer-python/api/wasmer

 

标签:WebAssembly,逆向,wasmer,wasm,result,Wasm,pywasm
From: https://www.cnblogs.com/eliwang/p/17278490.html

相关文章

  • re/【unity】游戏逆向首试 [BJDCTF2020]BJD hamburger competition
    本题是是一个unity游戏,而且是以c#和.net编写尝试直接用idea进行反汇编,但是没有找到运行逻辑,后来在大佬的wp上发现是利用dnspy对c#的dll文件进行返回编,进而获得结果。反汇编BJDhanburgercompetirion_Data中的Assembly-CSharp.dll即可获得如下代码段:可以看到先利用sha1进行加......
  • 逆向——浮点数的表示,遇到了就去在线查吧,还原起来比较难受
    第二节2.5数据类型与存储 浮点数这玩意自己去在线转换下就行了: http://www.styb.cn/cms/ieee_754.php     详细:         第二节2.6浮点数的存法记住知识点:1、小数点左移,指数部分:指数减1的二进制数  2、小数点右移,指......
  • C语言逆向——如何寻找main入口,一个反汇编成C的实战练习
    第二节2.3找程序的入口原文:https://www.showdoc.com.cn/fengxin1225/7054696489361869控制台应用程序的main函数入口在OD中找到以上其他中的函数,然后跟着3个参数的CALL就是main例:———————————————————- 第二节2.4.1逆向并还原为C代码(网上解答)......
  • C语言逆向汇编——参数局部变量、函数堆栈、调用约定和内嵌汇编码
    第一节1.1C语言1、注意参数和局部变量在堆栈中的存储方式2、参数在调用函数前就已经存入堆栈,从[EBP+8]、[EBP+C]、……开始。3、局部变量是在调用函数后,存入缓冲区里,从[EBP-4]、[EBP-8]、……开始4、函数运算得到的结果,通常存在EAX里。        第一......
  • 项目一众筹网06_01_【权限控制】角色和权限分配、Admin分配Role、Role分配Auth、前端j
    系列文章目录众筹网文章目录系列文章目录01-角色和权限分配-引入02-Admin分配Role-目标和思路03Admin分配Role创建中间表有些表是不需要实体类的自然也就不需要做逆向工程04-Admin分配Role-前往分配页面-handler方法05-Admin分配Role-前往分配页面-Service方法和SQL06-Admin分......
  • webpack逆向
    一、webpack大致处理流程方式一:手动处理先全局定义一个变量(比如aaa),用于接收加载器中的导出函数再定义一个全局变量(比如bbb),用于接收具体模块中的加密对象或方法补模块、环境(通过日志调试,根据报错信息去抠代码,技巧:数组索引操作可以转换为对象)手动调用加载,使得全局定义的变量......
  • 【Android 逆向】apk反编译后重打包
    1.执行apktoolbsmali_dirsmali_dir为反编译出来的数据目录执行后可能会报错I:Buildingresources...W:/root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifes......
  • 【Android逆向】apk 反编译
    1.Kali搭建apktool环境1.访问apktool官网https://ibotpeaches.github.io/Apktool/install/参考红圈里的步骤处理即可2.执行命令反编译apkapktoold./xxxx_v5.4......
  • 【Android逆向】定位native函数在哪个so中方法
    1.在逆向过程中经常需要定位方法在哪个so中,而app加载的so很多,比如那么如何快速定位方法在哪里呢2.比如如下案例,首先看日志03-2811:01:56.4571456614566DKM-NATI......
  • 新建 Blazor 项目 WebAssembly
           ......