Rytter 发表于 2023-9-5 13:05

Android逆向学习(番外一)smali2java部分文件无法反编译的bug与修复方法

本帖最后由 Rytter 于 2023-9-5 18:27 编辑

# Android逆向学习(番外一)smali2java部分文件无法反编译的bug与修复方法

## 一、前言

昨天我和往常一样准备着android逆向(四)的博客,结果发现smali2java对某些文件无法进行逆向,我不知道windows会不会产生这个bug,但是ubuntu产生了这种情况,作为一个喜欢多了解的人,我就探究了一下这个bug并且找到了原因并且给出了修复的方法,目前我已经联系了原作者,期待smali2java能够尽快的对这个进行更新

下面我会简单介绍一下这个bug产生的原因与修复的方法,如果大家比较赶时间的话可以直接看修复的方法

## 二、bug的介绍

我在对一些带有\$文件名的smali文件进行逆向会出现这种情况的bug



这就很奇怪了,\$文件是因为使用java lambda表达式产生的一个smali代码,虽然这种代码一般非常简单,不需要逆向直接看smali代码就可以,但是作为一名有着大志向的菜狗,我最看不得电脑报错了,所以就打算直接修复这个bug

下面我们就开始分析这个bug是怎么产生的以及如何修复这个东西,通过查看报错我们发现是一行命令没有正确的运行,我们直接在命令行运行一下这个命令,发现报错如下


文件没有找到,然后机智的我发现这个文件名字上下怎么对不上了,会不会是没有转义的事情,加上转义符号我们再试一下




果然是这个原因,既然已经知道bug产生的原因了,简单修复一下就好了

## 三、修复方法

我们首先要找到这个插件的位置,这个vscode的插件都是javascript或者typescript写的,我是写过与发布过javascript脚本的,所以修改脚本对我来说不是难事情,一般来说vscode的配置文件都是在主目录下的.vscode目录里面,我们直接去找就可以了,记得打开隐藏目录



smali2java的脚本目录我们就这样找到了

然后打开文件夹,我们只需要修改两个文件

在里面的out文件夹下有个decompiler文件夹,里面有两个JadxDecompiler.js文件,一个在decompiler里一个在里面的impl文件夹里面,然后我们对这两个文件夹进行如下的修改





就是在指定位置加上下面个代码,这个是利用正则表达式进行替换

```javascript
.replace(/\$/g,"\\\$")
```

这个代码的意思就是运行命令的时候,在文件名上加上转义,这样就能正确运行了

对了,当你修改之后,你的vscode还是没有办法运行,这时候就ctrl+shift+p打开vscode命令面板,然后reload window,就可以重新加载插件,然后你就发现这个程序可以正确运行了




最后还是虎哥镇楼



tfrist 发表于 2023-9-8 00:47

居然还有文件名字错误导致的问题!
现在android逆向需求很流行啊 有时间我也要向楼主学习学习!

Rytter 发表于 2023-9-5 17:20

Hmily 发表于 2023-9-5 17:00
图片盗链无法显示,为啥不直接把图片上传论坛了?

我是最近才来吾爱论坛发贴的,对论坛发帖方法不是很了解,下一篇贴子会开始尝试直接上传论坛

chadyoung 发表于 2023-9-5 13:57

不错,学习了

ydmmocoo 发表于 2023-9-5 14:24

试一下看看!

狗狗你好 发表于 2023-9-5 14:28

很不错,学习了

dw6666 发表于 2023-9-5 15:06

感谢楼主分享谢谢{:1_937:}

Hmily 发表于 2023-9-5 17:00

图片盗链无法显示,为啥不直接把图片上传论坛了?

Hmily 发表于 2023-9-5 17:21

Rytter 发表于 2023-9-5 17:20
我是最近才来吾爱论坛发贴的,对论坛发帖方法不是很了解,下一篇贴子会开始尝试直接上传论坛

嗯,可以这篇就编辑,论坛上传附件粘贴比图床稳定。

costa 发表于 2023-9-6 19:44

感谢分享

安道尔的鱼 发表于 2023-9-7 16:39

学习学习
页: [1] 2
查看完整版本: Android逆向学习(番外一)smali2java部分文件无法反编译的bug与修复方法