本帖最后由 zixijian 于 2021-3-11 11:20 编辑
Juicessh是我比较经常使用的软件,最近又开始更新了。
注意:此版本有问题,新装的不能保存连接,覆盖使用中的旧版本则没问题,我已经反馈给作者。
论坛已经有两篇逆向帖子,还不能完全进行解锁,特来集思广益。
我先发一下已经解锁了两个重要功能:
大部分专业版功能和快捷菜单代码片段使用。
先贴一下根据论坛原帖子解锁大部分专业版功能。
使用apk编辑器>高级编辑>反编译出smali,搜索ProBlockablePreference,
找到smali/com/sonelli/fj0.smali 下列内容,
将const/4 v0, 0x1改为const/4 v0, 0x0即可
[Java] 纯文本查看 复制代码 .method public z(Landroid/preference/Preference;)V
.registers 5
.annotation build Landroid/annotation/SuppressLint;
value = {
"NewApi"
}
.end annotation
if-nez p1, :cond_3
return-void
.line 1
:cond_3
instance-of v0, p1, Lcom/sonelli/util/ProBlockablePreference;
if-eqz v0, :cond_e
.line 2
check-cast p1, Lcom/sonelli/util/ProBlockablePreference;
const/4 v0, 0x1
invoke-interface {p1, v0}, Lcom/sonelli/util/ProBlockablePreference;->f(Z)V
return-void
:cond_e
const/4 v0, 0x0
此时大部分功能已经解锁,但是进入连接,最方便的代码片段仍然不能使用。
一步步关联搜索:
仅限pro用户>pro_users_only>0x7f11035e>smali/com/sonelli/juicessh/activities/TerminalEmulatorActivity.smali
搜索到下列内容
[Java] 纯文本查看 复制代码 invoke-virtual {v1}, Lcom/sonelli/lj0;->y()Z
move-result v1
if-eqz v1, :cond_e3
.line 17
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, " ("
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const v2, 0x7f11035e
invoke-virtual {p0, v2}, Landroid/app/Activity;->getString(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v2, ")"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
.line 18
invoke-interface {p1, p3}, Landroid/view/ContextMenu;->getItem(I)Landroid/view/MenuItem
将if-eqz v1, :cond_e3改为if-nez v1, :cond_e3即可。
目前剩余:管理连接中的分享、桌面快捷方式,桌面小部件等仍然不能使用。
有会的知会一声,共同学习一下。
补充端口转发:
搜索 RelativeLayout;->setVisibility
找到:smali/com/sonelli/eh0.smali
[Java] 纯文本查看 复制代码 invoke-virtual {v3, p1}, Landroid/widget/RelativeLayout;->setVisibility(I)V
.line 54
invoke-static {}, Lcom/sonelli/lj0;->a()Lcom/sonelli/lj0;
move-result-object p1
invoke-virtual {p1}, Lcom/sonelli/lj0;->u()Z
move-result p1
if-eqz p1, :cond_17b
.line 55
iget-object p1, p0, Lcom/sonelli/eh0;->a:Landroidx/fragment/app/FragmentActivity;
new-instance p2, Lcom/sonelli/eh0$d;
invoke-direct {p2, p0, v5, v3}, Lcom/sonelli/eh0$d;-><init>(Lcom/sonelli/eh0;Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;)V
v3 v5调换一下位置即可 |