www.91084.com

GVKun编程网logo

学用 awk, 在 linux 下对 android apk 重签名、安装一条龙(linux中awk怎么用)

1

在本文中,您将会了解到关于学用awk,在linux下对androidapk重签名、安装一条龙的新资讯,同时我们还将为您解释linux中awk怎么用的相关在本文中,我们将带你探索学用awk,在linux

在本文中,您将会了解到关于学用 awk, 在 linux 下对 android apk 重签名、安装一条龙的新资讯,同时我们还将为您解释linux中awk怎么用的相关在本文中,我们将带你探索学用 awk, 在 linux 下对 android apk 重签名、安装一条龙的奥秘,分析linux中awk怎么用的特点,并给出一些关于9.6 awk(上) 9.7 awk(下)、Android APK:使用 Android Studio 调试 APK、Android app反编译、打包、重签名、android – apk(.apk)和app bundle(.aab)之间的区别的实用技巧。

本文目录一览:

学用 awk, 在 linux 下对 android apk 重签名、安装一条龙(linux中awk怎么用)

学用 awk, 在 linux 下对 android apk 重签名、安装一条龙(linux中awk怎么用)

新建 文件  apksign.sh

运行时,只需要 ./apksign xx.apk 即可,自动完成签名,并通过 adb 按装

 

linux 下的工具越用越顺手。用的时间越长积累越多。

Windows 下,每一次升级都需要学习一些新东西,同时老知识作废。经常一些绝户的事情。只在一个版本上有效。没有延继性。

 

内容如下:

#!/bin/sh
echo $@ | awk ''
{
#printf("\n"$1"\n");
if (4 > length($1)) {
printf("./apksign.sh xx.apk\n");
exit(0);

len = length($1);
suffix = substr($1, length($1) - 3, 4); 
if (suffix != ".apk") {
system("echo ./apksign.sh xx.apk\n");
exit(0);
}
filename = substr($1, 1, length($1) - 4); 
newfile = filename"-mysign"suffix;
printf("signapk ...\n");
system("java -jar signapk.jar mykey.x509.pem mykey.pk8 "$1" " newfile "\n");


printf("install ...\n");
system("adb install -r "newfile"\n");
}''

分享到: 

9.6 awk(上) 9.7 awk(下)

9.6 awk(上) 9.7 awk(下)

9.6 awk(上)

awk,支持分段匹配,awk并不会更改文件的内容,只会在屏幕上显示运行结果而已
匹配字符串的时候 必须加上""
创建测试数据文件

[root@aminglinux-02 tmp]# cp /etc/passwd ./test.txt
[root@aminglinux-02 tmp]# cat test.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
  • 指定段的分隔符

-F '':'',指定分隔符为 :,以便之后容易区分,命令是对第几段进行操作

指定 分割符为 : 冒号,打印第一段,第一段用 $1 表示

[root@aminglinux-02 tmp]# awk -F '':'' ''{print $1}'' test.txt
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-bus-proxy
systemd-network
dbus
polkitd
tss
postfix
sshd
chrony

打印所有段,$0 表示所有的段

awk -F '':'' ''{print $0}'' test.txt
awk ''{print $0}'' test.txt

-F 选项;如果没有去指定分隔符 ,那么将模式使用空白、空格为分隔符

[root@aminglinux-02 tmp]# cat 1.txt
1 2
aa bb
dd ee
[root@aminglinux-02 tmp]# awk ''{print $1}'' 1.txt
1
aa
dd

打印test.txt文本下的1、3、5段,因为内容太长,所以我用了head只显示10行

[root@aminglinux-02 tmp]# awk -F '':'' ''{print $1,$3,$5}'' test.txt |head
root 0 root
bin 1 bin
daemon 2 daemon
adm 3 adm
lp 4 lp
sync 5 sync
shutdown 6 shutdown
halt 7 halt
mail 8 mail
operator 11 operator
[root@aminglinux-02 tmp]# cat -n test.txt |head
     1    root:x:0:0:root:/root:/bin/bash
     2    bin:x:1:1:bin:/bin:/sbin/nologin
     3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4    adm:x:3:4:adm:/var/adm:/sbin/nologin
     5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6    sync:x:5:0:sync:/sbin:/bin/sync
     7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8    halt:x:7:0:halt:/sbin:/sbin/halt
     9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10    operator:x:11:0:operator:/root:/sbin/nologin
  • 打印信息分隔

对打印出的信息,以 # 进行分隔

awk -F '':'' ''{print $1"#"$2"#"$3}''
[root@aminglinux-02 tmp]# awk -F '':'' ''{print $1"#"$2"#"$3}'' test.txt |head
root#x#0
bin#x#1
daemon#x#2
adm#x#3
lp#x#4
sync#x#5
shutdown#x#6
halt#x#7
mail#x#8
operator#x#11
  • 关键字匹配

把包含 oo 的行,打印出来

awk ''/oo/'' test.txt
[root@aminglinux-02 tmp]# awk ''/oo/'' test.txt
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

匹配第一段,为oo的行,匹配的时候,支持正则,而且不需要脱义特殊符号,还支持多个条件同时匹配

awk -F '':'' ''$1 ~/oo/'' test.txt
[root@aminglinux-02 tmp]# awk -F '':'' ''$1 ~/oo/'' test.txt
root:x:0:0:root:/root:/bin/bash

多个关键词同时匹配,并打印出所在行的某个段
匹配root的,打印第一段、第三段信息;匹配user的打印第一段,第三段,第四段的信息

[root@aminglinux-02 tmp]# awk -F '':'' ''/root/ {print $1,$3} /user/ {print $1,$3,$4}'' test.txt
root 0
operator 11
tss 59 59
user1 1000 1000
user2 1001 1001
user3 1002 1002
user4 1003 1003
user5 1004 1004
  • 逻辑运算方式匹配关键字
awk -F '':'' ''$3==0'' test.txt 等同于 awk -F '':'' ''$3==0 {print $0} '' test.txt

匹配逻辑运算方式是 $3==1000 和 $3=="1000" 是不一样的。加了双引号的数字,匹配运算方式是以 变量 LC_ALL=C 的方式进行运算,所以匹配到的结果差异很

数学运算方式匹配

[root@aminglinux-02 tmp]# awk -F '':'' ''$3>=1000'' test.txt
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
user3:x:1002:1002::/home/user3:/bin/bash
user4:x:1003:1003::/home/user4:/bin/bash
user5:x:1004:1004::/home/user5:/bin/bash

逻辑运算方式匹配

[root@aminglinux-02 tmp]# awk -F '':'' ''$3>="1000"'' test.txt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
user3:x:1002:1002::/home/user3:/bin/bash
user4:x:1003:1003::/home/user4:/bin/bash
user5:x:1004:1004::/home/user5:/bin/bash
  • 不等于的匹配方式

test.txt文件下,第7段不等于 /sbin/nologin 的 打印整行

awk -F '':'' ''$7!="/sbin/nologin"'' test.txt
[root@aminglinux-02 tmp]# awk -F '':'' ''$7!="/sbin/nologin"'' test.txt
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
user3:x:1002:1002::/home/user3:/bin/bash
user4:x:1003:1003::/home/user4:/bin/bash
user5:x:1004:1004::/home/user5:/bin/bash

9.7 awk(下)

承接上一节,逻辑运算方式匹配

两个字段进行比较

awk -F '':'' ''$3<$4'' test.txt
awk -F '':'' ''$3>5 && $3<7'' /etc/passwd
  • 判断类查找匹配
    && 且

数学运算

[root@aminglinux-02 tmp]# awk -F '':'' ''$3>5 && $3<7'' /etc/passwd
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

逻辑运算

[root@aminglinux-02 tmp]# awk -F '':'' ''$3>"5" && $3<"7"'' /etc/passwd
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

|| 或

匹配第三段大于1000的 或者 第七段包含 bash
awk -F '':'' ''

  • 定义变量查找
    OFS变量
    OFS=# 定义 输出的时候以 # 作为分隔符
awk -F '':'' ''{OFS="#"} $3>1000 || $7 ~ /bash/'' {print $1,$3,$7}'' test.txt
[root@aminglinux-02 tmp]# awk -F '':'' ''{OFS="#"} $3>1000 || $7 ~ /bash/ {print $1,$3,$7}'' test.txt
root#0#/bin/bash
user1#1000#/bin/bash
user2#1001#/bin/bash
user3#1002#/bin/bash
user4#1003#/bin/bash
user5#1004#/bin/bash
  • 规范写法

=={OFS="#"} $3>1000 {print $1,$2,$3,$4}这一段中的 $3>1000 规范写法是 if ($3>1000)==

awk -F '':'' ''{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}'' test.txt 等同于 awk -F '':'' ''{OFS="#"} $3>1000 {print $1,$2,$3,$4}'' test.txt

[root@aminglinux-02 tmp]# awk -F '':'' ''{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}'' test.txt
user2#x#1001#1001
user3#x#1002#1002
user4#x#1003#1003
user5#x#1004#1004
[root@aminglinux-02 tmp]# awk -F '':'' ''{OFS="#"} $3>1000 {print $1,$2,$3,$4}'' test.txt
user2#x#1001#1001
user3#x#1002#1002
user4#x#1003#1003
user5#x#1004#1004

NR 变量,可以作为判断条件
显示所有行的行号

awk -F '':'' ''{print NR":"$0}'' test.txt

判断用法
NR数小于等于10行,且 每行的第一段包含root 或 sync 的行

awk -F '':'' ''NR<=10 && $1 ~ /root|sync/'' test.txt
[root@aminglinux-02 tmp]# awk -F '':'' ''NR<=10 && $1 ~ /root|sync/'' test.txt
rootx:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync

NF 变量,可以作为判断条件
显示所有行的段数

awk -F '':'' ''{print NF":"$0}'' test.txt
[root@aminglinux-02 tmp]# awk -F '':'' ''{print NF":"$0}'' test.txt
6:rootx:0:0:root:/root:/bin/bash
7:bin:x:1:1:bin:/bin:/sbin/nologin
7:daemon:x:2:2:daemon:/sbin:/sbin/nologin
7:adm:x:3:4:adm:/var/adm:/sbin/nologin
7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
7:halt:x:7:0:halt:/sbin:/sbin/halt
7:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
7:operator:x:11:0:operator:/root:/sbin/nologin
7:games:x:12:100:games:/usr/games:/sbin/nologin
7:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
7:nobody:x:99:99:Nobody:/:/sbin/nologin
7:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
7:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
7:dbus:x:81:81:System message bus:/:/sbin/nologin
7:polkitd:x:998:996:User for polkitd:/:/sbin/nologin
7:tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
7:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
7:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
7:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
7:user1:x:1000:1000::/home/user1:/bin/bash
7:user2:x:1001:1001::/home/user2:/bin/bash
7:user3:x:1002:1002::/home/user3:/bin/bash
7:user4:x:1003:1003::/home/user4:/bin/bash
7:user5:x:1004:1004::/home/user5:/bin/bash
  • 判断用法
    NF等于6段,且 每行的第一段包含root 或 sync 的行
awk -F '':'' ''NF==6 && $1 ~ /root|sync/'' test.txt
[root@aminglinux-02 tmp]# awk -F '':'' ''NF==6 && $1 ~ /root|sync/'' test.txt
rootx:0:0:root:/root:/bin/bash
  • 赋值
    显示/etc/passwd 的前三行,把运行结果丢给awk,awk 对之前的结果 实行 对前三的第一段赋值为 root
head -n 3 /etc/passwd |awk -F '':'' ''$1="root"''
[root@aminglinux-02 tmp]# head -n 3 /etc/passwd |awk -F '':'' ''$1="root"''
root x 0 0 root /root /bin/bash
root x 1 1 bin /bin /sbin/nologin
root x 2 2 daemon /sbin /sbin/nologin
  • 求值

tot为一个值,运算的时候是循环运算的,但是中间加了一个 END 表示运算结束,然后打印出tot的值;tot值初始为0,一次运算加上第三段的值以后开始变化,一直到END结束
下面这条命令,就是求test.txt 文件里面 第三段的和值

awk -F '':'' ''{(tot=tot+$3)}; END {print tot}'' test.txt

Android APK:使用 Android Studio 调试 APK

Android APK:使用 Android Studio 调试 APK

如何解决Android APK:使用 Android Studio 调试 APK?

我正在使用 Android Studio 调试 APK

我在 MainActivity - 我已经反编译了 APK 以提供 .java 文件

public final class MainActivity extends AppCompatActivity {
public final native boolean checkPassword(String str);

/* access modifiers changed from: protected */
@Override // androidx.activity.ComponentActivity,androidx.core.app.ComponentActivity,androidx.appcompat.app.AppCompatActivity,androidx.fragment.app.FragmentActivity
public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.activity_main);
    System.loadLibrary("ferriswheel");
}

public final void checkHandler(View view) {
    Intrinsics.checkParameterIsNotNull(view,"view");
    View findViewById = findViewById(R.id.password_input);
    Intrinsics.checkExpressionValueIsNotNull(findViewById,"findViewById<EditText>(R.id.password_input)");
    if (checkPassword(((EditText) findViewById).getText().toString())) {
        startActivity(new Intent(this,ferriswheel.class));
    } else {
        Toast.makeText(this,"Incorrect!",1).show();
    }
}

}

我不确定这里发生了什么 - checkPassword 部分 - 它在检查什么?如果我设置了一个断点,它在我运行应用程序时似乎不会被击中

感谢任何指导

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Android app反编译、打包、重签名

Android app反编译、打包、重签名

1、mac安装apktool(官网:https://apktool.org/docs/install)
2、反编译命令:apktool d test.apk
3、然后可以修改你需要修改的文件,比如:smali、resource、AndroidManifest.xml
4、重新打包命令:apktool b test -o test_new.apk
5、生成keystore
keytool、jarsigner 工具是JAVA JDK自带的,配置好JAVA环境即可!
输入命令:keytool -genkey -alias new.keystore -keyalg RSA -validity 20000 -keystore new.keystore,然后在输入两次最低六位数的密钥口令,下面的信息直接Enter,最后y即可!
6、签名APK
未签名APK不能在安卓手机上安装,想要安装则先要签名。
输入命令:jarsigner -verbose -keystore new.keystore -signedjar test_sign.apk test.apk new.keystore 然后再输入密钥库的密码,即你之前设置的密钥口令,即可签名!

android – apk(.apk)和app bundle(.aab)之间的区别

android – apk(.apk)和app bundle(.aab)之间的区别

最近谷歌推出了一个新的功能应用程序包,这是一个非常类似于APK的概念,除了它的灵活性和架构差异.

我已经阅读了很多博客/文章,以了解应用程序包如何在设备中与APK文件进行比较.

从Google Play商店开始,应用套件的实际内部工作流程及其在Android设备上的工作原理是什么?

解决方法:

App Bundles是一种发布格式,而APK(Android应用程序PacKage)是最终将安装在设备上的打包格式.

App Bundles使用bundletool创建一组APK. (.apks)
这可以被提取,并且可以将基础和配置拆分以及潜在的动态特征模块部署到设备.

依赖项看起来像这样:

App Bundle的内容看起来像这样:

有关App Bundles的更多信息,请参见available here.

关于学用 awk, 在 linux 下对 android apk 重签名、安装一条龙linux中awk怎么用的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于9.6 awk(上) 9.7 awk(下)、Android APK:使用 Android Studio 调试 APK、Android app反编译、打包、重签名、android – apk(.apk)和app bundle(.aab)之间的区别的相关知识,请在本站寻找。

本文标签: