折旧记录某旅纵横app分析研究


前言

  首先申明,这是三年前的事情,当时为了学习研究,未做任何破坏行为,仅在此记录下。

  现在很多公司对app安全都非常重视,研究难度越来越大,早前app大多裸奔,随手就能看到java代码,即使通讯加密也都是java层的,一顿分析就能学习到想要的数据。而今各种加壳,反调试,native code等,还有些我不知道的,要学习到数据都要一关一关过。当时用到的一些工具和分析方法,也都是大家熟悉的IDA、Frida、Cydia、Xposed等。

  这个app在2019年做过一次大的升级,也就是有两个大版本,暂就叫Ver2019,V2020。

一、Ver2019这个版本

先说Ver2019这个版本,我们拿抓包工具看下,请求是加密的,响应是明文的。

那我们就要看下内部实现是如何加密的。

1、首先7-zip解压apk,解压apk以后就能看到classes.dex。

 

我们来看下启动application发现apk没有做加壳处理,那就简单多了。

接着进行静态分析

2、 先获取java源代码,使用google开源工具enjarify将dex还原成jar。

3、 拿jd-gui查看源代码

一番分析后找到http请求前body加密位置

到此,基本可以确定加密调用native code。没有它法只能分析so。

4、 拿IDA分析这个so看看。

可以看出方法名没有被混淆,跟java代码调用一样,我们进去看看。

内部调用名称也没混淆了,一目了然,先做md5,再做base64编码。再进去看发现md5跟base64都是在标准的基础上自己做了修改。接下来就比较清楚了,把代码拓下来就行了。

解密结果:

小结

  对于仅做native code加密处理的app,被破解的几率太大,首先java代码被暴露,内部处理逻辑也就暴露了,只需逆向分析so即可破解。可能他们也发现了这点,于是做了版本升级。源代码

二、Ver2020版本

  接着来说这个版本,这个版本应该是他们意识到要加强安全检查,所以对apk进行了增强。

  我们来一步步分析,我们先抓包看看请求数据和响应数据是什么样的,发现请求是加密的,响应主体未加密但内部具体数据经过编码了。

请求:

响应:

同样先7-zip解压看看dex

可以发现dex文件很小,这种基本可以说是加壳了,继续看可以确定是360加固的。

用jd-gui也查看不了这些dex,我们得先去壳。

1、 使用Xposed,配合FDEX2(自己实现插件将动态加载的dex保存下来)就可拿到全部dex文件。

2、先获取java源代码,使用google开源工具enjarify将dex还原成jar。

3、 拿jd-gui查看源代码,一番探索后,内部加密依然调用native code,定位到这个so

4、 还是祭出神器IDA,静态分析

可以看出方法名称混淆过了,我们试着F5看能否反编译出C代码。

能反编译出来,试了下调试不行,so里有反调试ptrace检查。

4、IDA继续分析反调试,确定位置,使用010Editor,NOP掉跳过检查,保存得到一个无反调试的so。

5、写个apk,调用so进行调试分析,发现native code是动态加载,每次都要先P再进行汇编调试,关键函数sub_C182。

具体调试分析过程

第一轮sub_DE514182

R0=FA6623B1 (始终固定值)

R1=FA6623B2

R3=0X6C 0X51 0XF0 0XDE

R4=完整包名

R5=app 包名

R1-R0>0,BLE跳转false

逻辑:

设置R0=46C6706E,BGT跳转false

设置R0=20D2E66E,BGT跳转false

设置R0=0BAAF17E,BGT跳转false

设置R0=021DA53C,BGT跳转false

设置R0=06917948,BGT跳转false

跳转sub_DE5156E4

设置R0=FCD1BC6C,BLE跳转true

设置R0=FA989437,BLE跳转true

设置R0=FA6623B2,BNE跳转false;注意这里将R0设置=R1

设置R1=FFE34E50(LDR             R1, =0x6C8),地址内容指向 a(可能是R5 的app)

将R1设置成R1指向的内容0x61(即a)

设置R6

比较R1-0x68=-7,BNE跳转true

第二轮sub_DE514182

R1=A0265BB6

逻辑:

BLE跳转true

设置R0=B9FA56DE,BGT跳转false

设置R0=9CED5717,BGT跳转true

设置R0=A9C59D34,BLE跳转true

设置R0=A50B85A0,BLE跳转true

设置R0=A017CF62,BGT跳转true

设置R0=A22E8FD2,BGT跳转false

R6=ECB0C567; 0x6E;字符n

总结得出,先将包名com.umetrip.android.msky.app的.替换成/,提供给__vfprintf %s BuildConfig 格式化,

地址FFAA1AE0指向com.umetrip.android.msky.app.BuildConfig

得到com/umetrip/android/msky/app/BuildConfig

接着进行签名验证,接着看到一个字符串,可能重要:JWV2XBY8JWiQRfTy0MFRk

sub_DE51C70C(对应函数sub_1470C)加载BuildConfig特殊字符:   ;GUWRX4k

感觉是得到这个dXJHMGk4

接着又看到一个相似字符串,可能转换得来的:JWV2XBY8JwiQRfTy0MFRkY0

该22位字符串是固定值初始化出来的

[stack]:FFAA1AB8 DCB 0x4A ; J
[stack]:FFAA1AB9 DCB 0x77 ; w
[stack]:FFAA1ABA DCB 0x56 ; V
[stack]:FFAA1ABB DCB 0x32 ; 2
[stack]:FFAA1ABC DCB 0x58 ; X
[stack]:FFAA1ABD DCB 0x42 ; B
[stack]:FFAA1ABE DCB 0x59 ; Y
[stack]:FFAA1ABF DCB 0x38 ; 8
[stack]:FFAA1AC0 DCB 0x4A ; J
[stack]:FFAA1AC1 DCB 0x77 ; w
[stack]:FFAA1AC2 DCB 0x69 ; i
[stack]:FFAA1AC3 DCB 0x51 ; Q
[stack]:FFAA1AC4 DCB 0x52 ; R
[stack]:FFAA1AC5 DCB 0x66 ; f
[stack]:FFAA1AC6 DCB 0x54 ; T
[stack]:FFAA1AC7 DCB 0x79 ; y
[stack]:FFAA1AC8 DCB 0x30 ; 0
[stack]:FFAA1AC9 DCB 0x4D ; M
[stack]:FFAA1ACA DCB 0x46 ; F
[stack]:FFAA1ACB DCB 0x52 ; R
[stack]:FFAA1ACC DCB 0x6B ; k
[stack]:FFAA1ACD DCB 0x59 ; Y
[stack]:FFAA1ACE DCB 0x30 ; 0

还有个相似字符串:JdV2XBY8JwiQRfTy0MFRkY0

R7: gRGQ@

接着遇到sub_DE51B748,发现特殊定义字符U^S4H!%u的使用,接着进入函数sub_DE50F010,大概逻辑好像是循环这个字符串U^S4H!%u,发现一个特殊字符:R0=Um5CY0RW,接着出现新代码,发现特殊字符串:JdXJHMGk4UiQRfTy0MFRkY0,可能最后字符串是J dXJHMGk4 Um5CY0 RWMFRkY0。

但是到m的时候,进入另外的逻辑,接着发现特殊so字符串: wY'siU,接着进入函数sub_DE510FE4,发现逻辑在生成一个字符串:aEpmTA,新发现,wY'siU是个地址的表示,指向aEpmTA,接着进入函数sub_DE516546->sub_DE518898->sub_DE516EE2,过程中发现有R1指向aEpmTA,有R2指向JdXJHMGk4Um5CY0RWMFRkY0。

加载新代码sub_DE515404,不知觉进入base64字符函数sub_11B80,之前的特殊字符中有出现dXJH,进入函数sub_DE519B80,主要逻辑是找到使用签名函数的调用,需要R1=0xC7A245B4,感觉是个switch,循环了一遍发现是在用dXJH做循环,内部从1-1D循环,在H循环到大概4-5的时候,加载了新代码。

接着发现在生成特殊字符串:urG,发现逻辑好像出现之前字符串R0指向JdXJHMGk4Um5CY0RWaEpmTA,好像在循环这个字符串M->G,发现在生成一个特殊字符串:MGk4urG。

接着再次进入1-B, 1-8,1-0X24的循环,此时R1=C8646999,不符合C7A245B4,当到最外层到达0X24的时候加载了新代码,进入函数sub_DE51750C,发现特殊字符串:Uf7TV。

接着加载新代码进入函数sub_DE51681C,发现有使用$字符,马上发现在接着生成特殊字符串:$4urG,接着发现又进入1-0X34循环,发现特殊字符串:$80i8

接着发现继续生成特殊字符urG0i8,好像是跟上面的字符连接起来,同时发现在生成特殊字符串,目前看到的是Um5$80i8,好像使用的是上面的字符串中的字符JdXJHMGk4Um5CY0RWMFRkY0

接着到C的是变成了Um5C0i8,接着再次回到了R1=C8646999,前面一小部分进入的是R1=C9开头的,再次进入循环1-D,多次N循环,发现接着生成特殊字符串:urG0i8RnBow,发现有使用JdXJHMGk4Um5CY0RWaEpmTA字符串,在用字符Y 生成一个小字符串Y&9,紧跟着还有一个小字符串:RnB。

几步之后变成了Y09,原来是在生成Y0RWRnB,再次进入循环1-0X34。还在R1=C8646999中 大概5-6次大循环

开始进入R1=C95E12F5

发现特殊字符串:urG0i8RnBcwDV

发现在生成特殊字符串:aEpmcDV、+rG0i8

第一轮调试无疾而终。

第二次调试

发现在函数sub_DE517C3A流程里加载了要加密的明文字符串。

_ZN3art8CheckJNI21ReleaseStringUTFCharsEP7_JNIEnvP8_jstringPKc

_ZN3art3JNI21ReleaseStringUTFCharsEP7_JNIEnvP8_jstringPKc

0xF4C17D20 值 0x14 0x39 0xB7 0xF4

第三次调试关键点

sub_DE514182

发现公钥如下:

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu0+b9I6BjAY1Yh4GygJ+Xs0IUqwNXEy+8uFHD

5R6mR3f+G+oZrj63pnjpGWEjbug6WfnY2R7nKAaKdnt+48DUTWvcWg7HIeKdqHyjjwM1bkDYqgKU

PknrQ1La0vAY4hum7w9ho3s0u2eC+0G3UvAPmhic4H0Hw6XmYphlxTx5NwIDAQAB

-----END PUBLIC KEY-----

加密详细过程

地址0x14 0x39 0x87 0xF4,好像是加密操作的对象地址

_ZN3art8CheckJNI9FindClassEP7_JNIEnvPKc    art::CheckJNI::FindClass(_JNIEnv *,char const*)+1

0xE0 0x1A 0xAA 0xFF

根据R1的信息看出寻找BuildConfig类

_ZN3art8CheckJNI16GetStaticFieldIDEP7_JNIEnvP7_jclassPKcS6_

art::CheckJNI:GetStaticFieldID(_JNIEnv *,_jclass *,char const*,char const*)+1

寻找静态字段id

_ZN3art8CheckJNI20GetStaticObjectFieldEP7_JNIEnvP7_jclassP9_jfieldID

art:CheckJNI:GetStaticObjectField(_JNIEnv *,_jclass *,char const*,char const*)+1

获取静态字段值

_ZN3art8CheckJNI14DeleteLocalRefEP7_JNIEnvP8_jobject

art::CheckJNI::DeleteLocalRef(_JNIEnv *,_jobject *)+1

应该是释放字符串资源吧

_ZN3art8CheckJNI16CallObjectMethodEP7_JNIEnvP8_jobjectP10_jmethodIDz

接着是些system@framework@boot.art这样的操作,感觉现在才完成BuildConfig的操作,接下来应该是获取packageInfo这块,为什么会直接获取对象类,可能是在OnLoad的时候加载后保存的指针。

_ZN3art8CheckJNI14GetObjectClassEP7_JNIEnvP8_jobject

art::CheckJNI::GetObjectClass(_JNIEnv *,_jobject *)+1

获取signatures字段Id

_ZN3art8CheckJNI10GetFieldIDEP7_JNIEnvP7_jclassPKcS6_

art::CheckJNI::GetFieldID(_JNIEnv *,_jclass *,char const*,char const*)+1

获取字段

_ZN3art8CheckJNI14GetObjectFieldEP7_JNIEnvP8_jobjectP9_jfieldID

art::CheckJNI::GetObjectField(_JNIEnv *,_jobject *,_jfieldID *)+1

获取对象数组元素

_ZN3art8CheckJNI21GetObjectArrayElementEP7_JNIEnvP13_jobjectArrayi

art::CheckJNI::GetObjectArrayElement(_JNIEnv *,_jobjectArray *,int)+1

大概是获取的索引[0]签名对象

_ZN3art8CheckJNI14GetObjectClassEP7_JNIEnvP8_jobject

art::CheckJNI::GetObjectClass(_JNIEnv *,_jobject *)+1

获取hashCode方法Id

_ZN3art8CheckJNI11GetMethodIDEP7_JNIEnvP7_jclassPKcS6_

art::CheckJNI::GetMethodID(_JNIEnv *,_jclass *,char const*,char const*)+1

调用获取hashCode的方法

_ZN3art8CheckJNI13CallIntMethodEP7_JNIEnvP8_jobjectP10_jmethodIDz DCB

art::CheckJNI::CallIntMethod(_JNIEnv *,_jobject *,_jmethodID *,...)+1

感觉逻辑不对,发现个新字符串 78700%9:

重点寻找 0x43 0x120 0x70

FFAA1040  FFAA1AA4 都指向dXJHMGk4

 ;GUWRX4k   U^S4H!%u   wY'siU

Um5CY0RW

urG0i8RnBPher

发现调用明文Hex,通过对明文跟踪,可以一步步找到加密逻辑。

7B 22 6C 61 73 74 52 65 71 54 69 6D 65 22 3A 22 33 36 35 22 2C 22 6C 61 73 74 54 72 61 6E 73 61 63 74 69 6F 6E 49 44 22 3A 22 31 39 64 37 36 31 31 30 30 30 32 31 31 35 38 33 35 38 39 32 37 36 32 34 31 22 2C 22 6C 61 74 69 74 75 64 65 22 3A 22 22 2C 22 6C 6F 6E 67 69 74 75 64 65 22 3A 22 22 2C 22 6E 65 74 54 79 70 65 22 3A 22 31 22 2C 22 70 61 67 65 49 64 22 3A 22 31 30 36 33 30 33 22 2C 22 72 63 68 61 6E 6E 65 6C 22 3A 22 31 30 30 30 30 30 30 30 22 2C 22 72 63 75 75 69 64 22 3A 22 31 39 64 37 36 63 33 39 31 62 32 32 30 34 30 30 36 39 39 38 38 38 35 33 37 61 33 65 64 38 34 37 37 22 2C 22 72 63 76 65 72 22 3A 22 41 4E 44 5F 61 30 31 5F 30 35 2E 31 38 2E 30 32 32 36 22 2C 22 72 6B 65 79 22 3A 22 32 30 32 30 2D 30 33 2D 30 37 20 32 31 3A 35 37 3A 30 33 20 38 30 30 30 22 2C 22 72 70 61 72 61 6D 73 22 3A 7B 22 64 65 70 74 41 69 72 70 6F 72 74 43 6F 64 65 22 3A 22 53 48 45 22 2C 22 64 65 70 74 46 6C 69 67 68 74 44 61 74 65 22 3A 22 32 30 32 30 2D 30 33 2D 32 35 22 2C 22 64 65 73 74 41 69 72 70 6F 72 74 43 6F 64 65 22 3A 22 4A 4A 4E 22 2C 22 66 6C 69 67 68 74 4E 6F 22 3A 22 4B 59 38 32 34 32 22 7D 2C 22 72 70 69 64 22 3A 22 31 30 36 30 30 33 31 22 2C 22 72 70 76 65 72 22 3A 22 31 2E 30 22 2C 22 72 73 69 64 22 3A 22 66 65 38 33 66 64 66 32 2D 35 30 32 38 2D 34 38 65 30 2D 39 39 34 62 2D 62 64 32 37 61 35 38 4B 59 76 32 63 4D 58 43 44 49 33 22 2C 22 74 72 61 6E 73 61 63 74 69 6F 6E 49 44 22 3A 22 31 39 64 37 36 31 30 36 30 30 33 31 31 35 38 33 35 38 39 34 32 33 31 32 32 22 7D

原来是通过计算得到的hex值,base64字符串[hex值转成十进制对应到]

明文参数地址0xDE0A9400   0xDE0A9600

SP=@ 地址FFAA1178

密文地址在哪里 DE0A9800?

@ %

每组操作36次,16个字节,操作4次,前3次每次变化4个字节,最后一次全变化

DE0A9800
FB 12 DF D9 DF B3 9D 44 F5 87 2F 53 EE 9C BD 62

DE0A9810
33 12 B4 DD 9C CD 47 A E7 7D 53 C2 25 3E 1D 11

DE0A9820
32 6E 2A F5 D3 6A CA 1F 8B 3B FF E7 B4 DB F1 5D

DE0A9830 
3B D9 68 77 F1 4E 9 69 31 5C 71 4F C6 E0 EA 9C

DE0A9840
9A B9 27 B5 AA A9 D9 2D 62 51 98 72 82 4F 77 87

DE0A9850
1F B4 66 C1 76 62 DB 3 8 81 B6 F1 6D c 26 A2

DE0A9860
32 B8 7C C5 B4 D 6 BE E1 7E A5 BE 94 27 ED D0

DE0A9870
30 AC 74 FE 2A 4 C8 F1 32 43 42 4F 35 87 65

DE0A9880

FFAA17F0
[anon:libc_malloc]:DE0A9800 DCB 0xFB
[anon:libc_malloc]:DE0A9801 DCB 0x12
[anon:libc_malloc]:DE0A9802 DCB 0xDF
[anon:libc_malloc]:DE0A9803 DCB 0xD9
[anon:libc_malloc]:DE0A9804 DCB 0xDF
[anon:libc_malloc]:DE0A9805 DCB 0xB3
[anon:libc_malloc]:DE0A9806 DCB 0x9D
[anon:libc_malloc]:DE0A9807 DCB 0x44 ; D
[anon:libc_malloc]:DE0A9808 DCB 0xF5
[anon:libc_malloc]:DE0A9809 DCB 0x87
[anon:libc_malloc]:DE0A980A DCB 0x2F ; /
[anon:libc_malloc]:DE0A980B DCB 0x53 ; S
[anon:libc_malloc]:DE0A980C DCB 0xEE
[anon:libc_malloc]:DE0A980D DCB 0x9C
[anon:libc_malloc]:DE0A980E DCB 0xBD
[anon:libc_malloc]:DE0A980F DCB 0x62 ; b
[anon:libc_malloc]:DE0A9810 DCB 0x33 ; 3
[anon:libc_malloc]:DE0A9811 DCB 0x12
[anon:libc_malloc]:DE0A9812 DCB 0xB4
[anon:libc_malloc]:DE0A9813 DCB 0xDD
[anon:libc_malloc]:DE0A9814 DCB 0x9C
[anon:libc_malloc]:DE0A9815 DCB 0xCD
[anon:libc_malloc]:DE0A9816 DCB 0x47 ; G
[anon:libc_malloc]:DE0A9817 DCB  0xA
[anon:libc_malloc]:DE0A9818 DCB 0xE7
[anon:libc_malloc]:DE0A9819 DCB 0x7D ; }
[anon:libc_malloc]:DE0A981A DCB 0x53 ; S
[anon:libc_malloc]:DE0A981B DCB 0xC2
[anon:libc_malloc]:DE0A981C DCB 0x25 ; %
[anon:libc_malloc]:DE0A981D DCB 0x3E ; >
[anon:libc_malloc]:DE0A981E DCB 0x1D
[anon:libc_malloc]:DE0A981F DCB 0x11
[anon:libc_malloc]:DE0A9820 DCB 0x32 ; 2
[anon:libc_malloc]:DE0A9821 DCB 0x6E ; n
[anon:libc_malloc]:DE0A9822 DCB 0x2A ; *
[anon:libc_malloc]:DE0A9823 DCB 0xF5
[anon:libc_malloc]:DE0A9824 DCB 0xD3
[anon:libc_malloc]:DE0A9825 DCB 0x6A ; j
[anon:libc_malloc]:DE0A9826 DCB 0xCA
[anon:libc_malloc]:DE0A9827 DCB 0x1F
[anon:libc_malloc]:DE0A9828 DCB 0x8B
[anon:libc_malloc]:DE0A9829 DCB 0x3B ; ;
[anon:libc_malloc]:DE0A982A DCB 0xFF
[anon:libc_malloc]:DE0A982B DCB 0xE7
[anon:libc_malloc]:DE0A982C DCB 0xB4
[anon:libc_malloc]:DE0A982D DCB 0xDB
[anon:libc_malloc]:DE0A982E DCB 0xF1
[anon:libc_malloc]:DE0A982F DCB 0x5D ; ]
[anon:libc_malloc]:DE0A9830 DCB 0x2B ; +
[anon:libc_malloc]:DE0A9831 DCB 0x3B ; ;
[anon:libc_malloc]:DE0A9832 DCB 0xA4
[anon:libc_malloc]:DE0A9833 DCB 0x2C ; ,
[anon:libc_malloc]:DE0A9834 DCB 0x78 ; x
[anon:libc_malloc]:DE0A9835 DCB  0xA
[anon:libc_malloc]:DE0A9836 DCB 0x1D
[anon:libc_malloc]:DE0A9837 DCB 0x52 ; R
[anon:libc_malloc]:DE0A9838 DCB 0x46 ; F
[anon:libc_malloc]:DE0A9839 DCB 0xFA
[anon:libc_malloc]:DE0A983A DCB 0xBA
[anon:libc_malloc]:DE0A983B DCB 0x67 ; g
[anon:libc_malloc]:DE0A983C DCB 0xB3
[anon:libc_malloc]:DE0A983D DCB 0x35 ; 5
[anon:libc_malloc]:DE0A983E DCB 0x11
[anon:libc_malloc]:DE0A983F DCB 0xF5
[anon:libc_malloc]:DE0A9840 DCB 0x9A
[anon:libc_malloc]:DE0A9841 DCB 0xB9
[anon:libc_malloc]:DE0A9842 DCB 0x27 ; '
[anon:libc_malloc]:DE0A9843 DCB 0xB5
[anon:libc_malloc]:DE0A9844 DCB 0xAA
[anon:libc_malloc]:DE0A9845 DCB 0xA9
[anon:libc_malloc]:DE0A9846 DCB 0xD9
[anon:libc_malloc]:DE0A9847 DCB 0x2D ; -
[anon:libc_malloc]:DE0A9848 DCB 0x62 ; b
[anon:libc_malloc]:DE0A9849 DCB 0x51 ; Q
[anon:libc_malloc]:DE0A984A DCB 0x98
[anon:libc_malloc]:DE0A984B DCB 0x72 ; r
[anon:libc_malloc]:DE0A984C DCB 0x82
[anon:libc_malloc]:DE0A984D DCB 0x4F ; O
[anon:libc_malloc]:DE0A984E DCB 0x77 ; w
[anon:libc_malloc]:DE0A984F DCB 0x87
[anon:libc_malloc]:DE0A9850 DCB 0x1F
[anon:libc_malloc]:DE0A9851 DCB 0xB4
[anon:libc_malloc]:DE0A9852 DCB 0x66 ; f
[anon:libc_malloc]:DE0A9853 DCB 0xC1
[anon:libc_malloc]:DE0A9854 DCB 0x76 ; v
[anon:libc_malloc]:DE0A9855 DCB 0x62 ; b
[anon:libc_malloc]:DE0A9856 DCB 0xDB
[anon:libc_malloc]:DE0A9857 DCB    3
[anon:libc_malloc]:DE0A9858 DCB    8
[anon:libc_malloc]:DE0A9859 DCB 0x81
[anon:libc_malloc]:DE0A985A DCB 0xB6
[anon:libc_malloc]:DE0A985B DCB 0xF1
[anon:libc_malloc]:DE0A985C DCB 0x6D ; m
[anon:libc_malloc]:DE0A985D DCB  0xC
[anon:libc_malloc]:DE0A985E DCB 0x26 ; &
[anon:libc_malloc]:DE0A985F DCB 0xA2
[anon:libc_malloc]:DE0A9860 DCB 0x32 ; 2
[anon:libc_malloc]:DE0A9861 DCB 0xB8
[anon:libc_malloc]:DE0A9862 DCB 0x7C ; |
[anon:libc_malloc]:DE0A9863 DCB 0xC5
[anon:libc_malloc]:DE0A9864 DCB 0xB4
[anon:libc_malloc]:DE0A9865 DCB  0xD
[anon:libc_malloc]:DE0A9866 DCB    6
[anon:libc_malloc]:DE0A9867 DCB 0xBE
[anon:libc_malloc]:DE0A9868 DCB 0xE1
[anon:libc_malloc]:DE0A9869 DCB 0x7E ; ~
[anon:libc_malloc]:DE0A986A DCB 0xA5
[anon:libc_malloc]:DE0A986B DCB 0xBE
[anon:libc_malloc]:DE0A986C DCB 0x94
[anon:libc_malloc]:DE0A986D DCB 0x27 ; '
[anon:libc_malloc]:DE0A986E DCB 0xED
[anon:libc_malloc]:DE0A986F DCB 0xD0
[anon:libc_malloc]:DE0A9870 DCB 0x75 ; u
[anon:libc_malloc]:DE0A9871 DCB 0x30 ; 0
[anon:libc_malloc]:DE0A9872 DCB 0xAC
[anon:libc_malloc]:DE0A9873 DCB 0x74 ; t
[anon:libc_malloc]:DE0A9874 DCB 0xFE
[anon:libc_malloc]:DE0A9875 DCB 0x2A ; *
[anon:libc_malloc]:DE0A9876 DCB    4
[anon:libc_malloc]:DE0A9877 DCB 0xC3
[anon:libc_malloc]:DE0A9878 DCB 0xF1
[anon:libc_malloc]:DE0A9879 DCB 0x32 ; 2
[anon:libc_malloc]:DE0A987A DCB 0x43 ; C
[anon:libc_malloc]:DE0A987B DCB 0x42 ; B
[anon:libc_malloc]:DE0A987C DCB 0x4F ; O
[anon:libc_malloc]:DE0A987D DCB 0x35 ; 5
[anon:libc_malloc]:DE0A987E DCB 0x87
[anon:libc_malloc]:DE0A987F DCB 0x65 ; e
[anon:libc_malloc]:DE0A9880 DCB    6
[anon:libc_malloc]:DE0A9881 DCB 0x70 ; p
[anon:libc_malloc]:DE0A9882 DCB 0x71 ; q
[anon:libc_malloc]:DE0A9883 DCB 0x39 ; 9
[anon:libc_malloc]:DE0A9884 DCB  0xA
[anon:libc_malloc]:DE0A9885 DCB 0x42 ; B
[anon:libc_malloc]:DE0A9886 DCB 0x59 ; Y
[anon:libc_malloc]:DE0A9887 DCB 0x59 ; Y
[anon:libc_malloc]:DE0A9888 DCB 0x2F ; /
[anon:libc_malloc]:DE0A9889 DCB 0xE7
[anon:libc_malloc]:DE0A988A DCB 0x52 ; R
[anon:libc_malloc]:DE0A988B DCB 0x57 ; W
[anon:libc_malloc]:DE0A988C DCB    3
[anon:libc_malloc]:DE0A988D DCB 0xBD
[anon:libc_malloc]:DE0A988E DCB 0x6D ; m
[anon:libc_malloc]:DE0A988F DCB 0xDB
[anon:libc_malloc]:DE0A9890 DCB 0xCF
[anon:libc_malloc]:DE0A9891 DCB 0xF1
[anon:libc_malloc]:DE0A9892 DCB 0x62 ; b
[anon:libc_malloc]:DE0A9893 DCB 0xD2
[anon:libc_malloc]:DE0A9894 DCB 0x28 ; (
[anon:libc_malloc]:DE0A9895 DCB 0x54 ; T
[anon:libc_malloc]:DE0A9896 DCB 0xF9
[anon:libc_malloc]:DE0A9897 DCB 0x69 ; i
[anon:libc_malloc]:DE0A9898 DCB 0xB5
[anon:libc_malloc]:DE0A9899 DCB 0x2D ; -
[anon:libc_malloc]:DE0A989A DCB 0xCB
[anon:libc_malloc]:DE0A989B DCB 0x2D ; -
[anon:libc_malloc]:DE0A989C DCB 0x16
[anon:libc_malloc]:DE0A989D DCB 0x97
[anon:libc_malloc]:DE0A989E DCB 0xDC
[anon:libc_malloc]:DE0A989F DCB 0x7B ; {
[anon:libc_malloc]:DE0A98A0 DCB 0xA5
[anon:libc_malloc]:DE0A98A1 DCB 0x23 ; #
[anon:libc_malloc]:DE0A98A2 DCB 0x9F
[anon:libc_malloc]:DE0A98A3 DCB 0xC6
[anon:libc_malloc]:DE0A98A4 DCB 0x6E ; n
[anon:libc_malloc]:DE0A98A5 DCB 0x22 ; "
[anon:libc_malloc]:DE0A98A6 DCB 0x7C ; |
[anon:libc_malloc]:DE0A98A7 DCB 0x86
[anon:libc_malloc]:DE0A98A8 DCB 0x94
[anon:libc_malloc]:DE0A98A9 DCB 0x39 ; 9
[anon:libc_malloc]:DE0A98AA DCB 0xCA
[anon:libc_malloc]:DE0A98AB DCB 0x21 ; !
[anon:libc_malloc]:DE0A98AC DCB 0x36 ; 6
[anon:libc_malloc]:DE0A98AD DCB 0x7A ; z
[anon:libc_malloc]:DE0A98AE DCB 0x41 ; A
[anon:libc_malloc]:DE0A98AF DCB 0x4A ; J
[anon:libc_malloc]:DE0A98B0 DCB 0x56 ; V
[anon:libc_malloc]:DE0A98B1 DCB 0x39 ; 9
[anon:libc_malloc]:DE0A98B2 DCB 0x37 ; 7
[anon:libc_malloc]:DE0A98B3 DCB 0x1F
[anon:libc_malloc]:DE0A98B4 DCB 0xBD
[anon:libc_malloc]:DE0A98B5 DCB 0x11
[anon:libc_malloc]:DE0A98B6 DCB 0xA3
[anon:libc_malloc]:DE0A98B7 DCB 0x83
[anon:libc_malloc]:DE0A98B8 DCB 0x4F ; O
[anon:libc_malloc]:DE0A98B9 DCB 0x57 ; W
[anon:libc_malloc]:DE0A98BA DCB 0xCE
[anon:libc_malloc]:DE0A98BB DCB 0x61 ; a
[anon:libc_malloc]:DE0A98BC DCB 0xA5
[anon:libc_malloc]:DE0A98BD DCB 0x26 ; &
[anon:libc_malloc]:DE0A98BE DCB 0xC5
[anon:libc_malloc]:DE0A98BF DCB 0xE6
[anon:libc_malloc]:DE0A98C0 DCB 0x91
[anon:libc_malloc]:DE0A98C1 DCB 0xEB
[anon:libc_malloc]:DE0A98C2 DCB 0x9C
[anon:libc_malloc]:DE0A98C3 DCB 0x72 ; r
[anon:libc_malloc]:DE0A98C4 DCB 0x6E ; n
[anon:libc_malloc]:DE0A98C5 DCB 0x24 ; $
[anon:libc_malloc]:DE0A98C6 DCB 0x11
[anon:libc_malloc]:DE0A98C7 DCB 0x99
[anon:libc_malloc]:DE0A98C8 DCB 0xE5
[anon:libc_malloc]:DE0A98C9 DCB 0xC8
[anon:libc_malloc]:DE0A98CA DCB 0x7F ; 
[anon:libc_malloc]:DE0A98CB DCB  0xD
[anon:libc_malloc]:DE0A98CC DCB 0xFD
[anon:libc_malloc]:DE0A98CD DCB 0x82
[anon:libc_malloc]:DE0A98CE DCB    9
[anon:libc_malloc]:DE0A98CF DCB 0xA6
[anon:libc_malloc]:DE0A98D0 DCB 0xE8
[anon:libc_malloc]:DE0A98D1 DCB 0x22 ; "
[anon:libc_malloc]:DE0A98D2 DCB 0x43 ; C
[anon:libc_malloc]:DE0A98D3 DCB 0xDA
[anon:libc_malloc]:DE0A98D4 DCB 0xB3
[anon:libc_malloc]:DE0A98D5 DCB 0xF7
[anon:libc_malloc]:DE0A98D6 DCB 0x27 ; '
[anon:libc_malloc]:DE0A98D7 DCB 0xA6
[anon:libc_malloc]:DE0A98D8 DCB 0x8B
[anon:libc_malloc]:DE0A98D9 DCB 0x21 ; !
[anon:libc_malloc]:DE0A98DA DCB 0xFF
[anon:libc_malloc]:DE0A98DB DCB 0x74 ; t
[anon:libc_malloc]:DE0A98DC DCB 0x39 ; 9
[anon:libc_malloc]:DE0A98DD DCB 0xB3
[anon:libc_malloc]:DE0A98DE DCB 0x65 ; e
[anon:libc_malloc]:DE0A98DF DCB 0x96
[anon:libc_malloc]:DE0A98E0 DCB 0x86
[anon:libc_malloc]:DE0A98E1 DCB    8
[anon:libc_malloc]:DE0A98E2 DCB 0xF6
[anon:libc_malloc]:DE0A98E3 DCB 0x3C ; <
[anon:libc_malloc]:DE0A98E4 DCB 0xAF
[anon:libc_malloc]:DE0A98E5 DCB 0x17
[anon:libc_malloc]:DE0A98E6 DCB 0x63 ; c
[anon:libc_malloc]:DE0A98E7 DCB 0x43 ; C
[anon:libc_malloc]:DE0A98E8 DCB 0xFD
[anon:libc_malloc]:DE0A98E9 DCB 0x42 ; B
[anon:libc_malloc]:DE0A98EA DCB 0xC0
[anon:libc_malloc]:DE0A98EB DCB 0xD9
[anon:libc_malloc]:DE0A98EC DCB 0x99
[anon:libc_malloc]:DE0A98ED DCB    4
[anon:libc_malloc]:DE0A98EE DCB 0x69 ; i
[anon:libc_malloc]:DE0A98EF DCB 0x40 ; @
[anon:libc_malloc]:DE0A98F0 DCB 0xAF
[anon:libc_malloc]:DE0A98F1 DCB 0x25 ; %
[anon:libc_malloc]:DE0A98F2 DCB 0x82
[anon:libc_malloc]:DE0A98F3 DCB 0xCC
[anon:libc_malloc]:DE0A98F4 DCB 0x35 ; 5
[anon:libc_malloc]:DE0A98F5 DCB 0x56 ; V
[anon:libc_malloc]:DE0A98F6 DCB 0xD7
[anon:libc_malloc]:DE0A98F7 DCB 0x7D ; }
[anon:libc_malloc]:DE0A98F8 DCB 0xE7
[anon:libc_malloc]:DE0A98F9 DCB 0xC2
[anon:libc_malloc]:DE0A98FA DCB 0x3E ; >
[anon:libc_malloc]:DE0A98FB DCB 0x8F
[anon:libc_malloc]:DE0A98FC DCB  0xA
[anon:libc_malloc]:DE0A98FD DCB 0x87
[anon:libc_malloc]:DE0A98FE DCB 0x94
[anon:libc_malloc]:DE0A98FF DCB 0x3A ; :
[anon:libc_malloc]:DE0A9900 DCB 0x44 ; D
[anon:libc_malloc]:DE0A9901 DCB  0xA
[anon:libc_malloc]:DE0A9902 DCB 0x58 ; X
[anon:libc_malloc]:DE0A9903 DCB 0xF4
[anon:libc_malloc]:DE0A9904 DCB 0x6E ; n
[anon:libc_malloc]:DE0A9905 DCB 0xC0
[anon:libc_malloc]:DE0A9906 DCB 0xEA
[anon:libc_malloc]:DE0A9907 DCB 0xD8
[anon:libc_malloc]:DE0A9908 DCB 0x9D
[anon:libc_malloc]:DE0A9909 DCB 0x2B ; +
[anon:libc_malloc]:DE0A990A DCB 0x5A ; Z
[anon:libc_malloc]:DE0A990B DCB 0xE5
[anon:libc_malloc]:DE0A990C DCB 0x92
[anon:libc_malloc]:DE0A990D DCB 0xDB
[anon:libc_malloc]:DE0A990E DCB 0x5C ; \
[anon:libc_malloc]:DE0A990F DCB 0x9E
[anon:libc_malloc]:DE0A9910 DCB 0x50 ; P
[anon:libc_malloc]:DE0A9911 DCB 0x86
[anon:libc_malloc]:DE0A9912 DCB 0x89
[anon:libc_malloc]:DE0A9913 DCB 0x87
[anon:libc_malloc]:DE0A9914 DCB 0xB1
[anon:libc_malloc]:DE0A9915 DCB 0x63 ; c
[anon:libc_malloc]:DE0A9916 DCB 0x7E ; ~
[anon:libc_malloc]:DE0A9917 DCB 0x1B
[anon:libc_malloc]:DE0A9918 DCB  0xC
[anon:libc_malloc]:DE0A9919 DCB 0xD3
[anon:libc_malloc]:DE0A991A DCB 0x39 ; 9
[anon:libc_malloc]:DE0A991B DCB 0x1F
[anon:libc_malloc]:DE0A991C DCB 0x15
[anon:libc_malloc]:DE0A991D DCB 0x61 ; a
[anon:libc_malloc]:DE0A991E DCB 0xC8
[anon:libc_malloc]:DE0A991F DCB 0xAD
[anon:libc_malloc]:DE0A9920 DCB  0xD
[anon:libc_malloc]:DE0A9921 DCB 0x6C ; l
[anon:libc_malloc]:DE0A9922 DCB 0xD8
[anon:libc_malloc]:DE0A9923 DCB 0xA5
[anon:libc_malloc]:DE0A9924 DCB 0x57 ; W
[anon:libc_malloc]:DE0A9925 DCB 0xAF
[anon:libc_malloc]:DE0A9926 DCB 0x7D ; }
[anon:libc_malloc]:DE0A9927 DCB 0x19
[anon:libc_malloc]:DE0A9928 DCB 0xC4
[anon:libc_malloc]:DE0A9929 DCB 0x51 ; Q
[anon:libc_malloc]:DE0A992A DCB 0x91
[anon:libc_malloc]:DE0A992B DCB 0xF2
[anon:libc_malloc]:DE0A992C DCB 0xDA
[anon:libc_malloc]:DE0A992D DCB 0x86
[anon:libc_malloc]:DE0A992E DCB 0x57 ; W
[anon:libc_malloc]:DE0A992F DCB 0x35 ; 5
[anon:libc_malloc]:DE0A9930 DCB 0x30 ; 0
[anon:libc_malloc]:DE0A9931 DCB 0x6C ; l
[anon:libc_malloc]:DE0A9932 DCB 0xC3
[anon:libc_malloc]:DE0A9933 DCB 0x1D
[anon:libc_malloc]:DE0A9934 DCB    6
[anon:libc_malloc]:DE0A9935 DCB 0x98
[anon:libc_malloc]:DE0A9936 DCB 0x89
[anon:libc_malloc]:DE0A9937 DCB 0x54 ; T
[anon:libc_malloc]:DE0A9938 DCB 0xE9
[anon:libc_malloc]:DE0A9939 DCB 0x66 ; f
[anon:libc_malloc]:DE0A993A DCB    4
[anon:libc_malloc]:DE0A993B DCB 0xE6
[anon:libc_malloc]:DE0A993C DCB 0x44 ; D
[anon:libc_malloc]:DE0A993D DCB 0x6B ; k
[anon:libc_malloc]:DE0A993E DCB 0x2B ; +
[anon:libc_malloc]:DE0A993F DCB 0x86
[anon:libc_malloc]:DE0A9940 DCB 0x35 ; 5
[anon:libc_malloc]:DE0A9941 DCB 0x31 ; 1
[anon:libc_malloc]:DE0A9942 DCB 0xC8
[anon:libc_malloc]:DE0A9943 DCB 0xB7
[anon:libc_malloc]:DE0A9944 DCB 0xAB
[anon:libc_malloc]:DE0A9945 DCB 0x68 ; h
[anon:libc_malloc]:DE0A9946 DCB 0x2B ; +
[anon:libc_malloc]:DE0A9947 DCB 0x24 ; $
[anon:libc_malloc]:DE0A9948 DCB 0x5A ; Z
[anon:libc_malloc]:DE0A9949 DCB 0xFA
[anon:libc_malloc]:DE0A994A DCB 0x7A ; z
[anon:libc_malloc]:DE0A994B DCB 0xF9
[anon:libc_malloc]:DE0A994C DCB 0x11
[anon:libc_malloc]:DE0A994D DCB 0x18
[anon:libc_malloc]:DE0A994E DCB 0x1B
[anon:libc_malloc]:DE0A994F DCB 0xE8
[anon:libc_malloc]:DE0A9950 DCB 0xA4
[anon:libc_malloc]:DE0A9951 DCB 0x1C
[anon:libc_malloc]:DE0A9952 DCB 0x8E
[anon:libc_malloc]:DE0A9953 DCB 0xDA
[anon:libc_malloc]:DE0A9954 DCB 0x32 ; 2
[anon:libc_malloc]:DE0A9955 DCB 0x17
[anon:libc_malloc]:DE0A9956 DCB 0x54 ; T
[anon:libc_malloc]:DE0A9957 DCB 0xAC
[anon:libc_malloc]:DE0A9958 DCB 0x68 ; h
[anon:libc_malloc]:DE0A9959 DCB 0x98
[anon:libc_malloc]:DE0A995A DCB 0xBC
[anon:libc_malloc]:DE0A995B DCB 0xB0
[anon:libc_malloc]:DE0A995C DCB 0x45 ; E
[anon:libc_malloc]:DE0A995D DCB 0x26 ; &
[anon:libc_malloc]:DE0A995E DCB 0x3B ; ;
[anon:libc_malloc]:DE0A995F DCB 0xF9
[anon:libc_malloc]:DE0A9960 DCB 0x40 ; @
[anon:libc_malloc]:DE0A9961 DCB 0x51 ; Q
[anon:libc_malloc]:DE0A9962 DCB 0x57 ; W
[anon:libc_malloc]:DE0A9963 DCB 0xA7
[anon:libc_malloc]:DE0A9964 DCB 0x9D
[anon:libc_malloc]:DE0A9965 DCB 0x89
[anon:libc_malloc]:DE0A9966 DCB 0x69 ; i
[anon:libc_malloc]:DE0A9967 DCB 0xE4
[anon:libc_malloc]:DE0A9968 DCB 0xD5
[anon:libc_malloc]:DE0A9969 DCB 0x77 ; w
[anon:libc_malloc]:DE0A996A DCB 0x2E ; .
[anon:libc_malloc]:DE0A996B DCB 0xB5
[anon:libc_malloc]:DE0A996C DCB 0x3D ; =
[anon:libc_malloc]:DE0A996D DCB 0x84
[anon:libc_malloc]:DE0A996E DCB 0xB3
[anon:libc_malloc]:DE0A996F DCB 0xB4
[anon:libc_malloc]:DE0A9970 DCB 0x99
[anon:libc_malloc]:DE0A9971 DCB 0x21 ; !
[anon:libc_malloc]:DE0A9972 DCB 0xB2
[anon:libc_malloc]:DE0A9973 DCB 0xB3
[anon:libc_malloc]:DE0A9974 DCB 0xA2
[anon:libc_malloc]:DE0A9975 DCB 0x4B ; K
[anon:libc_malloc]:DE0A9976 DCB 0x50 ; P
[anon:libc_malloc]:DE0A9977 DCB 0x2D ; -
[anon:libc_malloc]:DE0A9978 DCB 0x9F
[anon:libc_malloc]:DE0A9979 DCB 0x78 ; x
[anon:libc_malloc]:DE0A997A DCB 0x8A
[anon:libc_malloc]:DE0A997B DCB 0x2B ; +
[anon:libc_malloc]:DE0A997C DCB 0x5D ; ]
[anon:libc_malloc]:DE0A997D DCB 0x82
[anon:libc_malloc]:DE0A997E DCB 0xBF
[anon:libc_malloc]:DE0A997F DCB 0x6C ; l
[anon:libc_malloc]:DE0A9980 DCB 0x24 ; $
[anon:libc_malloc]:DE0A9981 DCB 0x8F
[anon:libc_malloc]:DE0A9982 DCB 0xF8
[anon:libc_malloc]:DE0A9983 DCB 0x53 ; S
[anon:libc_malloc]:DE0A9984 DCB 0xD5
[anon:libc_malloc]:DE0A9985 DCB 0xCC
[anon:libc_malloc]:DE0A9986 DCB 0x3C ; <
[anon:libc_malloc]:DE0A9987 DCB 0xA0
[anon:libc_malloc]:DE0A9988 DCB 0xEA
[anon:libc_malloc]:DE0A9989 DCB  0xA
[anon:libc_malloc]:DE0A998A DCB 0xA6
[anon:libc_malloc]:DE0A998B DCB 0xE0
[anon:libc_malloc]:DE0A998C DCB 0x60 ; `
[anon:libc_malloc]:DE0A998D DCB 0xAD
[anon:libc_malloc]:DE0A998E DCB 0xEF
[anon:libc_malloc]:DE0A998F DCB 0x1B
[anon:libc_malloc]:DE0A9990 DCB 0x60 ; `
[anon:libc_malloc]:DE0A9991 DCB 0x8F
[anon:libc_malloc]:DE0A9992 DCB 0x51 ; Q
[anon:libc_malloc]:DE0A9993 DCB    6
[anon:libc_malloc]:DE0A9994 DCB 0x82
[anon:libc_malloc]:DE0A9995 DCB 0x42 ; B
[anon:libc_malloc]:DE0A9996 DCB 0x45 ; E
[anon:libc_malloc]:DE0A9997 DCB 0x9E
[anon:libc_malloc]:DE0A9998 DCB 0x4E ; N
[anon:libc_malloc]:DE0A9999 DCB 0x1B
[anon:libc_malloc]:DE0A999A DCB 0x77 ; w
[anon:libc_malloc]:DE0A999B DCB 0xDA
[anon:libc_malloc]:DE0A999C DCB    9
[anon:libc_malloc]:DE0A999D DCB 0xE0
[anon:libc_malloc]:DE0A999E DCB 0x2B ; +
[anon:libc_malloc]:DE0A999F DCB 0x8B
[anon:libc_malloc]:DE0A99A0 DCB 0x87
[anon:libc_malloc]:DE0A99A1 DCB 0x8E
[anon:libc_malloc]:DE0A99A2 DCB 0x97
[anon:libc_malloc]:DE0A99A3 DCB 0xB6
[anon:libc_malloc]:DE0A99A4 DCB 0xEC
[anon:libc_malloc]:DE0A99A5 DCB 0x74 ; t
[anon:libc_malloc]:DE0A99A6 DCB 0x15
[anon:libc_malloc]:DE0A99A7 DCB 0xA1
[anon:libc_malloc]:DE0A99A8 DCB 0x8E
[anon:libc_malloc]:DE0A99A9 DCB 0x10
[anon:libc_malloc]:DE0A99AA DCB 0x49 ; I
[anon:libc_malloc]:DE0A99AB DCB 0x6D ; m
[anon:libc_malloc]:DE0A99AC DCB 0x8B
[anon:libc_malloc]:DE0A99AD DCB 0x16
[anon:libc_malloc]:DE0A99AE DCB  0xE
[anon:libc_malloc]:DE0A99AF DCB 0xE7
[anon:libc_malloc]:DE0A99B0 DCB 0xDF
[anon:libc_malloc]:DE0A99B1 DCB 0xF0
[anon:libc_malloc]:DE0A99B2 DCB 0x4F ; O
[anon:libc_malloc]:DE0A99B3 DCB 0x1D
[anon:libc_malloc]:DE0A99B4 DCB 0x10
[anon:libc_malloc]:DE0A99B5 DCB 0xDB
[anon:libc_malloc]:DE0A99B6 DCB 0x61 ; a
[anon:libc_malloc]:DE0A99B7 DCB 0xB3
[anon:libc_malloc]:DE0A99B8 DCB 0x9A
[anon:libc_malloc]:DE0A99B9 DCB 0xF3
[anon:libc_malloc]:DE0A99BA DCB 0xE0
[anon:libc_malloc]:DE0A99BB DCB 0x41 ; A
[anon:libc_malloc]:DE0A99BC DCB 0xB7
[anon:libc_malloc]:DE0A99BD DCB 0xE2
[anon:libc_malloc]:DE0A99BE DCB 0xBE
[anon:libc_malloc]:DE0A99BF DCB 0x22 ; "
[anon:libc_malloc]:DE0A99C0 DCB 0x4E ; N
[anon:libc_malloc]:DE0A99C1 DCB 0xEB
[anon:libc_malloc]:DE0A99C2 DCB 0x9B
[anon:libc_malloc]:DE0A99C3 DCB 0x1F
[anon:libc_malloc]:DE0A99C4 DCB    2
[anon:libc_malloc]:DE0A99C5 DCB 0x9E
[anon:libc_malloc]:DE0A99C6 DCB 0xC4
[anon:libc_malloc]:DE0A99C7 DCB 0x97
[anon:libc_malloc]:DE0A99C8 DCB 0x40 ; @
[anon:libc_malloc]:DE0A99C9 DCB 0x94
[anon:libc_malloc]:DE0A99CA DCB 0xFC
[anon:libc_malloc]:DE0A99CB DCB 0xF5
[anon:libc_malloc]:DE0A99CC DCB 0x47 ; G
[anon:libc_malloc]:DE0A99CD DCB    7
[anon:libc_malloc]:DE0A99CE DCB 0x30 ; 0
[anon:libc_malloc]:DE0A99CF DCB 0x31 ; 1
[anon:libc_malloc]:DE0A99D0 DCB 0xB7
[anon:libc_malloc]:DE0A99D1 DCB 0xCC
[anon:libc_malloc]:DE0A99D2 DCB 0xBC
[anon:libc_malloc]:DE0A99D3 DCB 0xE1
[anon:libc_malloc]:DE0A99D4 DCB 0xB6
[anon:libc_malloc]:DE0A99D5 DCB  0xC
[anon:libc_malloc]:DE0A99D6 DCB    8
[anon:libc_malloc]:DE0A99D7 DCB 0xC9
[anon:libc_malloc]:DE0A99D8 DCB 0x77 ; w
[anon:libc_malloc]:DE0A99D9 DCB 0x20
[anon:libc_malloc]:DE0A99DA DCB 0xC1
[anon:libc_malloc]:DE0A99DB DCB 0xB8
[anon:libc_malloc]:DE0A99DC DCB 0x37 ; 7
[anon:libc_malloc]:DE0A99DD DCB 0x8A
[anon:libc_malloc]:DE0A99DE DCB 0x94
[anon:libc_malloc]:DE0A99DF DCB 0x4A ; J
[anon:libc_malloc]:DE0A99E0 DCB 0x2D ; -
[anon:libc_malloc]:DE0A99E1 DCB 0x56 ; V
[anon:libc_malloc]:DE0A99E2 DCB 0x7A ; z
[anon:libc_malloc]:DE0A99E3 DCB 0x49 ; I
[anon:libc_malloc]:DE0A99E4 DCB 0x79 ; y
[anon:libc_malloc]:DE0A99E5 DCB 0x30 ; 0
[anon:libc_malloc]:DE0A99E6 DCB    3
[anon:libc_malloc]:DE0A99E7 DCB 0xB3
[anon:libc_malloc]:DE0A99E8 DCB 0x1A
[anon:libc_malloc]:DE0A99E9 DCB    6
[anon:libc_malloc]:DE0A99EA DCB 0xE9
[anon:libc_malloc]:DE0A99EB DCB 0x89
[anon:libc_malloc]:DE0A99EC DCB 0xC0
[anon:libc_malloc]:DE0A99ED DCB 0xE1
[anon:libc_malloc]:DE0A99EE DCB 0xAE
[anon:libc_malloc]:DE0A99EF DCB 0x66 ; f
[anon:libc_malloc]:DE0A99F0 DCB 0xAD
[anon:libc_malloc]:DE0A99F1 DCB 0x20
[anon:libc_malloc]:DE0A99F2 DCB 0xA8
[anon:libc_malloc]:DE0A99F3 DCB 0xD2
[anon:libc_malloc]:DE0A99F4 DCB 0x58 ; X
[anon:libc_malloc]:DE0A99F5 DCB 0x76 ; v
[anon:libc_malloc]:DE0A99F6 DCB 0xE7
[anon:libc_malloc]:DE0A99F7 DCB 0xB3
[anon:libc_malloc]:DE0A99F8 DCB 0x57 ; W
[anon:libc_malloc]:DE0A99F9 DCB 0xC4
[anon:libc_malloc]:DE0A99FA DCB  0xE
[anon:libc_malloc]:DE0A99FB DCB 0xAF
[anon:libc_malloc]:DE0A99FC DCB 0xE5
[anon:libc_malloc]:DE0A99FD DCB 0xA3
[anon:libc_malloc]:DE0A99FE DCB 0x65 ; e
[anon:libc_malloc]:DE0A99FF DCB 0xAE

中间地址
FFAA1A85

开始生成结果
EC965AA8
[anon:libc_malloc]:EC965AA8 DCB 0x2B ; +
[anon:libc_malloc]:EC965AA9 DCB 0x78 ; x
[anon:libc_malloc]:EC965AAA DCB 0x4C ; L
[anon:libc_malloc]:EC965AAB DCB 0x66 ; f
[anon:libc_malloc]:EC965AAC DCB 0x32 ; 2
[anon:libc_malloc]:EC965AAD DCB 0x64 ; d
[anon:libc_malloc]:EC965AAE DCB 0x2B ; +
[anon:libc_malloc]:EC965AAF DCB 0x7A ; z
[anon:libc_malloc]:EC965AB0 DCB 0x6E ; n
[anon:libc_malloc]:EC965AB1 DCB 0x55 ; U
[anon:libc_malloc]:EC965AB2 DCB 0x54 ; T
[anon:libc_malloc]:EC965AB3 DCB 0x31 ; 1
[anon:libc_malloc]:EC965AB4 DCB 0x68 ; h
[anon:libc_malloc]:EC965AB5 DCB 0x79 ; y
[anon:libc_malloc]:EC965AB6 DCB 0x39 ; 9
[anon:libc_malloc]:EC965AB7 DCB 0x54 ; T
[anon:libc_malloc]:EC965AB8 DCB 0x37 ; 7
[anon:libc_malloc]:EC965AB9 DCB 0x70 ; p
[anon:libc_malloc]:EC965ABA DCB 0x79 ; y
[anon:libc_malloc]:EC965ABB DCB 0x39 ; 9
[anon:libc_malloc]:EC965ABC DCB 0x59 ; Y
[anon:libc_malloc]:EC965ABD DCB 0x6A ; j
[anon:libc_malloc]:EC965ABE DCB 0x4D ; M
[anon:libc_malloc]:EC965ABF DCB 0x53 ; S
[anon:libc_malloc]:EC965AC0 DCB 0x74 ; t
[anon:libc_malloc]:EC965AC1 DCB 0x4E ; N
[anon:libc_malloc]:EC965AC2 DCB 0x32 ; 2
[anon:libc_malloc]:EC965AC3 DCB 0x63 ; c
[anon:libc_malloc]:EC965AC4 DCB 0x7A ; z
[anon:libc_malloc]:EC965AC5 DCB 0x55 ; U
[anon:libc_malloc]:EC965AC6 DCB 0x63 ; c
[anon:libc_malloc]:EC965AC7 DCB 0x4B ; K
[anon:libc_malloc]:EC965AC8 DCB 0x30 ; 0


[stack]:FFAA17E4 DCB 0xA8
[stack]:FFAA17E5 DCB 0x5A ; Z
[stack]:FFAA17E6 DCB 0x96
[stack]:FFAA17E7 DCB 0xEC
[stack]:FFAA17E8 DCB 0x6C ; l
[stack]:FFAA17E9 DCB 0x10
[stack]:FFAA17EA DCB 0xE5
[stack]:FFAA17EB DCB 0xE8
[stack]:FFAA17EC DCB 0xBC
[stack]:FFAA17ED DCB 0x54 ; T
[stack]:FFAA17EE DCB 0x1A
[stack]:FFAA17EF DCB 0x38 ; 8
[stack]:FFAA17F0 DCB 0xC5
[stack]:FFAA17F1 DCB 0x5C ; \
[stack]:FFAA17F2 DCB 0x38 ; 8
[stack]:FFAA17F3 DCB 0x4A ; J
[stack]:FFAA17F4 DCB 0x89
[stack]:FFAA17F5 DCB 0x84
[stack]:FFAA17F6 DCB 0x43 ; C
[stack]:FFAA17F7 DCB 0x6C ; l
[stack]:FFAA17F8 DCB 0xBB
[stack]:FFAA17F9 DCB 0x6C ; l
[stack]:FFAA17FA DCB 0xDF
[stack]:FFAA17FB DCB 0x87
[stack]:FFAA17FC DCB 0x42 ; B
[stack]:FFAA17FD DCB 0x2F ; /
[stack]:FFAA17FE DCB 0xBC
[stack]:FFAA17FF DCB 0xBB
[stack]:FFAA1800 DCB 0x5C ; \

地址FFAA183C  存放了0x25,观察用来做什么

[stack]:FFAA16F4 DCB 0x6C ; l
[stack]:FFAA16F5 DCB 0x80
[stack]:FFAA16F6 DCB 0xF1
[stack]:FFAA16F7 DCB 0xE8

[stack]:FFAA165C DCB 0xF4
[stack]:FFAA165D DCB 0x16
[stack]:FFAA165E DCB 0xAA
[stack]:FFAA165F DCB 0xFF

[stack]:FFAA1B0C DCB 0x63 ; c 指向包名
FFAA1AE0 DCB 0x63 ; c 指向包名生成的BuildConfig

伪代码逻辑如下:

R6变成67,跳转sub_E8F0D182

R6=R4+R5

R6=R6-1

R5=R6-R5

R5=R5*R4

合成R5=((R6-1)-R5)*R4

R4=R4+0xE

R4=R4^R5

R4=R4^R0

R4=R4&R5

合成R4=(R4+0xE)^R5^R0&R5

R0=R0^R1

R5=(R5&R1)|(R0^R1)

R2=R2^R0

R0=0xD

R0=!R0

[stack]:FFAA1AB8 DCB 0x4A ; J

0x4A 0x77 0x56

开始设置固定字符串?发现初始化固定的16个字符串了 J wV2XBY8JwiQRfTy0 MFRkY0

BuildConfig算法

(0xA-(~(0x4<<4)+1)).ToString("X2")

得到字符串:Um5cY0RW

在生成字符串 J( 不算)dXJHMGk4Um5CY0RWaEpmTA后,具体逻辑后面再研究,好像都是固定生成这个,开始调用JNI。

注意关键指针:0xF4873914是指向_ZN3artL21gCheckNativeInterfaceE,是要操作JNI

_ZN3art8CheckJNI21ReleaseStringUTFCharsEP7_JNIEnvP8_jstringPKc

art::CheckJNI::ReleaseStringUTFChars

每次取4个字符,每个字符hex都走一遍这个逻辑,加入_ctype来判断走不同逻辑

libumejni.so:E8F12CD0 LDR             R0, =0x698
libumejni.so:E8F12CD2 ADD             R0, SP
libumejni.so:E8F12CD4 LDR             R0, [R0] ; R0=0x8C
libumejni.so:E8F12CD6 ADDS            R0, #0x73 ; 0x8C+0x73=0xFF
libumejni.so:E8F12CD8 MOVS            R3, #7
libumejni.so:E8F12CDA EORS            R3, R0  ; 7^0xFF=F8
libumejni.so:E8F12CDC LDR             R4, =0x69C
libumejni.so:E8F12CDE ADD             R4, SP
libumejni.so:E8F12CE0 LDR             R4, [R4] ; FFFFFFF1
libumejni.so:E8F12CE2 ADDS            R4, #0xE ; FFFFFFF1+0xE=FFFFFFFF
libumejni.so:E8F12CE4 EORS            R4, R1  ; R4=R4^R1=FFFFFF9B
libumejni.so:E8F12CE6 MOVS            R2, #0xFF
libumejni.so:E8F12CE8 EORS            R4, R2  ; R4=R4^R2=((0x64^0xFFFFFFFF)^0xFF)=FFFFFF64
libumejni.so:E8F12CEA ANDS            R4, R1  ; R4=R4&R1=0x64
libumejni.so:E8F12CEC LDR             R1, [SP,#arg_8]
libumejni.so:E8F12CEE LDR             R1, [R1] ; R1=取出_ctype=0;_ctype是个固定结构,取出_ctype的地址,然后+上hex偏移指向的地址,然后索引+1的值取出来作为R1,之前还纳闷,以为总是个固定的0x42.
libumejni.so:E8F12CF0 ADDS            R1, R1, R4 ; R1=R1+R4=0x42好像是地址相加
libumejni.so:E8F12CF2 LDRB            R1, [R1,#1] ; R1=R1[1]个值0x42
libumejni.so:E8F12CF4 EORS            R1, R0  ; R1=R1^R0=x042^0xFF=0xBD
libumejni.so:E8F12CF6 ORRS            R1, R3  ; R1=R1|R3=0xBD|0xF8=0xFD
libumejni.so:E8F12CF8 EORS            R1, R0  ; R1=R1^R0=0xFD^0xFF=0x2
libumejni.so:E8F12CFA MOVS            R3, #0x2A ; R3=0x2A
libumejni.so:E8F12CFC ORRS            R3, R0  ; R3=R3^R0=0x2A^0xFF=0xFF
libumejni.so:E8F12CFE ANDS            R3, R1  ; R3=R3&R1=0xFF&0x2=0x2
libumejni.so:E8F12D00 ANDS            R3, R2  ; R3=R3&R2=0xFF&0x2=0x2

用到的base64字符集:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

下面是每4个字符遍历base64对应转出的新hex,即遍历次数

dXJH MGk4 Um5C Y0RW aEpm TA(注意这里就剩下2个字符了,要观察下逻辑了,经过一轮跟踪发现不够4个字符就进行补0,就得到54 41 0 0)

 d   X   J    H  M  G   k   4   U   m  5   C  Y    0   R  W  a   E   p   m   T  A

64 58 4A 48 4D 47 6B 34 55 6D 35 43 59 30 52 57 61 45 70 6D 54 41 0 0

23 17 09 07 0C 06 2A F3 14 2C  F4 02 18 EF 11 16 错误的相减得出的hex

1D 17 09 07 0C 06 24 34 14 26  39 02 18 34 11 16 1A 04 29 26

  通过之前的长字符串,遍历4次跑出dXJH后,开始进入新逻辑,定位到字符串Uf7TV,指向f。跟踪发现,这只不过是一个指针而已.用来给R1做182上的逻辑判断。

循环dXJH,内部总的循环64次,去base64字符串里面找是否存在这个hex,找到后走逻辑(不详)。

  终于找到新的hex值,就是循环的次数,因为是在base64从开头41找到dXJH的hex,遍历了这么多次,也就是相当于两个hex相减(好像不完全对)【补充新发现,不是两个Hex相减,因为ascii表里面 A-Z和a-z直接还有几个字符0x5B-0x60,所以如果硬要相减就还要再减掉6,但是依然不对,因为后面还有两个字符+/的hex是小的,所以一定是遍历i++的值,如果hex的值小于0x41则直接放进来?】,把这个值替换到对应的dXJH的hex中,最终得到0x1D 0x17 0x9 0x7,发现对于本身hex小于A(0x41)的字符,需要循环到A-Z0./最后。然后的逻辑还需要跟踪。

用新算出的Hex进行操作

MGk4得到0xC 0x6 0x24 0x34

[stack]:FFAA1A9C DCB  0xC
[stack]:FFAA1A9D DCB    6
[stack]:FFAA1A9E DCB 0x24 ; $
[stack]:FFAA1A9F DCB 0x34 ; 4

[stack]:FFAA1AA0 DCB 0x75 ; u
[stack]:FFAA1AA1 DCB 0x72 ; r
[stack]:FFAA1AA2 DCB 0x47 ; G

[stack]:FFAA1AA0 DCB 0x52 ; R
[stack]:FFAA1AA1 DCB 0x6E ; n
[stack]:FFAA1AA2 DCB 0x42 ; B

[anon:libc_malloc]:E7E66729 DCB 0x63 ; c
[anon:libc_malloc]:E7E6672A DCB 0x44 ; D
[anon:libc_malloc]:E7E6672B DCB 0x56 ; V

[stack]:FFAA1AA0 DCB 0x68 ; h
[stack]:FFAA1AA1 DCB 0x4A ; J
[stack]:FFAA1AA2 DCB 0x66 ; f

[stack]:FFAA1AA0 DCB 0x4C ; L
[stack]:FFAA1AA1 DCB    0
[stack]:FFAA1AA2 DCB    0

感觉是16个字符循环,每次取4个字符,计算后生成3个字符(之前跟踪到的是urG 0i8 RnB cDV)

dXJH得到urG

MGk4得到0i8

Um5C得到RnB

Y0RW得到cDV

aEpm得到hjf

TA补0得到L

两个补0 遍历都可以F9,直到最后一个补0的0x3F,hex << 2 左移两位,用新生成的4个hex,来生成3个hex的整体逻辑。

libumejni.so:E8F148FC
libumejni.so:E8F148FC
libumejni.so:E8F148FC
libumejni.so:E8F148FC sub_E8F148FC
libumejni.so:E8F148FC
libumejni.so:E8F148FC varg_r3= -4
libumejni.so:E8F148FC
libumejni.so:E8F148FC LDR             R2, =0x69C
libumejni.so:E8F148FE ADD             R2, SP
libumejni.so:E8F14900 LDR             R2, [R2]
libumejni.so:E8F14902 ADDS            R2, #0xE
libumejni.so:E8F14904 LDR             R6, =0x688
libumejni.so:E8F14906 ADD             R6, SP
libumejni.so:E8F14908 STR             R2, [R6] ; 将FFFFFFFF存到一个变量中了
libumejni.so:E8F1490A LDR             R5, =0xF7913433
libumejni.so:E8F1490C EORS            R5, R2
libumejni.so:E8F1490E LDR             R1, =0x924
libumejni.so:E8F14910 ADD             R1, SP  ; 指向新生成的4个hex 1D 17 9 7
libumejni.so:E8F14912 LDRB            R0, [R1]
libumejni.so:E8F14914 LDR             R6, =0x644
libumejni.so:E8F14916 ADD             R6, SP
libumejni.so:E8F14918 STR             R1, [R6] ; 将新hex的指针给到另一个变量
libumejni.so:E8F1491A LSLS            R3, R0, #2 ; 将hex第一个值左移2位 0x1D<<2=0x74
libumejni.so:E8F1491C PUSH            {R3}
libumejni.so:E8F1491E POP             {R0}
libumejni.so:E8F14920 ANDS            R0, R5  ; R0=R0&R5=0x74&0x086ECBCC=0x44
libumejni.so:E8F14922 EORS            R3, R2  ; R3=R3^R2=0x74^0xFFFFFFFF=0xFFFFFF8B
libumejni.so:E8F14924 MOVS            R2, #0x33 ; R2=0x33
libumejni.so:E8F14926 LDR             R6, =0x4C8
libumejni.so:E8F14928 ADD             R6, SP
libumejni.so:E8F1492A STR             R2, [R6] ; 将R2的0x33放到R6中0 0 0 0x33
libumejni.so:E8F1492C PUSH            {R3}
libumejni.so:E8F1492E POP             {R4}
libumejni.so:E8F14930 ANDS            R4, R2  ; R4=R4&R2=0xFFFFFF8B&0x33=0x3
libumejni.so:E8F14932 ORRS            R4, R0  ; R4=R4|R0=0x3|0x44=0x47
libumejni.so:E8F14934 LDR             R0, =0x698
libumejni.so:E8F14936 ADD             R0, SP
libumejni.so:E8F14938 LDR             R0, [R0] ; 固定值0x8C
libumejni.so:E8F1493A ADDS            R0, #0x73 ; R0=0x8C+0x73=0xFF
libumejni.so:E8F1493C LDR             R6, =0x4BC
libumejni.so:E8F1493E ADD             R6, SP
libumejni.so:E8F14940 STR             R0, [R6] ; 将0xFF放到一个变量指针
libumejni.so:E8F14942 LDRB            R2, [R1,#1] ; 取出hex的第二个值R2=0x17
libumejni.so:E8F14944 LDR             R6, =0x4B8
libumejni.so:E8F14946 ADD             R6, SP
libumejni.so:E8F14948 STR             R2, [R6] ; 将hex第二个R2=0x17放到另一个地方
libumejni.so:E8F1494A PUSH            {R2}
libumejni.so:E8F1494C POP             {R1}
libumejni.so:E8F1494E EORS            R1, R0  ; R1=R1^R0=0x17^0xFF=0xE8
libumejni.so:E8F14950 MOVS            R0, #0x30 ; R0=0x30
libumejni.so:E8F14952 EORS            R0, R1  ; R0=R0^R1=0x30^0xE8=0xD8
libumejni.so:E8F14954 ANDS            R0, R2  ; R0=R0&R2(hex)=0xD8&0x17=0x10
libumejni.so:E8F14956 MOVS            R1, #0xFF ; R1=0xFF固定值,有点0x8C+0x73的意思
libumejni.so:E8F14958 LDR             R6, =0x4C4
libumejni.so:E8F1495A ADD             R6, SP
libumejni.so:E8F1495C STR             R1, [R6] ; 将FF放到另一个地址
libumejni.so:E8F1495E ANDS            R0, R1  ; R0=R0&R1=0x10&0xFF=0x10
libumejni.so:E8F14960 LSRS            R0, R0, #4 ; R0=R0>>4=0x10>>4=0x1右移4位
libumejni.so:E8F14962 PUSH            {R0}
libumejni.so:E8F14964 POP             {R2}
libumejni.so:E8F14966 ANDS            R2, R5  ; R2=R2&R5=0x1&0x086ECBCC=0
libumejni.so:E8F14968 LDR             R1, =0x688
libumejni.so:E8F1496A ADD             R1, SP
libumejni.so:E8F1496C LDR             R1, [R1] ; R1=0xFFFFFFFF不知道是不是固定值
libumejni.so:E8F1496E EORS            R0, R1  ; R0=R0^R1=0x1^FFFFFFFF=0xFFFFFFFE
libumejni.so:E8F14970 PUSH            {R0}
libumejni.so:E8F14972 POP             {R1}
libumejni.so:E8F14974 LDR             R6, =0x4C8
libumejni.so:E8F14976 ADD             R6, SP
libumejni.so:E8F14978 LDR             R6, [R6] ; R6=取出上面第一个计算出的值0x33
libumejni.so:E8F1497A ANDS            R1, R6  ; R1=R1&R6=0x33&0xFFFFFFFE=0x32
libumejni.so:E8F1497C ORRS            R1, R2  ; R1=R1|R2=0x32|0x0=0x32
libumejni.so:E8F1497E EORS            R1, R4  ; R1=R1^R4(上面的值)=0x32^0x47=0x75
libumejni.so:E8F14980 ORRS            R0, R3  ; R0=R0|R3=0xFFFFFFFE|0xFFFFFF8B=0xFFFFFFFF
libumejni.so:E8F14982 LDR             R3, =0x688
libumejni.so:E8F14984 ADD             R3, SP
libumejni.so:E8F14986 LDR             R3, [R3] ; R3=再次取出固定值0xFFFFFFFF
libumejni.so:E8F14988 EORS            R0, R3  ; R0=R0^R3=0xFFFFFFFF^0xFFFFFFFF=0
libumejni.so:E8F1498A LDR             R2, =0x4C8
libumejni.so:E8F1498C ADD             R2, SP
libumejni.so:E8F1498E LDR             R2, [R2] ; R2=上面第一个计算出的值0x33
libumejni.so:E8F14990 ORRS            R5, R2  ; R5=R5|R2=0x086ECBCC|0x33=0x86ECBFF
libumejni.so:E8F14992 ANDS            R5, R0  ; R5=R5&R0=0x86ECBFF&0=0x0
libumejni.so:E8F14994 ORRS            R5, R1  ; R5=R5|R1(上面的)=0x0|0x75=0x75
libumejni.so:E8F14996 LDR             R0, =0x928
libumejni.so:E8F14998 ADD             R0, SP
libumejni.so:E8F1499A LDR             R4, =0x4C0
libumejni.so:E8F1499C ADD             R4, SP
libumejni.so:E8F1499E STR             R0, [R4] ; 新分配了一个变量存R0的指针
libumejni.so:E8F149A0 STRB            R5, [R0] ; 将R5=0x75存起来R0的地址,存成新hex的第一个
libumejni.so:E8F149A2 LDR             R5, =0x6361A15A
libumejni.so:E8F149A4 EORS            R5, R3  ; R5=R5^R3=0x6361A15A^0xFFFFFFFF=0x9C9E5EA5
libumejni.so:E8F149A6 LDR             R0, =0x4B8
libumejni.so:E8F149A8 ADD             R0, SP
libumejni.so:E8F149AA LDR             R0, [R0] ; R0=0x17,取出第二个hex
libumejni.so:E8F149AC LSLS            R0, R0, #4 ; R0=R0<<4=0x17<<4=0x170
libumejni.so:E8F149AE MOVS            R1, #0xF0 ; R1=0xF0固定值
libumejni.so:E8F149B0 ANDS            R1, R0  ; R1=R1&R0=0x170&0xF0=0x70
libumejni.so:E8F149B2 PUSH            {R1}
libumejni.so:E8F149B4 POP             {R2}
libumejni.so:E8F149B6 ANDS            R2, R5  ; R2=R2&R5=0x70&0x9C9E5EA5=0x20
libumejni.so:E8F149B8 EORS            R1, R3  ; R1=R1^R3=0x70^0xFFFFFFFF=0xFFFFFF8F
libumejni.so:E8F149BA MOVS            R0, #0x5A ; R0=0x5A固定值
libumejni.so:E8F149BC LDR             R4, =0x4C8
libumejni.so:E8F149BE ADD             R4, SP
libumejni.so:E8F149C0 STR             R0, [R4] ; 将之前存第一个0x33的变量存成第二计算出的0x5A
libumejni.so:E8F149C2 PUSH            {R1}
libumejni.so:E8F149C4 POP             {R3}
libumejni.so:E8F149C6 ANDS            R3, R0  ; R3=R3(上面的)&R0=0xFFFFFF8F&0x5A=0xA
libumejni.so:E8F149C8 ORRS            R3, R2  ; R3=R3|R2=0xA|0x20=0x2A 都是上面的值
libumejni.so:E8F149CA LDR             R0, =0x644
libumejni.so:E8F149CC ADD             R0, SP
libumejni.so:E8F149CE LDR             R0, [R0]
libumejni.so:E8F149D0 LDRB            R0, [R0,#2] ; R0=取出第三个hex值0x9
libumejni.so:E8F149D2 LDR             R4, =0x4B8
libumejni.so:E8F149D4 ADD             R4, SP
libumejni.so:E8F149D6 STR             R0, [R4] ; 应该是一个变量根据操作存不同的hex值,0x9
libumejni.so:E8F149D8 LDR             R6, =0x4BC
libumejni.so:E8F149DA ADD             R6, SP
libumejni.so:E8F149DC LDR             R6, [R6] ; R6=0xFF固定值
libumejni.so:E8F149DE EORS            R6, R0  ; R6=R6^R0=0xFF^0x9=0xF6
libumejni.so:E8F149E0 MOVS            R2, #0x3C ; R2=0x3C固定值
libumejni.so:E8F149E2 EORS            R2, R6  ; R2=R2^R6=0x3C^0xF6=0xCA
libumejni.so:E8F149E4 ANDS            R2, R0  ; R2=R2&R0=0xCA&0x9=0x9
libumejni.so:E8F149E6 LDR             R0, =0x4C4
libumejni.so:E8F149E8 ADD             R0, SP
libumejni.so:E8F149EA LDR             R0, [R0] ; R0=0xFF固定值(上面存放的)
libumejni.so:E8F149EC ANDS            R2, R0  ; R2=R2&R0=0x8&0xFF=0x8
libumejni.so:E8F149EE LSRS            R6, R2, #2 ; R6=R2>>2=0x8>>2=0x2右移2位
libumejni.so:E8F149F0 PUSH            {R6}
libumejni.so:E8F149F2 POP             {R2}
libumejni.so:E8F149F4 ANDS            R2, R5  ; R2=R2&R5=0x2&0x9C9E5EA5=0x0
libumejni.so:E8F149F6 LDR             R0, =0x688
libumejni.so:E8F149F8 ADD             R0, SP
libumejni.so:E8F149FA LDR             R0, [R0] ; R0=取出固定的0xFFFFFFFF?
libumejni.so:E8F149FC EORS            R6, R0  ; R6=R6^R0=0x2^0xFFFFFFFF=0xFFFFFFFD
libumejni.so:E8F149FE PUSH            {R6}
libumejni.so:E8F14A00 POP             {R0}
libumejni.so:E8F14A02 LDR             R4, =0x4C8
libumejni.so:E8F14A04 ADD             R4, SP
libumejni.so:E8F14A06 LDR             R4, [R4] ; R4=0x5A取出之前的第二个hex计算的数据
libumejni.so:E8F14A08 ANDS            R0, R4  ; R0=R0&R4=0xFFFFFFFD&0x5A=0x58
libumejni.so:E8F14A0A ORRS            R0, R2  ; R0=R0|R2=0x58|0x0=0x58
libumejni.so:E8F14A0C EORS            R0, R3  ; R0=R0^R3=0x58^0x2A=0x72
libumejni.so:E8F14A0E ORRS            R6, R1  ; R6=R6|R1=0xFFFFFFFD|0xFFFFFF8F=0xFFFFFFFF
libumejni.so:E8F14A10 LDR             R1, =0x688
libumejni.so:E8F14A12 ADD             R1, SP
libumejni.so:E8F14A14 LDR             R1, [R1] ; R1=0xFFFFFFFF固定值
libumejni.so:E8F14A16 EORS            R6, R1  ; R6=R6^R1=0xFFFFFFFF^0xFFFFFFFF=0x0
libumejni.so:E8F14A18 LDR             R1, =0x4C8
libumejni.so:E8F14A1A ADD             R1, SP
libumejni.so:E8F14A1C LDR             R1, [R1] ; R1=0x5A取出之前的第二个hex计算的数据
libumejni.so:E8F14A1E ORRS            R5, R1  ; R5=R5|R1=0x9C9E5EA5|0x5A=0x9C9E5EFF
libumejni.so:E8F14A20 ANDS            R5, R6  ; R5=R5&R6=0x9C9E5EFF&0x0=0x0
libumejni.so:E8F14A22 ORRS            R5, R0  ; R5=R5|R0=0x0|0x00000072=0x72
libumejni.so:E8F14A24 LDR             R2, =0x4C0
libumejni.so:E8F14A26 ADD             R2, SP
libumejni.so:E8F14A28 LDR             R2, [R2] ; R2指向新计算的hex地址
libumejni.so:E8F14A2A STRB            R5, [R2,#1] ; 将0x72存成新hex第二个
libumejni.so:E8F14A2C LDR             R0, =0x4B8
libumejni.so:E8F14A2E ADD             R0, SP
libumejni.so:E8F14A30 LDR             R0, [R0] ; R0=0x9第三个hex的值
libumejni.so:E8F14A32 LSLS            R0, R0, #6 ; R0=R0<<6=0x9<<6=0x240左移6位
libumejni.so:E8F14A34 LDR             R1, =0x644
libumejni.so:E8F14A36 ADD             R1, SP
libumejni.so:E8F14A38 LDR             R1, [R1]
libumejni.so:E8F14A3A LDRB            R1, [R1,#3] ; R1=0x7第四个hex的值
libumejni.so:E8F14A3C NEGS            R1, R1  ; R1=~R1+1=~0x7+1=0xFFFFFFF9取反+1
libumejni.so:E8F14A3E SUBS            R0, R0, R1 ; R0=R0-R1=0x240-0xFFFFFFF9=0x247
libumejni.so:E8F14A40 STRB            R0, [R2,#2] ; 将0x247存成新hex第三个,实际存的是0x47,转byte了
libumejni.so:E8F14A42 LDR             R0, =0x844
libumejni.so:E8F14A44 ADD             R0, SP
libumejni.so:E8F14A46 LDR             R0, [R0] ; R0=0,固定值?
libumejni.so:E8F14A48 NEGS            R0, R0  ; R0=~R0+1=~0x0+1=0x0
libumejni.so:E8F14A4A MOVS            R1, #3  ; R1=3固定值
libumejni.so:E8F14A4C SUBS            R1, R1, R0 ; R1=R1-R0=0x3-0x0=0x3
libumejni.so:E8F14A4E LDR             R0, =0x848
libumejni.so:E8F14A50 ADD             R0, SP
libumejni.so:E8F14A52 LDR             R0, [R0] ; 指向一个地址
libumejni.so:E8F14A54 BL              sub_E8F1573C
libumejni.so:E8F14A58 LDR             R2, =0x738
libumejni.so:E8F14A5A ADD             R2, SP
libumejni.so:E8F14A5C STR             R0, [R2] ; 存了个地址到另一个变量
libumejni.so:E8F14A5E MOVS            R0, #0  ; R0=0固定值
libumejni.so:E8F14A60 LDR             R2, =0x4C8
libumejni.so:E8F14A62 ADD             R2, SP
libumejni.so:E8F14A64 STR             R0, [R2] ; 存地址,初始化一个变量吧好像
libumejni.so:E8F14A66 LDR             R0, =0x844
libumejni.so:E8F14A68 ADD             R0, SP
libumejni.so:E8F14A6A LDR             R0, [R0]
libumejni.so:E8F14A6C LDR             R2, =0x4C4
libumejni.so:E8F14A6E ADD             R2, SP
libumejni.so:E8F14A70 STR             R0, [R2]
libumejni.so:E8F14A70 ; End of function sub_E8F148FC
libumejni.so:E8F14A70

4转3逻辑完成后,但未拷贝补0的,发现调用了llvm::Pass * llvm::callDefaultCtor(void)+2 在libGLES_mali.so。

4转3总结果如下:

[anon:libc_malloc]:E7E7FDD0 DCB 0x75 ; u
[anon:libc_malloc]:E7E7FDD1 DCB 0x72 ; r
[anon:libc_malloc]:E7E7FDD2 DCB 0x47 ; G
[anon:libc_malloc]:E7E7FDD3 DCB 0x30 ; 0
[anon:libc_malloc]:E7E7FDD4 DCB 0x69 ; i
[anon:libc_malloc]:E7E7FDD5 DCB 0x38 ; 8
[anon:libc_malloc]:E7E7FDD6 DCB 0x52 ; R
[anon:libc_malloc]:E7E7FDD7 DCB 0x6E ; n
[anon:libc_malloc]:E7E7FDD8 DCB 0x42 ; B
[anon:libc_malloc]:E7E7FDD9 DCB 0x63 ; c
[anon:libc_malloc]:E7E7FDDA DCB 0x44 ; D
[anon:libc_malloc]:E7E7FDDB DCB 0x56 ; V
[anon:libc_malloc]:E7E7FDDC DCB 0x68 ; h
[anon:libc_malloc]:E7E7FDDD DCB 0x4A ; J
[anon:libc_malloc]:E7E7FDDE DCB 0x66 ; f
[anon:libc_malloc]:E7E7FDDF DCB 0x4C ; L

几个逻辑后发现有调用_ZN3art11GuardedCopy7kCanaryE,接着是GetStringUTFChars,可能是要获取明文数据了吧。

BLX R3就发现,出现密文数据了,太诡异了,是不是这个加载的结果其实是个中间数据。

[anon:libc_malloc]:DE099100 DCB 0x2B ; +
[anon:libc_malloc]:DE099101 DCB 0x78 ; x
[anon:libc_malloc]:DE099102 DCB 0x4C ; L
[anon:libc_malloc]:DE099103 DCB 0x66 ; f
[anon:libc_malloc]:DE099104 DCB 0x32 ; 2

接着看到MTK_TIME_PROFILE_STOP的调用,什么玩意啊

继续调试,发现开始操作密文字符串,取第一个字节0x2B。

重大发现,生成的密文长度跟它的密文长度是一样的,说明算法应该是差不多的,只是中间计算的数据可能有问题。

应该还是按照base64的基础逻辑来,3个字节变4个字节。497=>684

接着发现进入一个新的base64逻辑,对应的base64是这样的,经过跟踪发现,这个逻辑是对密文不足0x2B0的长度,进行补4操作。密文长度是0x2AC。

libumejni.so:E8F15E8D unk_E8F15E8D DCB 0x10                   ; DATA XREF: sub_E8F10F30+FC0↑o
libumejni.so:E8F15E8D                                         ; libumejni.so:off_E8F120F0↑o ...
libumejni.so:E8F15E8E DCB    1
libumejni.so:E8F15E8F DCB    2
libumejni.so:E8F15E90 DCB    3
libumejni.so:E8F15E91 DCB    4
libumejni.so:E8F15E92 DCB    5
libumejni.so:E8F15E93 DCB    6
libumejni.so:E8F15E94 DCB    7
libumejni.so:E8F15E95 DCB    8
libumejni.so:E8F15E96 DCB    9
libumejni.so:E8F15E97 DCB  0xA
libumejni.so:E8F15E98 DCB  0xB
libumejni.so:E8F15E99 DCB  0xC
libumejni.so:E8F15E9A DCB  0xD
libumejni.so:E8F15E9B DCB  0xE
libumejni.so:E8F15E9C DCB  0xF
libumejni.so:E8F15E9D DCB 0x41 ; A
libumejni.so:E8F15E9E DCB 0x42 ; B
libumejni.so:E8F15E9F DCB 0x43 ; C
libumejni.so:E8F15EA0 DCB 0x44 ; D
libumejni.so:E8F15EA1 DCB 0x45 ; E
libumejni.so:E8F15EA2 DCB 0x46 ; F
libumejni.so:E8F15EA3 DCB 0x47 ; G
libumejni.so:E8F15EA4 DCB 0x48 ; H
libumejni.so:E8F15EA5 DCB 0x49 ; I
libumejni.so:E8F15EA6 DCB 0x4A ; J
libumejni.so:E8F15EA7 DCB 0x4B ; K
libumejni.so:E8F15EA8 DCB 0x4C ; L
libumejni.so:E8F15EA9 DCB 0x4D ; M
libumejni.so:E8F15EAA DCB 0x4E ; N
libumejni.so:E8F15EAB DCB 0x4F ; O
libumejni.so:E8F15EAC DCB 0x50 ; P
libumejni.so:E8F15EAD DCB 0x51 ; Q
libumejni.so:E8F15EAE DCB 0x52 ; R
libumejni.so:E8F15EAF DCB 0x53 ; S
libumejni.so:E8F15EB0 DCB 0x54 ; T
libumejni.so:E8F15EB1 DCB 0x55 ; U
libumejni.so:E8F15EB2 DCB 0x56 ; V
libumejni.so:E8F15EB3 DCB 0x57 ; W
libumejni.so:E8F15EB4 DCB 0x58 ; X
libumejni.so:E8F15EB5 DCB 0x59 ; Y
libumejni.so:E8F15EB6 DCB 0x5A ; Z
libumejni.so:E8F15EB7 DCB 0x61 ; a
libumejni.so:E8F15EB8 DCB 0x62 ; b
libumejni.so:E8F15EB9 DCB 0x63 ; c
libumejni.so:E8F15EBA DCB 0x64 ; d
libumejni.so:E8F15EBB DCB 0x65 ; e
libumejni.so:E8F15EBC DCB 0x66 ; f
libumejni.so:E8F15EBD DCB 0x67 ; g
libumejni.so:E8F15EBE DCB 0x68 ; h
libumejni.so:E8F15EBF DCB 0x69 ; i
libumejni.so:E8F15EC0 DCB 0x6A ; j
libumejni.so:E8F15EC1 DCB 0x6B ; k
libumejni.so:E8F15EC2 DCB 0x6C ; l
libumejni.so:E8F15EC3 DCB 0x6D ; m
libumejni.so:E8F15EC4 DCB 0x6E ; n
libumejni.so:E8F15EC5 DCB 0x6F ; o
libumejni.so:E8F15EC6 DCB 0x70 ; p
libumejni.so:E8F15EC7 DCB 0x71 ; q
libumejni.so:E8F15EC8 DCB 0x72 ; r
libumejni.so:E8F15EC9 DCB 0x73 ; s
libumejni.so:E8F15ECA DCB 0x74 ; t
libumejni.so:E8F15ECB DCB 0x75 ; u
libumejni.so:E8F15ECC DCB 0x76 ; v
libumejni.so:E8F15ECD DCB 0x77 ; w
libumejni.so:E8F15ECE DCB 0x78 ; x
libumejni.so:E8F15ECF DCB 0x79 ; y
libumejni.so:E8F15ED0 DCB 0x7A ; z
libumejni.so:E8F15ED1 DCB 0x30 ; 0
libumejni.so:E8F15ED2 DCB 0x31 ; 1
libumejni.so:E8F15ED3 DCB 0x32 ; 2
libumejni.so:E8F15ED4 DCB 0x33 ; 3
libumejni.so:E8F15ED5 DCB 0x34 ; 4
libumejni.so:E8F15ED6 DCB 0x35 ; 5
libumejni.so:E8F15ED7 DCB 0x36 ; 6
libumejni.so:E8F15ED8 DCB 0x37 ; 7
libumejni.so:E8F15ED9 DCB 0x38 ; 8
libumejni.so:E8F15EDA DCB 0x39 ; 9
libumejni.so:E8F15EDB DCB 0x2B ; +
libumejni.so:E8F15EDC DCB 0x2F ; /

重大发现,之前生成的密文,通过这个字符集进行签名一样的感觉,总的字符长度44

接着进入另一个字符集逻辑c|w{,每次取密文16个字节进入该逻辑,再跟踪看

[stack]:FFAA1A98 DCB 0x68 ; h
[stack]:FFAA1A99 DCB 0x4A ; J
[stack]:FFAA1A9A DCB 0x66 ; f
[stack]:FFAA1A9B DCB 0x4C ; L

[stack]:FFAA1A98 DCB 0xD7
[stack]:FFAA1A99 DCB 0x33 ; 3
[stack]:FFAA1A9A DCB 0x29 ; )
[stack]:FFAA1A9B DCB 0x45 ; E

[stack]:FFAA1A98 DCB 0x51 ; Q
[stack]:FFAA1A99 DCB 0x72 ; r
[stack]:FFAA1A9A DCB 0x7C ; |
[stack]:FFAA1A9B DCB 0xF8

libumejni.so:E8F11950
libumejni.so:E8F11950 loc_E8F11950            ; 在进入另一个编码字符集逻辑c|w{
libumejni.so:E8F11950 LDR             R0, =0x920
libumejni.so:E8F11952 ADD             R0, SP
libumejni.so:E8F11954 LDRB            R1, [R0,#2]
libumejni.so:E8F11956 LDR             R2, =(unk_E8F15C8E - 0xE8F1195C)
libumejni.so:E8F11958 ADD             R2, PC  ; unk_E8F15C8E
libumejni.so:E8F1195A PUSH            {R2}
libumejni.so:E8F1195C POP             {R5}
libumejni.so:E8F1195E LDRB            R1, [R5,R1] ; R1=字符集的[变量] R1=chars[0x66]=0x33
libumejni.so:E8F11960 LDRB            R3, [R0,#1] ; R3=0x4A  R0的第二个字节
libumejni.so:E8F11962 LDRB            R2, [R0] ; R2=R0第一个字节
libumejni.so:E8F11964 LDRB            R4, [R0,#3] ; R4=0x4C R0的第4个字节
libumejni.so:E8F11966 STRB            R1, [R0,#1] ; 将对应的字节0x33放到R0的第二个字节
libumejni.so:E8F11968 LDRB            R1, [R5,R4] ; R1=字符集的0x4C=0x29
libumejni.so:E8F1196A STRB            R1, [R0,#2] ; R0的第二个字节放0x29
libumejni.so:E8F1196C LDRB            R1, [R5,R2] ; R1=字符集的0x68(R0的第一个字节)=0x45
libumejni.so:E8F1196E STRB            R1, [R0,#3] ; 将对应的0x45放到R0的第四个字节
libumejni.so:E8F11970 LDR             R2, =0x698
libumejni.so:E8F11972 ADD             R2, SP
libumejni.so:E8F11974 LDR             R2, [R2] ; R2=0x8C固定值?
libumejni.so:E8F11976 PUSH            {R2}
libumejni.so:E8F11978 POP             {R1}
libumejni.so:E8F1197A ADDS            R1, #0x73 ; R1=0xFF
libumejni.so:E8F1197C ADDS            R2, #0x43 ; R2=0xCF
libumejni.so:E8F1197E EORS            R2, R1  ; R2=R2^R1=0xCF^0xFF=0x30
libumejni.so:E8F11980 LDRB            R3, [R5,R3] ; R3=字符集的[0x30]=0xD6
libumejni.so:E8F11982 PUSH            {R3}
libumejni.so:E8F11984 POP             {R4}
libumejni.so:E8F11986 ANDS            R4, R2  ; R4=R4&R2=0xD6&0x30=0x10
libumejni.so:E8F11988 EORS            R3, R1  ; R3=R3^R1=0xD6^0xFF=0x29
libumejni.so:E8F1198A MOVS            R5, #0xCF ; R5=0xCF
libumejni.so:E8F1198C ANDS            R3, R5  ; R3=R3&R5=0x29&0xCF=0x9
libumejni.so:E8F1198E ORRS            R3, R4  ; R3=R3|R4=0x9|0x10=0x19
libumejni.so:E8F11990 LDR             R4, =0x898
libumejni.so:E8F11992 ADD             R4, SP
libumejni.so:E8F11994 LDR             R4, [R4] ; R4=0x4
libumejni.so:E8F11996 LSRS            R4, R4, #2 ; R4=R4>>2=0x4>>2=1
libumejni.so:E8F11998 LDR             R6, =(unk_E8F15D8E - 0xE8F1199E)
libumejni.so:E8F1199A ADD             R6, PC  ; unk_E8F15D8E
libumejni.so:E8F1199C LDRB            R4, [R6,R4] ; R4=R6[R4]=1
libumejni.so:E8F1199E ANDS            R2, R4  ; R2=R2&R4=0x30&0x1=0x0
libumejni.so:E8F119A0 EORS            R1, R4  ; R1=R1^R4=0xFF^0x1=0xFE
libumejni.so:E8F119A2 ANDS            R1, R5  ; R1=R1&R5=0xFE&0xCF=0xCE
libumejni.so:E8F119A4 ORRS            R1, R2  ; R1=R1|R2=0xCE|0x0=0xCE
libumejni.so:E8F119A6 EORS            R1, R3  ; R1=R1^R3=0xCE^0x19=0xD7
libumejni.so:E8F119A8 STRB            R1, [R0]
libumejni.so:E8F119AA LDR             R0, [SP,#arg_298]
libumejni.so:E8F119AC LDR             R2, [R0]
libumejni.so:E8F119AE MOVS            R1, #1
libumejni.so:E8F119B0 MOVS            R0, #0
libumejni.so:E8F119B2 CMP             R2, #0xA
libumejni.so:E8F119B4 PUSH            {R1}
libumejni.so:E8F119B6 POP             {R2}
libumejni.so:E8F119B8 BLT             loc_E8F119BE

非常奇怪的后续操作

发现在用urG...16字节跟什么 在其后面追加生成一个16字节数据,不清楚有什么用

可能是遍历urG...16字节,每次取4个字节

每4个字节的逻辑

libumejni.so:E8F0E47A
libumejni.so:E8F0E47A loc_E8F0E47A            ; 诡异的逻辑,里面这些大数字就是迷惑人,实际就是i做索引就行了
libumejni.so:E8F0E47A LDR             R0, =0x898
libumejni.so:E8F0E47C ADD             R0, SP
libumejni.so:E8F0E47E LDR             R0, [R0] ; 获取变量i=5
libumejni.so:E8F0E480 LSLS            R0, R0, #2 ; R0 5<<2 左移2位=0x14
libumejni.so:E8F0E482 LDR             R1, =0xB42D0A6A ; 固定值
libumejni.so:E8F0E484 ADDS            R0, R0, R1 ; R0=R0+R1=0x14+0xB42D0A6A=0x0xB42D0A7E
libumejni.so:E8F0E486 SUBS            R0, #4  ; R0=R0-4=0xB42D0A7E-4=0xB42D0A7A
libumejni.so:E8F0E488 SUBS            R0, R0, R1 ; R0=0x10,i<<2
libumejni.so:E8F0E48A LDR             R1, =0x6EEE98C2
libumejni.so:E8F0E48C SUBS            R0, R0, R1 ; R0=R0-R1=0x10-0x6EEE98C2=0x9111674E根据i<<2
libumejni.so:E8F0E48E LDR             R2, =0x89C
libumejni.so:E8F0E490 ADD             R2, SP
libumejni.so:E8F0E492 LDR             R2, [R2] ; 内部4的小变量j
libumejni.so:E8F0E494 ADDS            R0, R0, R2 ; R0=R0+R2=0x9111674E+0x2=0x91116750
libumejni.so:E8F0E496 LDR             R2, =0x9C0
libumejni.so:E8F0E498 ADD             R2, SP  ; R2指向urG...地址
libumejni.so:E8F0E49A ADDS            R0, R2, R0 ; R0=R2+R0=0xFFAA1B38+0x91116750=0x90BB8288
libumejni.so:E8F0E49C LDRB            R0, [R0,R1] ; 取出urG...后面第i个字节,上次=0x6E(是大变量i)
libumejni.so:E8F0E49E LDR             R1, =0x920
libumejni.so:E8F0E4A0 ADD             R1, SP  ; R1指向新4字节
libumejni.so:E8F0E4A2 LDR             R2, =0x89C
libumejni.so:E8F0E4A4 ADD             R2, SP
libumejni.so:E8F0E4A6 LDR             R2, [R2] ; R2=0
libumejni.so:E8F0E4A8 STRB            R0, [R1,R2] ; urG[小变量j]字节=urG[大变量j]
libumejni.so:E8F0E4AA LDR             R0, =0x89C ; 第二次变成了赋值第二个字节,应该是根据i对应起来
libumejni.so:E8F0E4AC ADD             R0, SP
libumejni.so:E8F0E4AE LDR             R0, [R0] ; 获取j小变量
libumejni.so:E8F0E4B0 ADDS            R0, #1  ; 小变量j++
libumejni.so:E8F0E4B2 LDR             R3, =0x7A0
libumejni.so:E8F0E4B4 ADD             R3, SP
libumejni.so:E8F0E4B6 STR             R0, [R3] ; 每4个变量i++
libumejni.so:E8F0E4B8 LDR             R0, [SP,#arg_68]
libumejni.so:E8F0E4BA LDR             R1, [R0]
libumejni.so:E8F0E4BC CMP             R1, #0xA
libumejni.so:E8F0E4BE LDR             R2, =0x6A0
libumejni.so:E8F0E4C0 ADD             R2, SP  ; 好像不对,要再观察下逻辑
libumejni.so:E8F0E4C2 LDR             R2, [R2]
libumejni.so:E8F0E4C4 BLT             loc_E8F0E4C8

取完4个字节后计算新四个字节的逻辑代码

libumejni.so:E8F0D74E
libumejni.so:E8F0D74E loc_E8F0D74E            ; 使用urG...和之前新4字节,生成新的4字节和urG后面3个字节
libumejni.so:E8F0D74E LDR             R4, =0x698
libumejni.so:E8F0D750 ADD             R4, SP
libumejni.so:E8F0D752 LDR             R4, [R4] ; R4=0x8C固定值
libumejni.so:E8F0D754 PUSH            {R4}
libumejni.so:E8F0D756 POP             {R1}
libumejni.so:E8F0D758 ADDS            R1, #0x73 ; R1=0xFF 上面相加无意义
libumejni.so:E8F0D75A LDR             R0, =0x898
libumejni.so:E8F0D75C ADD             R0, SP
libumejni.so:E8F0D75E LDR             R0, [R0] ; R0=4,变量i?这次=5
libumejni.so:E8F0D760 LDR             R3, =0x920
libumejni.so:E8F0D762 ADD             R3, SP
libumejni.so:E8F0D764 LDR             R3, [R3] ; 前面计算出的四个字节
libumejni.so:E8F0D766 PUSH            {R3}
libumejni.so:E8F0D768 POP             {R2}
libumejni.so:E8F0D76A EORS            R2, R1  ; R2=R2^R1=0x452933D7^0xFF=0x45293328
libumejni.so:E8F0D76C LSLS            R6, R0, #2 ; R6=R0<<2=0x4<<2=0x10 变量i左移2
libumejni.so:E8F0D76E LDR             R0, =0x7E613907 ; R0=0x7E613907
libumejni.so:E8F0D770 ADDS            R5, R6, R0 ; R5=R6&R0=0x10&0x7E613907=0x7E613917
libumejni.so:E8F0D772 MOV             R12, R4 ; R12=R4=0x8C
libumejni.so:E8F0D774 LDR             R4, =0x4C0
libumejni.so:E8F0D776 ADD             R4, SP
libumejni.so:E8F0D778 STR             R6, [R4] ; R4指向地址=R6=0x10,将i左移2的值存到另一个变量中
libumejni.so:E8F0D77A SUBS            R5, #0x10 ; R5=R5-0x10=0x7E613917-0x10=0x7E613907
libumejni.so:E8F0D77C SUBS            R5, R5, R0 ; R5=R5-R0=7E613907-7E613907=0x0,好像是i左移2位-0x10
libumejni.so:E8F0D77E LDR             R0, =0x9C0
libumejni.so:E8F0D780 ADD             R0, SP  ; R0指向urG...
libumejni.so:E8F0D782 LDR             R4, =0x4B8
libumejni.so:E8F0D784 ADD             R4, SP
libumejni.so:E8F0D786 STR             R0, [R4] ; 将urG8i8...16字节地址放到R4
libumejni.so:E8F0D788 LDRB            R5, [R0,R5] ; R5=R0[R5]=urG...[0x0]=0x75,下标是i<<2-0x10
libumejni.so:E8F0D78A ANDS            R2, R5  ; R2=R2&R5=0x45293328&0x75=0x20,这里的R2是个地址,诡异
libumejni.so:E8F0D78C EORS            R5, R1  ; R5=R5^R1=0x75^0xFF=0x8A
libumejni.so:E8F0D78E ANDS            R5, R3  ; R5=R5&R3=0x8A&0x452933D7=0x82,奇怪了,每次都0x82
libumejni.so:E8F0D790 ORRS            R5, R2  ; R5=R5|R2=0x82|0x20=0xA2
libumejni.so:E8F0D792 LDR             R2, =0x898
libumejni.so:E8F0D794 ADD             R2, SP
libumejni.so:E8F0D796 LDR             R2, [R2] ; R2=0x4,变量i,不是固定值
libumejni.so:E8F0D798 LSLS            R2, R2, #2 ; R2=R2<<2=0x4<<2=0x10,就是i<<2
libumejni.so:E8F0D79A LDR             R3, =0x688
libumejni.so:E8F0D79C ADD             R3, SP
libumejni.so:E8F0D79E STR             R2, [R3] ; set R3=R2=0x10,将i<<2放到一个变量中
libumejni.so:E8F0D7A0 STRB            R5, [R0,R2] ; 设置到urG...16字符的根据i<<2字节=R5=0xA2
libumejni.so:E8F0D7A2 MOV             R4, R12 ; R4=R12=0x8C,将urG的指针放到另一个变量中
libumejni.so:E8F0D7A4 PUSH            {R4}
libumejni.so:E8F0D7A6 POP             {R2}
libumejni.so:E8F0D7A8 ADDS            R2, #0x54
libumejni.so:E8F0D7AA EORS            R2, R1
libumejni.so:E8F0D7AC LDR             R3, =0x69C
libumejni.so:E8F0D7AE ADD             R3, SP
libumejni.so:E8F0D7B0 LDR             R3, [R3]
libumejni.so:E8F0D7B2 NEGS            R3, R3
libumejni.so:E8F0D7B4 SUBS            R3, R3, R6
libumejni.so:E8F0D7B6 SUBS            R3, R0, R3
libumejni.so:E8F0D7B8 LDRB            R5, [R3] ; 取出urg..第二个字节=0x72,取urG[i]的字节
libumejni.so:E8F0D7BA PUSH            {R5}
libumejni.so:E8F0D7BC POP             {R3}
libumejni.so:E8F0D7BE ANDS            R3, R2
libumejni.so:E8F0D7C0 EORS            R5, R1
libumejni.so:E8F0D7C2 MOVS            R6, #0xE0
libumejni.so:E8F0D7C4 ANDS            R5, R6
libumejni.so:E8F0D7C6 ORRS            R5, R3
libumejni.so:E8F0D7C8 LDR             R4, =0x920
libumejni.so:E8F0D7CA ADD             R4, SP
libumejni.so:E8F0D7CC LDRB            R0, [R4,#1] ; 取新4字节第二个0x33
libumejni.so:E8F0D7CE LDR             R3, =0x644
libumejni.so:E8F0D7D0 ADD             R3, SP
libumejni.so:E8F0D7D2 STR             R4, [R3] ; R3=将新4字节地址存到另一个变量,无需太关心这个
libumejni.so:E8F0D7D4 ANDS            R2, R0
libumejni.so:E8F0D7D6 EORS            R0, R1
libumejni.so:E8F0D7D8 ANDS            R0, R6
libumejni.so:E8F0D7DA ORRS            R0, R2
libumejni.so:E8F0D7DC EORS            R0, R5
libumejni.so:E8F0D7DE MOVS            R5, #1
libumejni.so:E8F0D7E0 LDR             R6, =0x4BC
libumejni.so:E8F0D7E2 ADD             R6, SP
libumejni.so:E8F0D7E4 STR             R5, [R6] ; 将固定值R5=1放到另一个变量
libumejni.so:E8F0D7E6 LDR             R3, =0x688
libumejni.so:E8F0D7E8 ADD             R3, SP
libumejni.so:E8F0D7EA LDR             R3, [R3] ; R3=0x10,取出i<<2的值
libumejni.so:E8F0D7EC PUSH            {R3}
libumejni.so:E8F0D7EE POP             {R2}
libumejni.so:E8F0D7F0 ORRS            R2, R5  ; 相当于i<<2+1的样子,目的是作为下标
libumejni.so:E8F0D7F2 LDR             R5, =0x4B8
libumejni.so:E8F0D7F4 ADD             R5, SP
libumejni.so:E8F0D7F6 LDR             R5, [R5] ; R5指向urG...地址,无需关心这个
libumejni.so:E8F0D7F8 STRB            R0, [R5,R2] ; 设置到urG..后面第二个字节,0x41
libumejni.so:E8F0D7FA LDRB            R0, [R4,#2] ; R0=新4字节的第三个=0x29
libumejni.so:E8F0D7FC PUSH            {R0}
libumejni.so:E8F0D7FE POP             {R2}
libumejni.so:E8F0D800 EORS            R2, R1  ; R2=R2^R1=0x29^0xFF=0xD6
libumejni.so:E8F0D802 LDR             R4, =0x69C
libumejni.so:E8F0D804 ADD             R4, SP
libumejni.so:E8F0D806 LDR             R4, [R4] ; R4=0xF1固定值?i<<2
libumejni.so:E8F0D808 MVNS            R6, R4  ; R6=~R4=0xFFFFFFF1=0xE
libumejni.so:E8F0D80A LDR             R4, =0x4C0
libumejni.so:E8F0D80C ADD             R4, SP
libumejni.so:E8F0D80E LDR             R4, [R4] ; R4=0x10,取出i<<2的值
libumejni.so:E8F0D810 SUBS            R6, R6, R4 ; R6=R6-R4=0xE-0x10=0xFFFFFFFE
libumejni.so:E8F0D812 SUBS            R6, R5, R6
libumejni.so:E8F0D814 LDRB            R6, [R6] ; R6指向urG...第三个字节,就是取出urG[i+1]的值
libumejni.so:E8F0D816 ANDS            R2, R6
libumejni.so:E8F0D818 EORS            R6, R1
libumejni.so:E8F0D81A ANDS            R6, R0
libumejni.so:E8F0D81C ORRS            R6, R2
libumejni.so:E8F0D81E MOVS            R0, #2
libumejni.so:E8F0D820 ORRS            R0, R3
libumejni.so:E8F0D822 PUSH            {R5}
libumejni.so:E8F0D824 POP             {R3}
libumejni.so:E8F0D826 STRB            R6, [R3,R0] ; R6 0x6E放到urG...字节后面第三个,就是set urG[i<<2+2]
libumejni.so:E8F0D828 MOVS            R2, #0x2D
libumejni.so:E8F0D82A PUSH            {R1}
libumejni.so:E8F0D82C POP             {R6}
libumejni.so:E8F0D82E EORS            R6, R2  ; R6=R6^R2=0xFF^0x2D=0xD2
libumejni.so:E8F0D830 LDR             R0, =0x4F5ADFB5
libumejni.so:E8F0D832 SUBS            R4, R4, R0
libumejni.so:E8F0D834 LDR             R5, =0x4BC
libumejni.so:E8F0D836 ADD             R5, SP
libumejni.so:E8F0D838 LDR             R5, [R5] ; R5=0x1固定值?
libumejni.so:E8F0D83A ADDS            R4, R3, R4
libumejni.so:E8F0D83C SUBS            R4, #0xD
libumejni.so:E8F0D83E LDRB            R4, [R4,R0] ; R4=ugG[i+2]的值,上面就是迷惑
libumejni.so:E8F0D840 PUSH            {R4}
libumejni.so:E8F0D842 POP             {R0}
libumejni.so:E8F0D844 ANDS            R0, R6
libumejni.so:E8F0D846 EORS            R4, R1
libumejni.so:E8F0D848 ANDS            R4, R2  ; R4=R4&R2=0x91&0x2D=0x1
libumejni.so:E8F0D84A ORRS            R4, R0
libumejni.so:E8F0D84C LDR             R0, =0x644
libumejni.so:E8F0D84E ADD             R0, SP
libumejni.so:E8F0D850 LDR             R0, [R0] ; 指向新4字节,无需关心
libumejni.so:E8F0D852 LDRB            R0, [R0,#3] ; R0=新4字节第四个值
libumejni.so:E8F0D854 ANDS            R6, R0
libumejni.so:E8F0D856 EORS            R1, R0
libumejni.so:E8F0D858 ANDS            R1, R2
libumejni.so:E8F0D85A ORRS            R1, R6
libumejni.so:E8F0D85C EORS            R1, R4
libumejni.so:E8F0D85E MOVS            R0, #3
libumejni.so:E8F0D860 LDR             R2, =0x688
libumejni.so:E8F0D862 ADD             R2, SP
libumejni.so:E8F0D864 LDR             R2, [R2] ; R2=0x10固定值?i<<2
libumejni.so:E8F0D866 ORRS            R0, R2  ; 相当于i<<2+3
libumejni.so:E8F0D868 STRB            R1, [R3,R0] ; 相当于设置urG[i<<2+2]的值
libumejni.so:E8F0D86A LDR             R0, =0x898
libumejni.so:E8F0D86C ADD             R0, SP
libumejni.so:E8F0D86E LDR             R0, [R0] ; R0=0x4固定值?变量i
libumejni.so:E8F0D870 NEGS            R0, R0  ; R0=0xFFFFFFFC
libumejni.so:E8F0D872 SUBS            R0, R5, R0 ; R0=0x5
libumejni.so:E8F0D874 LDR             R2, =0x7A8
libumejni.so:E8F0D876 ADD             R2, SP  ; 变量i++
libumejni.so:E8F0D878 STR             R0, [R2] ; 同步变量i
libumejni.so:E8F0D87A LDR             R0, [SP,#arg_2A8]
libumejni.so:E8F0D87C LDR             R1, [R0]
libumejni.so:E8F0D87E MOVS            R0, #0
libumejni.so:E8F0D880 CMP             R1, #0xA
libumejni.so:E8F0D882 PUSH            {R5}
libumejni.so:E8F0D884 POP             {R3}
libumejni.so:E8F0D886 BLT             loc_E8F0D88C

指向明文的地址

[stack]:FFAA18D4 DCB 0xC0
[stack]:FFAA18D5 DCB 0xBF
[stack]:FFAA18D6 DCB 0x80
[stack]:FFAA18D7 DCB 0xEE

[Landroid/content/pm/Signature;
[anon:libc_malloc]:DDEA7C60 DCB 0x5B ; [
[anon:libc_malloc]:DDEA7C61 DCB 0x4C ; L
[anon:libc_malloc]:DDEA7C62 DCB 0x61 ; a
[anon:libc_malloc]:DDEA7C63 DCB 0x6E ; n
[anon:libc_malloc]:DDEA7C64 DCB 0x64 ; d
[anon:libc_malloc]:DDEA7C65 DCB 0x72 ; r
[anon:libc_malloc]:DDEA7C66 DCB 0x6F ; o
[anon:libc_malloc]:DDEA7C67 DCB 0x69 ; i
[anon:libc_malloc]:DDEA7C68 DCB 0x64 ; d
[anon:libc_malloc]:DDEA7C69 DCB 0x2F ; /
[anon:libc_malloc]:DDEA7C6A DCB 0x63 ; c
[anon:libc_malloc]:DDEA7C6B DCB 0x6F ; o
[anon:libc_malloc]:DDEA7C6C DCB 0x6E ; n
[anon:libc_malloc]:DDEA7C6D DCB 0x74 ; t
[anon:libc_malloc]:DDEA7C6E DCB 0x65 ; e
[anon:libc_malloc]:DDEA7C6F DCB 0x6E ; n
[anon:libc_malloc]:DDEA7C70 DCB 0x74 ; t
[anon:libc_malloc]:DDEA7C71 DCB 0x2F ; /
[anon:libc_malloc]:DDEA7C72 DCB 0x70 ; p
[anon:libc_malloc]:DDEA7C73 DCB 0x6D ; m
[anon:libc_malloc]:DDEA7C74 DCB 0x2F ; /
[anon:libc_malloc]:DDEA7C75 DCB 0x53 ; S
[anon:libc_malloc]:DDEA7C76 DCB 0x69 ; i
[anon:libc_malloc]:DDEA7C77 DCB 0x67 ; g
[anon:libc_malloc]:DDEA7C78 DCB 0x6E ; n
[anon:libc_malloc]:DDEA7C79 DCB 0x61 ; a
[anon:libc_malloc]:DDEA7C7A DCB 0x74 ; t
[anon:libc_malloc]:DDEA7C7B DCB 0x75 ; u
[anon:libc_malloc]:DDEA7C7C DCB 0x72 ; r
[anon:libc_malloc]:DDEA7C7D DCB 0x65 ; e
[anon:libc_malloc]:DDEA7C7E DCB 0x3B ; ;

[anon:libc_malloc]:DDEA7C60 DCB 0x7B ; {
[anon:libc_malloc]:DDEA7C61 DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C62 DCB 0x6C ; l
[anon:libc_malloc]:DDEA7C63 DCB 0x61 ; a
[anon:libc_malloc]:DDEA7C64 DCB 0x73 ; s
[anon:libc_malloc]:DDEA7C65 DCB 0x74 ; t
[anon:libc_malloc]:DDEA7C66 DCB 0x52 ; R
[anon:libc_malloc]:DDEA7C67 DCB 0x65 ; e
[anon:libc_malloc]:DDEA7C68 DCB 0x71 ; q
[anon:libc_malloc]:DDEA7C69 DCB 0x54 ; T
[anon:libc_malloc]:DDEA7C6A DCB 0x69 ; i
[anon:libc_malloc]:DDEA7C6B DCB 0x6D ; m
[anon:libc_malloc]:DDEA7C6C DCB 0x65 ; e
[anon:libc_malloc]:DDEA7C6D DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C6E DCB 0x3A ; :
[anon:libc_malloc]:DDEA7C6F DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C70 DCB 0x33 ; 3
[anon:libc_malloc]:DDEA7C71 DCB 0x36 ; 6
[anon:libc_malloc]:DDEA7C72 DCB 0x35 ; 5
[anon:libc_malloc]:DDEA7C73 DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C74 DCB 0x7D ; }
[anon:libc_malloc]:DDEA7C75 DCB 0x53 ; S
[anon:libc_malloc]:DDEA7C76 DCB 0x69 ; i
[anon:libc_malloc]:DDEA7C77 DCB 0x67 ; g
[anon:libc_malloc]:DDEA7C78 DCB 0x6E ; n
[anon:libc_malloc]:DDEA7C79 DCB 0x61 ; a
[anon:libc_malloc]:DDEA7C7A DCB 0x74 ; t
[anon:libc_malloc]:DDEA7C7B DCB 0x75 ; u
[anon:libc_malloc]:DDEA7C7C DCB 0x72 ; r
[anon:libc_malloc]:DDEA7C7D DCB 0x65 ; e
[anon:libc_malloc]:DDEA7C7E DCB 0x3B ; ;

明文后的地址,存到了这里

[stack]:FFAA18F4 DCB 0x75 ; u
[stack]:FFAA18F5 DCB 0x7C ; |
[stack]:FFAA18F6 DCB 0xEA
[stack]:FFAA18F7 DCB 0xDD

明文长度跟一个应长度X(不知道怎么来的)的差,0x20-0x15=0xB;

然后明文不够X长度的,在后面补差数0xB;

[anon:libc_malloc]:DDEA7C60 DCB 0x7B ; {
[anon:libc_malloc]:DDEA7C61 DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C62 DCB 0x6C ; l
[anon:libc_malloc]:DDEA7C63 DCB 0x61 ; a
[anon:libc_malloc]:DDEA7C64 DCB 0x73 ; s
[anon:libc_malloc]:DDEA7C65 DCB 0x74 ; t
[anon:libc_malloc]:DDEA7C66 DCB 0x52 ; R
[anon:libc_malloc]:DDEA7C67 DCB 0x65 ; e
[anon:libc_malloc]:DDEA7C68 DCB 0x71 ; q
[anon:libc_malloc]:DDEA7C69 DCB 0x54 ; T
[anon:libc_malloc]:DDEA7C6A DCB 0x69 ; i
[anon:libc_malloc]:DDEA7C6B DCB 0x6D ; m
[anon:libc_malloc]:DDEA7C6C DCB 0x65 ; e
[anon:libc_malloc]:DDEA7C6D DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C6E DCB 0x3A ; :
[anon:libc_malloc]:DDEA7C6F DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C70 DCB 0x33 ; 3
[anon:libc_malloc]:DDEA7C71 DCB 0x36 ; 6
[anon:libc_malloc]:DDEA7C72 DCB 0x35 ; 5
[anon:libc_malloc]:DDEA7C73 DCB 0x22 ; "
[anon:libc_malloc]:DDEA7C74 DCB 0x7D ; }
[anon:libc_malloc]:DDEA7C75 DCB  0xB
[anon:libc_malloc]:DDEA7C76 DCB  0xB
[anon:libc_malloc]:DDEA7C77 DCB  0xB
[anon:libc_malloc]:DDEA7C78 DCB  0xB
[anon:libc_malloc]:DDEA7C79 DCB  0xB
[anon:libc_malloc]:DDEA7C7A DCB  0xB
[anon:libc_malloc]:DDEA7C7B DCB  0xB
[anon:libc_malloc]:DDEA7C7C DCB  0xB
[anon:libc_malloc]:DDEA7C7D DCB  0xB
[anon:libc_malloc]:DDEA7C7E DCB  0xB
[anon:libc_malloc]:DDEA7C7F DCB  0xB

补差完后

for 16 in 明文

for 4 in 16

再循环i,放到逻辑中,取出urG...的4个字节

i=0,取出了urG0

[stack]:FFAA1B38 DCB 0x75 ; u
[stack]:FFAA1B39 DCB 0x72 ; r
[stack]:FFAA1B3A DCB 0x47 ; G
[stack]:FFAA1B3B DCB 0x30 ; 0

取4个urG字节的逻辑,实际这个逻辑就是一个urG字符串拷贝而已

libumejni.so:E8F1212C ; START OF FUNCTION CHUNK FOR sub_E8F11A44
libumejni.so:E8F1212C
libumejni.so:E8F1212C loc_E8F1212C
libumejni.so:E8F1212C LDR             R0, =0x894
libumejni.so:E8F1212E ADD             R0, SP
libumejni.so:E8F12130 LDR             R0, [R0] ; 4变量i?
libumejni.so:E8F12132 LSLS            R2, R0, #2 ; 变量i<<2
libumejni.so:E8F12134 LDR             R1, =0x758
libumejni.so:E8F12136 ADD             R1, SP
libumejni.so:E8F12138 LDR             R1, [R1] ; 指向urg...
libumejni.so:E8F1213A LDRB            R0, [R1,R2] ; 取出urG...[i<<2]
libumejni.so:E8F1213C LDR             R1, =0x9C0
libumejni.so:E8F1213E ADD             R1, SP
libumejni.so:E8F12140 LDR             R5, =0x4DC
libumejni.so:E8F12142 ADD             R5, SP
libumejni.so:E8F12144 STR             R1, [R5]
libumejni.so:E8F12146 STRB            R0, [R1,R2] ; 可能是存放结果的地址
libumejni.so:E8F12148 LDR             R4, =0x69C
libumejni.so:E8F1214A ADD             R4, SP
libumejni.so:E8F1214C LDR             R4, [R4] ; R4=0xFFFFFFF1固定值?
libumejni.so:E8F1214E ADDS            R4, #0xE ; R4=0xFFFFFFFF
libumejni.so:E8F12150 LDR             R0, =0x2608858F ; 固定值?
libumejni.so:E8F12152 LDR             R5, =0x688
libumejni.so:E8F12154 ADD             R5, SP
libumejni.so:E8F12156 STR             R0, [R5] ; 将上面固定值0x2608858F放到R5
libumejni.so:E8F12158 PUSH            {R4}
libumejni.so:E8F1215A POP             {R3}
libumejni.so:E8F1215C EORS            R3, R0  ; R3=R3^R0=0xFFFFFFFF^0x2608858F=0xD9F77A70
libumejni.so:E8F1215E MOVS            R1, #1  ; R1=1;
libumejni.so:E8F12160 LDR             R5, =0x644
libumejni.so:E8F12162 ADD             R5, SP
libumejni.so:E8F12164 STR             R1, [R5]
libumejni.so:E8F12166 PUSH            {R3}
libumejni.so:E8F12168 POP             {R0}
libumejni.so:E8F1216A ANDS            R0, R1  ; r0=r0&r1=0xD9F77A70&0x1=0
libumejni.so:E8F1216C PUSH            {R4}
libumejni.so:E8F1216E POP             {R6}
libumejni.so:E8F12170 EORS            R6, R1  ; r6=r6^r1=0xFFFFFFFF^0x1=0xFFFFFFFE
libumejni.so:E8F12172 LDR             R5, =0x4BC
libumejni.so:E8F12174 ADD             R5, SP  ; r5=0xFF固定值?
libumejni.so:E8F12176 STR             R6, [R5]
libumejni.so:E8F12178 LDR             R1, =0x688
libumejni.so:E8F1217A ADD             R1, SP
libumejni.so:E8F1217C LDR             R1, [R1] ; R1=0x2608858F上面存储的
libumejni.so:E8F1217E ANDS            R6, R1  ; r6=r6&r1=0xFFFFFFFE&0x2608858F=0x2608858E
libumejni.so:E8F12180 ORRS            R6, R0  ; r6=r6|r0=0x2608858E|0x0=0x2608858E
libumejni.so:E8F12182 LDR             R5, =0x4C0
libumejni.so:E8F12184 ADD             R5, SP
libumejni.so:E8F12186 STR             R2, [R5] ; 将r2 0x0放到r5
libumejni.so:E8F12188 PUSH            {R2}
libumejni.so:E8F1218A POP             {R1}
libumejni.so:E8F1218C ANDS            R1, R3  ; r1=r1&r3=0x0&0xD9F77A70=0x0
libumejni.so:E8F1218E EORS            R2, R4  ; r2=r2^r4=0x0^0xFFFFFFFF=0xFFFFFFFF
libumejni.so:E8F12190 PUSH            {R2}
libumejni.so:E8F12192 POP             {R0}
libumejni.so:E8F12194 LDR             R5, =0x688
libumejni.so:E8F12196 ADD             R5, SP
libumejni.so:E8F12198 LDR             R5, [R5] ; r5=0x2608858F上面的
libumejni.so:E8F1219A ANDS            R0, R5  ; r0=r0&r5=0xFFFFFFFF&0x2608858F=0x2608858F
libumejni.so:E8F1219C ORRS            R0, R1  ; r0=r0|r1=0x2608858F|0x0=0x2608858F
libumejni.so:E8F1219E EORS            R0, R6  ; r0=r0^r6=0x2608858F^0x2608858E=0x1
libumejni.so:E8F121A0 LDR             R1, =0x4BC
libumejni.so:E8F121A2 ADD             R1, SP
libumejni.so:E8F121A4 LDR             R1, [R1] ; r1=0xFFFFFFFE固定值?
libumejni.so:E8F121A6 ORRS            R2, R1  ; r2=r2|r1=0xFFFFFFFE|0x1=0xFFFFFFFF
libumejni.so:E8F121A8 EORS            R2, R4  ; r2=r2^r4=0xFFFFFFFF^0xFFFFFFFF=0
libumejni.so:E8F121AA LDR             R1, =0x688
libumejni.so:E8F121AC ADD             R1, SP
libumejni.so:E8F121AE LDR             R1, [R1] ; r1=0x2608858F
libumejni.so:E8F121B0 ORRS            R3, R1  ; r3=r3|r1=0xD9F77A70|0x2608858F=0xFFFFFFFF
libumejni.so:E8F121B2 ANDS            R3, R2  ; r3=r3^r2=0x0
libumejni.so:E8F121B4 ORRS            R3, R0  ; r3=r3|r0=0x1
libumejni.so:E8F121B6 LDR             R0, =0x758
libumejni.so:E8F121B8 ADD             R0, SP
libumejni.so:E8F121BA LDR             R0, [R0] ; 指向urG
libumejni.so:E8F121BC LDRB            R0, [R0,R3] ; r0=urG..[r3] 指向第二个
libumejni.so:E8F121BE LDR             R2, =0x4DC
libumejni.so:E8F121C0 ADD             R2, SP
libumejni.so:E8F121C2 LDR             R2, [R2]
libumejni.so:E8F121C4 STRB            R0, [R2,R3] ; 将对应urG取出的第二个追加到结果里
libumejni.so:E8F121C6 MOVS            R0, #2  ; r0=2
libumejni.so:E8F121C8 LDR             R3, =0x4C0
libumejni.so:E8F121CA ADD             R3, SP
libumejni.so:E8F121CC LDR             R3, [R3] ; r3=0,可能是变量i
libumejni.so:E8F121CE ORRS            R0, R3  ; r0=r0|r3=0x2|0x0=0x2
libumejni.so:E8F121D0 LDR             R1, =0x758
libumejni.so:E8F121D2 ADD             R1, SP
libumejni.so:E8F121D4 LDR             R1, [R1] ; 指向urG
libumejni.so:E8F121D6 LDRB            R1, [R1,R0] ; 取出i+2的追加到结果中
libumejni.so:E8F121D8 STRB            R1, [R2,R0]
libumejni.so:E8F121DA MOVS            R0, #3  ; r0=3
libumejni.so:E8F121DC ORRS            R0, R3  ; r0=r0|r3=0x3,应该是变量|0x3,就是+3的感觉
libumejni.so:E8F121DE LDR             R1, =0x758
libumejni.so:E8F121E0 ADD             R1, SP
libumejni.so:E8F121E2 LDR             R1, [R1]
libumejni.so:E8F121E4 LDRB            R1, [R1,R0]
libumejni.so:E8F121E6 STRB            R1, [R2,R0]
libumejni.so:E8F121E8 LDR             R0, =0x894
libumejni.so:E8F121EA ADD             R0, SP
libumejni.so:E8F121EC LDR             R0, [R0]
libumejni.so:E8F121EE NEGS            R0, R0
libumejni.so:E8F121F0 LDR             R1, =0x644
libumejni.so:E8F121F2 ADD             R1, SP
libumejni.so:E8F121F4 LDR             R1, [R1]
libumejni.so:E8F121F6 SUBS            R0, R1, R0
libumejni.so:E8F121F8 BL              loc_E8F13FDC
libumejni.so:E8F121F8 ; END OF FUNCTION CHUNK FOR sub_E8F11A44

i=4,j=0

i<<2-4+j=12

按照urG..[i<<2-4+j],获取4个字节,得到hjfL。

[[stack]:FFAA1A98 DCB 0x68 ; h
[stack]:FFAA1A99 DCB 0x4A ; J
[stack]:FFAA1A9A DCB 0x66 ; f
[stack]:FFAA1A9B DCB 0x4C ; L

上次的四个字节是

[stack]:FFAA1A98 DCB 0xD7
[stack]:FFAA1A99 DCB 0x33 ; 3
[stack]:FFAA1A9A DCB 0x29 ; )
[stack]:FFAA1A9B DCB 0x45 ; E

第一次追加urG的四个字节

[stack]:FFAA1B48 DCB 0xA2
[stack]:FFAA1B49 DCB 0x41 ; A
[stack]:FFAA1B4A DCB 0x6E ; n
[stack]:FFAA1B4B DCB 0x75 ; u

第二次追加的4个字节

[stack]:FFAA1B47 DCB 0x4C ; L
[stack]:FFAA1B48 DCB 0xA2
[stack]:FFAA1B49 DCB 0x41 ; A
[stack]:FFAA1B4A DCB 0x6E ; n
[stack]:FFAA1B4B DCB 0x75 ; u
[stack]:FFAA1B4C DCB 0xCB
[stack]:FFAA1B4D DCB 0x79 ; y
[stack]:FFAA1B4E DCB 0x3C ; <
[stack]:FFAA1B4F DCB 0x1B

然后使用这4个字节进入另一个非base64字符集的逻辑

libumejni.so:E8F15C8E unk_E8F15C8E               ; DATA XREF: sub_E8F1126C+20↑o
libumejni.so:E8F15C8E DCB 0x63 ; c                                       ; libumejni.so:off_E8F115EC↑o ...
libumejni.so:E8F15C8F DCB 0x7C ; |
libumejni.so:E8F15C90 DCB 0x77 ; w
libumejni.so:E8F15C91 DCB 0x7B ; {
libumejni.so:E8F15C92 DCB 0xF2
libumejni.so:E8F15C93 DCB 0x6B ; k
libumejni.so:E8F15C94 DCB 0x6F ; o
libumejni.so:E8F15C95 DCB 0xC5
libumejni.so:E8F15C96 DCB 0x30 ; 0
libumejni.so:E8F15C97 DCB    1
libumejni.so:E8F15C98 DCB 0x67 ; g
libumejni.so:E8F15C99 DCB 0x2B ; +
libumejni.so:E8F15C9A DCB 0xFE
libumejni.so:E8F15C9B DCB 0xD7
libumejni.so:E8F15C9C DCB 0xAB
libumejni.so:E8F15C9D DCB 0x76 ; v
libumejni.so:E8F15C9E DCB 0xCA
libumejni.so:E8F15C9F DCB 0x82
libumejni.so:E8F15CA0 DCB 0xC9
libumejni.so:E8F15CA1 DCB 0x7D ; }
libumejni.so:E8F15CA2 DCB 0xFA
libumejni.so:E8F15CA3 DCB 0x59 ; Y
libumejni.so:E8F15CA4 DCB 0x47 ; G
libumejni.so:E8F15CA5 DCB 0xF0
libumejni.so:E8F15CA6 DCB 0xAD
libumejni.so:E8F15CA7 DCB 0xD4
libumejni.so:E8F15CA8 DCB 0xA2
libumejni.so:E8F15CA9 DCB 0xAF
libumejni.so:E8F15CAA DCB 0x9C
libumejni.so:E8F15CAB DCB 0xA4
libumejni.so:E8F15CAC DCB 0x72 ; r
libumejni.so:E8F15CAD DCB 0xC0
libumejni.so:E8F15CAE DCB 0xB7
libumejni.so:E8F15CAF DCB 0xFD
libumejni.so:E8F15CB0 DCB 0x93
libumejni.so:E8F15CB1 DCB 0x26 ; &
libumejni.so:E8F15CB2 DCB 0x36 ; 6
libumejni.so:E8F15CB3 DCB 0x3F ; ?
libumejni.so:E8F15CB4 DCB 0xF7
libumejni.so:E8F15CB5 DCB 0xCC
libumejni.so:E8F15CB6 DCB 0x34 ; 4
libumejni.so:E8F15CB7 DCB 0xA5
libumejni.so:E8F15CB8 DCB 0xE5
libumejni.so:E8F15CB9 DCB 0xF1
libumejni.so:E8F15CBA DCB 0x71 ; q
libumejni.so:E8F15CBB DCB 0xD8
libumejni.so:E8F15CBC DCB 0x31 ; 1
libumejni.so:E8F15CBD DCB 0x15
libumejni.so:E8F15CBE DCB    4
libumejni.so:E8F15CBF DCB 0xC7
libumejni.so:E8F15CC0 DCB 0x23 ; #
libumejni.so:E8F15CC1 DCB 0xC3
libumejni.so:E8F15CC2 DCB 0x18
libumejni.so:E8F15CC3 DCB 0x96
libumejni.so:E8F15CC4 DCB    5
libumejni.so:E8F15CC5 DCB 0x9A
libumejni.so:E8F15CC6 DCB    7
libumejni.so:E8F15CC7 DCB 0x12
libumejni.so:E8F15CC8 DCB 0x80
libumejni.so:E8F15CC9 DCB 0xE2
libumejni.so:E8F15CCA DCB 0xEB
libumejni.so:E8F15CCB DCB 0x27 ; '
libumejni.so:E8F15CCC DCB 0xB2
libumejni.so:E8F15CCD DCB 0x75 ; u
libumejni.so:E8F15CCE DCB    9
libumejni.so:E8F15CCF DCB 0x83
libumejni.so:E8F15CD0 DCB 0x2C ; ,
libumejni.so:E8F15CD1 DCB 0x1A
libumejni.so:E8F15CD2 DCB 0x1B
libumejni.so:E8F15CD3 DCB 0x6E ; n
libumejni.so:E8F15CD4 DCB 0x5A ; Z
libumejni.so:E8F15CD5 DCB 0xA0
libumejni.so:E8F15CD6 DCB 0x52 ; R
libumejni.so:E8F15CD7 DCB 0x3B ; ;
libumejni.so:E8F15CD8 DCB 0xD6
libumejni.so:E8F15CD9 DCB 0xB3
libumejni.so:E8F15CDA DCB 0x29 ; )
libumejni.so:E8F15CDB DCB 0xE3
libumejni.so:E8F15CDC DCB 0x2F ; /
libumejni.so:E8F15CDD DCB 0x84
libumejni.so:E8F15CDE DCB 0x53 ; S
libumejni.so:E8F15CDF DCB 0xD1
libumejni.so:E8F15CE0 DCB    0
libumejni.so:E8F15CE1 DCB 0xED
libumejni.so:E8F15CE2 DCB 0x20
libumejni.so:E8F15CE3 DCB 0xFC
libumejni.so:E8F15CE4 DCB 0xB1
libumejni.so:E8F15CE5 DCB 0x5B ; [
libumejni.so:E8F15CE6 DCB 0x6A ; j
libumejni.so:E8F15CE7 DCB 0xCB
libumejni.so:E8F15CE8 DCB 0xBE
libumejni.so:E8F15CE9 DCB 0x39 ; 9
libumejni.so:E8F15CEA DCB 0x4A ; J
libumejni.so:E8F15CEB DCB 0x4C ; L
libumejni.so:E8F15CEC DCB 0x58 ; X
libumejni.so:E8F15CED DCB 0xCF
libumejni.so:E8F15CEE DCB 0xD0
libumejni.so:E8F15CEF DCB 0xEF
libumejni.so:E8F15CF0 DCB 0xAA
libumejni.so:E8F15CF1 DCB 0xFB
libumejni.so:E8F15CF2 DCB 0x43 ; C
libumejni.so:E8F15CF3 DCB 0x4D ; M
libumejni.so:E8F15CF4 DCB 0x33 ; 3
libumejni.so:E8F15CF5 DCB 0x85
libumejni.so:E8F15CF6 DCB 0x45 ; E
libumejni.so:E8F15CF7 DCB 0xF9
libumejni.so:E8F15CF8 DCB    2
libumejni.so:E8F15CF9 DCB 0x7F ; 
libumejni.so:E8F15CFA DCB 0x50 ; P
libumejni.so:E8F15CFB DCB 0x3C ; <
libumejni.so:E8F15CFC DCB 0x9F
libumejni.so:E8F15CFD DCB 0xA8
libumejni.so:E8F15CFE DCB 0x51 ; Q
libumejni.so:E8F15CFF DCB 0xA3
libumejni.so:E8F15D00 DCB 0x40 ; @
libumejni.so:E8F15D01 DCB 0x8F
libumejni.so:E8F15D02 DCB 0x92
libumejni.so:E8F15D03 DCB 0x9D
libumejni.so:E8F15D04 DCB 0x38 ; 8
libumejni.so:E8F15D05 DCB 0xF5
libumejni.so:E8F15D06 DCB 0xBC
libumejni.so:E8F15D07 DCB 0xB6
libumejni.so:E8F15D08 DCB 0xDA
libumejni.so:E8F15D09 DCB 0x21 ; !
libumejni.so:E8F15D0A DCB 0x10
libumejni.so:E8F15D0B DCB 0xFF
libumejni.so:E8F15D0C DCB 0xF3
libumejni.so:E8F15D0D DCB 0xD2
libumejni.so:E8F15D0E DCB 0xCD
libumejni.so:E8F15D0F DCB  0xC
libumejni.so:E8F15D10 DCB 0x13
libumejni.so:E8F15D11 DCB 0xEC
libumejni.so:E8F15D12 DCB 0x5F ; _
libumejni.so:E8F15D13 DCB 0x97
libumejni.so:E8F15D14 DCB 0x44 ; D
libumejni.so:E8F15D15 DCB 0x17
libumejni.so:E8F15D16 DCB 0xC4
libumejni.so:E8F15D17 DCB 0xA7
libumejni.so:E8F15D18 DCB 0x7E ; ~
libumejni.so:E8F15D19 DCB 0x3D ; =
libumejni.so:E8F15D1A DCB 0x64 ; d
libumejni.so:E8F15D1B DCB 0x5D ; ]
libumejni.so:E8F15D1C DCB 0x19
libumejni.so:E8F15D1D DCB 0x73 ; s
libumejni.so:E8F15D1E DCB 0x60 ; `
libumejni.so:E8F15D1F DCB 0x81
libumejni.so:E8F15D20 DCB 0x4F ; O
libumejni.so:E8F15D21 DCB 0xDC
libumejni.so:E8F15D22 DCB 0x22 ; "
libumejni.so:E8F15D23 DCB 0x2A ; *
libumejni.so:E8F15D24 DCB 0x90
libumejni.so:E8F15D25 DCB 0x88
libumejni.so:E8F15D26 DCB 0x46 ; F
libumejni.so:E8F15D27 DCB 0xEE
libumejni.so:E8F15D28 DCB 0xB8
libumejni.so:E8F15D29 DCB 0x14
libumejni.so:E8F15D2A DCB 0xDE
libumejni.so:E8F15D2B DCB 0x5E ; ^
libumejni.so:E8F15D2C DCB  0xB
libumejni.so:E8F15D2D DCB 0xDB
libumejni.so:E8F15D2E DCB 0xE0
libumejni.so:E8F15D2F DCB 0x32 ; 2
libumejni.so:E8F15D30 DCB 0x3A ; :
libumejni.so:E8F15D31 DCB  0xA
libumejni.so:E8F15D32 DCB 0x49 ; I
libumejni.so:E8F15D33 DCB    6
libumejni.so:E8F15D34 DCB 0x24 ; $
libumejni.so:E8F15D35 DCB 0x5C ; \
libumejni.so:E8F15D36 DCB 0xC2
libumejni.so:E8F15D37 DCB 0xD3
libumejni.so:E8F15D38 DCB 0xAC
libumejni.so:E8F15D39 DCB 0x62 ; b
libumejni.so:E8F15D3A DCB 0x91
libumejni.so:E8F15D3B DCB 0x95
libumejni.so:E8F15D3C DCB 0xE4
libumejni.so:E8F15D3D DCB 0x79 ; y
libumejni.so:E8F15D3E DCB 0xE7
libumejni.so:E8F15D3F DCB 0xC8
libumejni.so:E8F15D40 DCB 0x37 ; 7
libumejni.so:E8F15D41 DCB 0x6D ; m
libumejni.so:E8F15D42 DCB 0x8D
libumejni.so:E8F15D43 DCB 0xD5
libumejni.so:E8F15D44 DCB 0x4E ; N
libumejni.so:E8F15D45 DCB 0xA9
libumejni.so:E8F15D46 DCB 0x6C ; l
libumejni.so:E8F15D47 DCB 0x56 ; V
libumejni.so:E8F15D48 DCB 0xF4
libumejni.so:E8F15D49 DCB 0xEA
libumejni.so:E8F15D4A DCB 0x65 ; e
libumejni.so:E8F15D4B DCB 0x7A ; z
libumejni.so:E8F15D4C DCB 0xAE
libumejni.so:E8F15D4D DCB    8
libumejni.so:E8F15D4E DCB 0xBA
libumejni.so:E8F15D4F DCB 0x78 ; x
libumejni.so:E8F15D50 DCB 0x25 ; %
libumejni.so:E8F15D51 DCB 0x2E ; .
libumejni.so:E8F15D52 DCB 0x1C
libumejni.so:E8F15D53 DCB 0xA6
libumejni.so:E8F15D54 DCB 0xB4
libumejni.so:E8F15D55 DCB 0xC6
libumejni.so:E8F15D56 DCB 0xE8
libumejni.so:E8F15D57 DCB 0xDD
libumejni.so:E8F15D58 DCB 0x74 ; t
libumejni.so:E8F15D59 DCB 0x1F
libumejni.so:E8F15D5A DCB 0x4B ; K
libumejni.so:E8F15D5B DCB 0xBD
libumejni.so:E8F15D5C DCB 0x8B
libumejni.so:E8F15D5D DCB 0x8A
libumejni.so:E8F15D5E DCB 0x70 ; p
libumejni.so:E8F15D5F DCB 0x3E ; >
libumejni.so:E8F15D60 DCB 0xB5
libumejni.so:E8F15D61 DCB 0x66 ; f
libumejni.so:E8F15D62 DCB 0x48 ; H
libumejni.so:E8F15D63 DCB    3
libumejni.so:E8F15D64 DCB 0xF6
libumejni.so:E8F15D65 DCB  0xE
libumejni.so:E8F15D66 DCB 0x61 ; a
libumejni.so:E8F15D67 DCB 0x35 ; 5
libumejni.so:E8F15D68 DCB 0x57 ; W
libumejni.so:E8F15D69 DCB 0xB9
libumejni.so:E8F15D6A DCB 0x86
libumejni.so:E8F15D6B DCB 0xC1
libumejni.so:E8F15D6C DCB 0x1D
libumejni.so:E8F15D6D DCB 0x9E
libumejni.so:E8F15D6E DCB 0xE1
libumejni.so:E8F15D6F DCB 0xF8
libumejni.so:E8F15D70 DCB 0x98
libumejni.so:E8F15D71 DCB 0x11
libumejni.so:E8F15D72 DCB 0x69 ; i
libumejni.so:E8F15D73 DCB 0xD9
libumejni.so:E8F15D74 DCB 0x8E
libumejni.so:E8F15D75 DCB 0x94
libumejni.so:E8F15D76 DCB 0x9B
libumejni.so:E8F15D77 DCB 0x1E
libumejni.so:E8F15D78 DCB 0x87
libumejni.so:E8F15D79 DCB 0xE9
libumejni.so:E8F15D7A DCB 0xCE
libumejni.so:E8F15D7B DCB 0x55 ; U
libumejni.so:E8F15D7C DCB 0x28 ; (
libumejni.so:E8F15D7D DCB 0xDF
libumejni.so:E8F15D7E DCB 0x8C
libumejni.so:E8F15D7F DCB 0xA1
libumejni.so:E8F15D80 DCB 0x89
libumejni.so:E8F15D81 DCB  0xD
libumejni.so:E8F15D82 DCB 0xBF
libumejni.so:E8F15D83 DCB 0xE6
libumejni.so:E8F15D84 DCB 0x42 ; B
libumejni.so:E8F15D85 DCB 0x68 ; h
libumejni.so:E8F15D86 DCB 0x41 ; A
libumejni.so:E8F15D87 DCB 0x99
libumejni.so:E8F15D88 DCB 0x2D ; -
libumejni.so:E8F15D89 DCB  0xF
libumejni.so:E8F15D8A DCB 0xB0
libumejni.so:E8F15D8B DCB 0x54 ; T
libumejni.so:E8F15D8C DCB 0xBB
libumejni.so:E8F15D8D DCB 0x16

libumejni.so:E8F15D8E unk_E8F15D8E ; DATA XREF: sub_E8F1126C+58↑o
libumejni.so:E8F15D8E DCB 0x8D                                       ; libumejni.so:off_E8F115F4↑o ...
libumejni.so:E8F15D8F DCB    1
libumejni.so:E8F15D90 DCB    2
libumejni.so:E8F15D91 DCB    4
libumejni.so:E8F15D92 DCB    8
libumejni.so:E8F15D93 DCB 0x10
libumejni.so:E8F15D94 DCB 0x20
libumejni.so:E8F15D95 DCB 0x40 ; @
libumejni.so:E8F15D96 DCB 0x80
libumejni.so:E8F15D97 DCB 0x1B
libumejni.so:E8F15D98 DCB 0x36 ; 6
libumejni.so:E8F15D99 DCB 0x6C ; l
libumejni.so:E8F15D9A DCB 0xD8
libumejni.so:E8F15D9B DCB 0xAB
libumejni.so:E8F15D9C DCB 0x4D ; M
libumejni.so:E8F15D9D DCB 0x9A
libumejni.so:E8F15D9E DCB 0x2F ; /
libumejni.so:E8F15D9F DCB 0x5E ; ^
libumejni.so:E8F15DA0 DCB 0xBC
libumejni.so:E8F15DA1 DCB 0x63 ; c
libumejni.so:E8F15DA2 DCB 0xC6
libumejni.so:E8F15DA3 DCB 0x97
libumejni.so:E8F15DA4 DCB 0x35 ; 5
libumejni.so:E8F15DA5 DCB 0x6A ; j
libumejni.so:E8F15DA6 DCB 0xD4
libumejni.so:E8F15DA7 DCB 0xB3
libumejni.so:E8F15DA8 DCB 0x7D ; }
libumejni.so:E8F15DA9 DCB 0xFA
libumejni.so:E8F15DAA DCB 0xEF
libumejni.so:E8F15DAB DCB 0xC5
libumejni.so:E8F15DAC DCB 0x91
libumejni.so:E8F15DAD DCB 0x39 ; 9
libumejni.so:E8F15DAE DCB 0x72 ; r
libumejni.so:E8F15DAF DCB 0xE4
libumejni.so:E8F15DB0 DCB 0xD3
libumejni.so:E8F15DB1 DCB 0xBD
libumejni.so:E8F15DB2 DCB 0x61 ; a
libumejni.so:E8F15DB3 DCB 0xC2
libumejni.so:E8F15DB4 DCB 0x9F
libumejni.so:E8F15DB5 DCB 0x25 ; %
libumejni.so:E8F15DB6 DCB 0x4A ; J
libumejni.so:E8F15DB7 DCB 0x94
libumejni.so:E8F15DB8 DCB 0x33 ; 3
libumejni.so:E8F15DB9 DCB 0x66 ; f
libumejni.so:E8F15DBA DCB 0xCC
libumejni.so:E8F15DBB DCB 0x83
libumejni.so:E8F15DBC DCB 0x1D
libumejni.so:E8F15DBD DCB 0x3A ; :
libumejni.so:E8F15DBE DCB 0x74 ; t
libumejni.so:E8F15DBF DCB 0xE8
libumejni.so:E8F15DC0 DCB 0xCB
libumejni.so:E8F15DC1 DCB 0x8D
libumejni.so:E8F15DC2 DCB    1
libumejni.so:E8F15DC3 DCB    2
libumejni.so:E8F15DC4 DCB    4
libumejni.so:E8F15DC5 DCB    8
libumejni.so:E8F15DC6 DCB 0x10
libumejni.so:E8F15DC7 DCB 0x20
libumejni.so:E8F15DC8 DCB 0x40 ; @
libumejni.so:E8F15DC9 DCB 0x80
libumejni.so:E8F15DCA DCB 0x1B
libumejni.so:E8F15DCB DCB 0x36 ; 6
libumejni.so:E8F15DCC DCB 0x6C ; l
libumejni.so:E8F15DCD DCB 0xD8
libumejni.so:E8F15DCE DCB 0xAB
libumejni.so:E8F15DCF DCB 0x4D ; M
libumejni.so:E8F15DD0 DCB 0x9A
libumejni.so:E8F15DD1 DCB 0x2F ; /
libumejni.so:E8F15DD2 DCB 0x5E ; ^
libumejni.so:E8F15DD3 DCB 0xBC
libumejni.so:E8F15DD4 DCB 0x63 ; c
libumejni.so:E8F15DD5 DCB 0xC6
libumejni.so:E8F15DD6 DCB 0x97
libumejni.so:E8F15DD7 DCB 0x35 ; 5
libumejni.so:E8F15DD8 DCB 0x6A ; j
libumejni.so:E8F15DD9 DCB 0xD4
libumejni.so:E8F15DDA DCB 0xB3
libumejni.so:E8F15DDB DCB 0x7D ; }
libumejni.so:E8F15DDC DCB 0xFA
libumejni.so:E8F15DDD DCB 0xEF
libumejni.so:E8F15DDE DCB 0xC5
libumejni.so:E8F15DDF DCB 0x91
libumejni.so:E8F15DE0 DCB 0x39 ; 9
libumejni.so:E8F15DE1 DCB 0x72 ; r
libumejni.so:E8F15DE2 DCB 0xE4
libumejni.so:E8F15DE3 DCB 0xD3
libumejni.so:E8F15DE4 DCB 0xBD
libumejni.so:E8F15DE5 DCB 0x61 ; a
libumejni.so:E8F15DE6 DCB 0xC2
libumejni.so:E8F15DE7 DCB 0x9F
libumejni.so:E8F15DE8 DCB 0x25 ; %
libumejni.so:E8F15DE9 DCB 0x4A ; J
libumejni.so:E8F15DEA DCB 0x94
libumejni.so:E8F15DEB DCB 0x33 ; 3
libumejni.so:E8F15DEC DCB 0x66 ; f
libumejni.so:E8F15DED DCB 0xCC
libumejni.so:E8F15DEE DCB 0x83
libumejni.so:E8F15DEF DCB 0x1D
libumejni.so:E8F15DF0 DCB 0x3A ; :
libumejni.so:E8F15DF1 DCB 0x74 ; t
libumejni.so:E8F15DF2 DCB 0xE8
libumejni.so:E8F15DF3 DCB 0xCB
libumejni.so:E8F15DF4 DCB 0x8D
libumejni.so:E8F15DF5 DCB    1
libumejni.so:E8F15DF6 DCB    2
libumejni.so:E8F15DF7 DCB    4
libumejni.so:E8F15DF8 DCB    8
libumejni.so:E8F15DF9 DCB 0x10
libumejni.so:E8F15DFA DCB 0x20
libumejni.so:E8F15DFB DCB 0x40 ; @
libumejni.so:E8F15DFC DCB 0x80
libumejni.so:E8F15DFD DCB 0x1B
libumejni.so:E8F15DFE DCB 0x36 ; 6
libumejni.so:E8F15DFF DCB 0x6C ; l
libumejni.so:E8F15E00 DCB 0xD8
libumejni.so:E8F15E01 DCB 0xAB
libumejni.so:E8F15E02 DCB 0x4D ; M
libumejni.so:E8F15E03 DCB 0x9A
libumejni.so:E8F15E04 DCB 0x2F ; /
libumejni.so:E8F15E05 DCB 0x5E ; ^
libumejni.so:E8F15E06 DCB 0xBC
libumejni.so:E8F15E07 DCB 0x63 ; c
libumejni.so:E8F15E08 DCB 0xC6
libumejni.so:E8F15E09 DCB 0x97
libumejni.so:E8F15E0A DCB 0x35 ; 5
libumejni.so:E8F15E0B DCB 0x6A ; j
libumejni.so:E8F15E0C DCB 0xD4
libumejni.so:E8F15E0D DCB 0xB3
libumejni.so:E8F15E0E DCB 0x7D ; }
libumejni.so:E8F15E0F DCB 0xFA
libumejni.so:E8F15E10 DCB 0xEF
libumejni.so:E8F15E11 DCB 0xC5
libumejni.so:E8F15E12 DCB 0x91
libumejni.so:E8F15E13 DCB 0x39 ; 9
libumejni.so:E8F15E14 DCB 0x72 ; r
libumejni.so:E8F15E15 DCB 0xE4
libumejni.so:E8F15E16 DCB 0xD3
libumejni.so:E8F15E17 DCB 0xBD
libumejni.so:E8F15E18 DCB 0x61 ; a
libumejni.so:E8F15E19 DCB 0xC2
libumejni.so:E8F15E1A DCB 0x9F
libumejni.so:E8F15E1B DCB 0x25 ; %
libumejni.so:E8F15E1C DCB 0x4A ; J
libumejni.so:E8F15E1D DCB 0x94
libumejni.so:E8F15E1E DCB 0x33 ; 3
libumejni.so:E8F15E1F DCB 0x66 ; f
libumejni.so:E8F15E20 DCB 0xCC
libumejni.so:E8F15E21 DCB 0x83
libumejni.so:E8F15E22 DCB 0x1D
libumejni.so:E8F15E23 DCB 0x3A ; :
libumejni.so:E8F15E24 DCB 0x74 ; t
libumejni.so:E8F15E25 DCB 0xE8
libumejni.so:E8F15E26 DCB 0xCB
libumejni.so:E8F15E27 DCB 0x8D
libumejni.so:E8F15E28 DCB    1
libumejni.so:E8F15E29 DCB    2
libumejni.so:E8F15E2A DCB    4
libumejni.so:E8F15E2B DCB    8
libumejni.so:E8F15E2C DCB 0x10
libumejni.so:E8F15E2D DCB 0x20
libumejni.so:E8F15E2E DCB 0x40 ; @
libumejni.so:E8F15E2F DCB 0x80
libumejni.so:E8F15E30 DCB 0x1B
libumejni.so:E8F15E31 DCB 0x36 ; 6
libumejni.so:E8F15E32 DCB 0x6C ; l
libumejni.so:E8F15E33 DCB 0xD8
libumejni.so:E8F15E34 DCB 0xAB
libumejni.so:E8F15E35 DCB 0x4D ; M
libumejni.so:E8F15E36 DCB 0x9A
libumejni.so:E8F15E37 DCB 0x2F ; /
libumejni.so:E8F15E38 DCB 0x5E ; ^
libumejni.so:E8F15E39 DCB 0xBC
libumejni.so:E8F15E3A DCB 0x63 ; c
libumejni.so:E8F15E3B DCB 0xC6
libumejni.so:E8F15E3C DCB 0x97
libumejni.so:E8F15E3D DCB 0x35 ; 5
libumejni.so:E8F15E3E DCB 0x6A ; j
libumejni.so:E8F15E3F DCB 0xD4
libumejni.so:E8F15E40 DCB 0xB3
libumejni.so:E8F15E41 DCB 0x7D ; }
libumejni.so:E8F15E42 DCB 0xFA
libumejni.so:E8F15E43 DCB 0xEF
libumejni.so:E8F15E44 DCB 0xC5
libumejni.so:E8F15E45 DCB 0x91
libumejni.so:E8F15E46 DCB 0x39 ; 9
libumejni.so:E8F15E47 DCB 0x72 ; r
libumejni.so:E8F15E48 DCB 0xE4
libumejni.so:E8F15E49 DCB 0xD3
libumejni.so:E8F15E4A DCB 0xBD
libumejni.so:E8F15E4B DCB 0x61 ; a
libumejni.so:E8F15E4C DCB 0xC2
libumejni.so:E8F15E4D DCB 0x9F
libumejni.so:E8F15E4E DCB 0x25 ; %
libumejni.so:E8F15E4F DCB 0x4A ; J
libumejni.so:E8F15E50 DCB 0x94
libumejni.so:E8F15E51 DCB 0x33 ; 3
libumejni.so:E8F15E52 DCB 0x66 ; f
libumejni.so:E8F15E53 DCB 0xCC
libumejni.so:E8F15E54 DCB 0x83
libumejni.so:E8F15E55 DCB 0x1D
libumejni.so:E8F15E56 DCB 0x3A ; :
libumejni.so:E8F15E57 DCB 0x74 ; t
libumejni.so:E8F15E58 DCB 0xE8
libumejni.so:E8F15E59 DCB 0xCB
libumejni.so:E8F15E5A DCB 0x8D
libumejni.so:E8F15E5B DCB    1
libumejni.so:E8F15E5C DCB    2
libumejni.so:E8F15E5D DCB    4
libumejni.so:E8F15E5E DCB    8
libumejni.so:E8F15E5F DCB 0x10
libumejni.so:E8F15E60 DCB 0x20
libumejni.so:E8F15E61 DCB 0x40 ; @
libumejni.so:E8F15E62 DCB 0x80
libumejni.so:E8F15E63 DCB 0x1B
libumejni.so:E8F15E64 DCB 0x36 ; 6
libumejni.so:E8F15E65 DCB 0x6C ; l
libumejni.so:E8F15E66 DCB 0xD8
libumejni.so:E8F15E67 DCB 0xAB
libumejni.so:E8F15E68 DCB 0x4D ; M
libumejni.so:E8F15E69 DCB 0x9A
libumejni.so:E8F15E6A DCB 0x2F ; /
libumejni.so:E8F15E6B DCB 0x5E ; ^
libumejni.so:E8F15E6C DCB 0xBC
libumejni.so:E8F15E6D DCB 0x63 ; c
libumejni.so:E8F15E6E DCB 0xC6
libumejni.so:E8F15E6F DCB 0x97
libumejni.so:E8F15E70 DCB 0x35 ; 5
libumejni.so:E8F15E71 DCB 0x6A ; j
libumejni.so:E8F15E72 DCB 0xD4
libumejni.so:E8F15E73 DCB 0xB3
libumejni.so:E8F15E74 DCB 0x7D ; }
libumejni.so:E8F15E75 DCB 0xFA
libumejni.so:E8F15E76 DCB 0xEF
libumejni.so:E8F15E77 DCB 0xC5
libumejni.so:E8F15E78 DCB 0x91
libumejni.so:E8F15E79 DCB 0x39 ; 9
libumejni.so:E8F15E7A DCB 0x72 ; r
libumejni.so:E8F15E7B DCB 0xE4
libumejni.so:E8F15E7C DCB 0xD3
libumejni.so:E8F15E7D DCB 0xBD
libumejni.so:E8F15E7E DCB 0x61 ; a
libumejni.so:E8F15E7F DCB 0xC2
libumejni.so:E8F15E80 DCB 0x9F
libumejni.so:E8F15E81 DCB 0x25 ; %
libumejni.so:E8F15E82 DCB 0x4A ; J
libumejni.so:E8F15E83 DCB 0x94
libumejni.so:E8F15E84 DCB 0x33 ; 3
libumejni.so:E8F15E85 DCB 0x66 ; f
libumejni.so:E8F15E86 DCB 0xCC
libumejni.so:E8F15E87 DCB 0x83
libumejni.so:E8F15E88 DCB 0x1D
libumejni.so:E8F15E89 DCB 0x3A ; :
libumejni.so:E8F15E8A DCB 0x74 ; t
libumejni.so:E8F15E8B DCB 0xE8
libumejni.so:E8F15E8C DCB 0xCB

开始加密了

0xFB->0xE0

16个字节分4轮,每轮4个字节,每次加密一个字节,最终得到如下结果

[anon:libc_malloc]:DDEA7D60 DCB  0xE
[anon:libc_malloc]:DDEA7D61 DCB 0x50 ; P
[anon:libc_malloc]:DDEA7D62 DCB 0x2B ; +
[anon:libc_malloc]:DDEA7D63 DCB 0x51 ; Q
[anon:libc_malloc]:DDEA7D64 DCB 0x1A
[anon:libc_malloc]:DDEA7D65 DCB 0x4C ; L
[anon:libc_malloc]:DDEA7D66 DCB    0
[anon:libc_malloc]:DDEA7D67 DCB  0xB
[anon:libc_malloc]:DDEA7D68 DCB 0x33 ; 3
[anon:libc_malloc]:DDEA7D69 DCB 0x37 ; 7
[anon:libc_malloc]:DDEA7D6A DCB 0x2D ; -
[anon:libc_malloc]:DDEA7D6B DCB 0x3B ; ;
[anon:libc_malloc]:DDEA7D6C DCB  0xD
[anon:libc_malloc]:DDEA7D6D DCB 0x68 ; h
[anon:libc_malloc]:DDEA7D6E DCB 0x5C ; \
[anon:libc_malloc]:DDEA7D6F DCB 0x6E ; n

在将16字节分4轮,每轮4个字节,使用cw字符集处理每次加密一个字节,最终得到如下结果。

[anon:libc_malloc]:DDEA7D60 DCB 0xAB
[anon:libc_malloc]:DDEA7D61 DCB 0x53 ; S
[anon:libc_malloc]:DDEA7D62 DCB 0xF1
[anon:libc_malloc]:DDEA7D63 DCB 0xD1
[anon:libc_malloc]:DDEA7D64 DCB 0xA2
[anon:libc_malloc]:DDEA7D65 DCB 0x29 ; )
[anon:libc_malloc]:DDEA7D66 DCB 0x63 ; c
[anon:libc_malloc]:DDEA7D67 DCB 0x2B ; +
[anon:libc_malloc]:DDEA7D68 DCB 0xC3
[anon:libc_malloc]:DDEA7D69 DCB 0x9A
[anon:libc_malloc]:DDEA7D6A DCB 0xD8
[anon:libc_malloc]:DDEA7D6B DCB 0xE2
[anon:libc_malloc]:DDEA7D6C DCB 0xD7
[anon:libc_malloc]:DDEA7D6D DCB 0x45 ; E
[anon:libc_malloc]:DDEA7D6E DCB 0x4A ; J
[anon:libc_malloc]:DDEA7D6F DCB 0x9F

接着进入16字节交换位置逻辑,然后带着16字节,进入下面逻辑。

[anon:libc_malloc]:DDEA7D60 DCB 0xAB
[anon:libc_malloc]:DDEA7D61 DCB 0x29 ; )
[anon:libc_malloc]:DDEA7D62 DCB 0xD8
[anon:libc_malloc]:DDEA7D63 DCB 0x9F
[anon:libc_malloc]:DDEA7D64 DCB 0xA2
[anon:libc_malloc]:DDEA7D65 DCB 0x9A
[anon:libc_malloc]:DDEA7D66 DCB 0x4A ; J
[anon:libc_malloc]:DDEA7D67 DCB 0xD1
[anon:libc_malloc]:DDEA7D68 DCB 0xC3
[anon:libc_malloc]:DDEA7D69 DCB 0x45 ; E
[anon:libc_malloc]:DDEA7D6A DCB 0xF1
[anon:libc_malloc]:DDEA7D6B DCB 0x2B ; +
[anon:libc_malloc]:DDEA7D6C DCB 0xD7
[anon:libc_malloc]:DDEA7D6D DCB 0x53 ; S
[anon:libc_malloc]:DDEA7D6E DCB 0x63 ; c
[anon:libc_malloc]:DDEA7D6F DCB 0xE2

经过4轮,每次设置4个字节,得到结果如下:

[anon:libc_malloc]:DDEA7D60 DCB 0x71 ; q
[anon:libc_malloc]:DDEA7D61 DCB 0x15
[anon:libc_malloc]:DDEA7D62 DCB 0x93
[anon:libc_malloc]:DDEA7D63 DCB 0x32 ; 2
[anon:libc_malloc]:DDEA7D64 DCB 0x71 ; q
[anon:libc_malloc]:DDEA7D65 DCB 0x82
[anon:libc_malloc]:DDEA7D66 DCB 0xC4
[anon:libc_malloc]:DDEA7D67 DCB 0x94
[anon:libc_malloc]:DDEA7D68 DCB 0x88
[anon:libc_malloc]:DDEA7D69 DCB 0x6A ; j
[anon:libc_malloc]:DDEA7D6A DCB    2
[anon:libc_malloc]:DDEA7D6B DCB 0xBC
[anon:libc_malloc]:DDEA7D6C DCB 0xC1
[anon:libc_malloc]:DDEA7D6D DCB 0x36 ; 6
[anon:libc_malloc]:DDEA7D6E DCB 0x7F ; 
[anon:libc_malloc]:DDEA7D6F DCB 0x8D

逻辑代码如下:

libumejni.so:E8F10752
libumejni.so:E8F10752 loc_E8F10752            ; 进入大逻辑了?
libumejni.so:E8F10752 LDR             R0, =0x698
libumejni.so:E8F10754 ADD             R0, SP
libumejni.so:E8F10756 LDR             R0, [R0]
libumejni.so:E8F10758 PUSH            {R0}    ; r0=0x8C固定值
libumejni.so:E8F1075A POP             {R2}
libumejni.so:E8F1075C ADDS            R2, #0x73
libumejni.so:E8F1075E ADDS            R0, #0xD
libumejni.so:E8F10760 EORS            R0, R2
libumejni.so:E8F10762 LDR             R5, =0x798
libumejni.so:E8F10764 ADD             R5, SP
libumejni.so:E8F10766 LDR             R5, [R5]
libumejni.so:E8F10768 LDR             R1, =0x7C8
libumejni.so:E8F1076A ADD             R1, SP
libumejni.so:E8F1076C LDR             R1, [R1]
libumejni.so:E8F1076E LSLS            R4, R1, #2
libumejni.so:E8F10770 LDRB            R3, [R5,R4]
libumejni.so:E8F10772 STR             R4, [SP,#arg_1C]
libumejni.so:E8F10774 PUSH            {R5}
libumejni.so:E8F10776 POP             {R6}
libumejni.so:E8F10778 STR             R6, [SP,#arg_18]
libumejni.so:E8F1077A STR             R3, [SP,#arg_3D4]
libumejni.so:E8F1077C PUSH            {R3}
libumejni.so:E8F1077E POP             {R1}
libumejni.so:E8F10780 ANDS            R1, R0
libumejni.so:E8F10782 PUSH            {R3}
libumejni.so:E8F10784 POP             {R5}
libumejni.so:E8F10786 EORS            R5, R2
libumejni.so:E8F10788 STR             R5, [SP,#arg_3D0]
libumejni.so:E8F1078A PUSH            {R2}
libumejni.so:E8F1078C POP             {R3}
libumejni.so:E8F1078E MOVS            R2, #0x66
libumejni.so:E8F10790 MVNS            R2, R2
libumejni.so:E8F10792 MOV             R12, R3
libumejni.so:E8F10794 LDR             R3, =0x644
libumejni.so:E8F10796 ADD             R3, SP
libumejni.so:E8F10798 STR             R2, [R3]
libumejni.so:E8F1079A PUSH            {R5}
libumejni.so:E8F1079C POP             {R2}
libumejni.so:E8F1079E LDR             R5, =0x644
libumejni.so:E8F107A0 ADD             R5, SP
libumejni.so:E8F107A2 LDR             R5, [R5]
libumejni.so:E8F107A4 ANDS            R2, R5
libumejni.so:E8F107A6 ORRS            R2, R1
libumejni.so:E8F107A8 ADDS            R1, R6, R4
libumejni.so:E8F107AA LDR             R4, =0x648
libumejni.so:E8F107AC ADD             R4, SP
libumejni.so:E8F107AE STR             R1, [R4]
libumejni.so:E8F107B0 LDRB            R6, [R1,#1]
libumejni.so:E8F107B2 STR             R6, [SP,#arg_24]
libumejni.so:E8F107B4 ANDS            R0, R6
libumejni.so:E8F107B6 PUSH            {R6}
libumejni.so:E8F107B8 POP             {R1}
libumejni.so:E8F107BA MOV             R3, R12
libumejni.so:E8F107BC EORS            R1, R3
libumejni.so:E8F107BE STR             R1, [SP,#arg_20]
libumejni.so:E8F107C0 ANDS            R5, R1
libumejni.so:E8F107C2 ORRS            R5, R0
libumejni.so:E8F107C4 EORS            R5, R2
libumejni.so:E8F107C6 LDR             R6, =0x644
libumejni.so:E8F107C8 ADD             R6, SP
libumejni.so:E8F107CA STR             R5, [R6]
libumejni.so:E8F107CC LDR             R0, =0x698
libumejni.so:E8F107CE ADD             R0, SP
libumejni.so:E8F107D0 LDR             R0, [R0]
libumejni.so:E8F107D2 ADDS            R0, #0x54
libumejni.so:E8F107D4 EORS            R0, R3
libumejni.so:E8F107D6 PUSH            {R5}
libumejni.so:E8F107D8 POP             {R1}
libumejni.so:E8F107DA ANDS            R1, R0
libumejni.so:E8F107DC PUSH            {R5}
libumejni.so:E8F107DE POP             {R2}
libumejni.so:E8F107E0 EORS            R5, R3
libumejni.so:E8F107E2 LDR             R6, =0x4C0
libumejni.so:E8F107E4 ADD             R6, SP
libumejni.so:E8F107E6 STR             R5, [R6]
libumejni.so:E8F107E8 MOVS            R2, #0x1F
libumejni.so:E8F107EA MVNS            R4, R2
libumejni.so:E8F107EC PUSH            {R5}
libumejni.so:E8F107EE POP             {R2}
libumejni.so:E8F107F0 ANDS            R2, R4
libumejni.so:E8F107F2 ORRS            R2, R1
libumejni.so:E8F107F4 LDR             R6, =0x648
libumejni.so:E8F107F6 ADD             R6, SP
libumejni.so:E8F107F8 LDR             R6, [R6]
libumejni.so:E8F107FA LDRB            R1, [R6,#2]
libumejni.so:E8F107FC STR             R1, [SP,#arg_3C4]
libumejni.so:E8F107FE ANDS            R0, R1
libumejni.so:E8F10800 EORS            R1, R3
libumejni.so:E8F10802 STR             R1, [SP,#arg_3C0]
libumejni.so:E8F10804 ANDS            R4, R1
libumejni.so:E8F10806 ORRS            R4, R0
libumejni.so:E8F10808 EORS            R4, R2
libumejni.so:E8F1080A STR             R4, [SP,#arg_2C]
libumejni.so:E8F1080C MOVS            R5, #0x59
libumejni.so:E8F1080E PUSH            {R3}
libumejni.so:E8F10810 POP             {R0}
libumejni.so:E8F10812 EORS            R0, R5
libumejni.so:E8F10814 PUSH            {R4}
libumejni.so:E8F10816 POP             {R1}
libumejni.so:E8F10818 ANDS            R1, R0
libumejni.so:E8F1081A EORS            R4, R3
libumejni.so:E8F1081C STR             R4, [SP,#arg_28]
libumejni.so:E8F1081E PUSH            {R4}
libumejni.so:E8F10820 POP             {R2}
libumejni.so:E8F10822 ANDS            R2, R5
libumejni.so:E8F10824 ORRS            R2, R1
libumejni.so:E8F10826 LDRB            R1, [R6,#3]
libumejni.so:E8F10828 STR             R1, [SP,#arg_3CC]
libumejni.so:E8F1082A ANDS            R0, R1
libumejni.so:E8F1082C LDR             R4, =0x688
libumejni.so:E8F1082E ADD             R4, SP
libumejni.so:E8F10830 STR             R3, [R4]
libumejni.so:E8F10832 EORS            R1, R3
libumejni.so:E8F10834 STR             R1, [SP,#arg_3C8]
libumejni.so:E8F10836 ANDS            R5, R1
libumejni.so:E8F10838 ORRS            R5, R0
libumejni.so:E8F1083A EORS            R5, R2
libumejni.so:E8F1083C PUSH            {R5}
libumejni.so:E8F1083E POP             {R0}
libumejni.so:E8F10840 LDR             R1, [SP,#arg_3D0]
libumejni.so:E8F10842 ANDS            R0, R1
libumejni.so:E8F10844 PUSH            {R5}
libumejni.so:E8F10846 POP             {R2}
libumejni.so:E8F10848 EORS            R2, R3
libumejni.so:E8F1084A STR             R2, [SP,#arg_14]
libumejni.so:E8F1084C LDR             R1, [SP,#arg_3D4]
libumejni.so:E8F1084E ANDS            R1, R2
libumejni.so:E8F10850 ORRS            R1, R0
libumejni.so:E8F10852 MOVS            R0, #0xFF
libumejni.so:E8F10854 LDR             R4, =0x4B8
libumejni.so:E8F10856 ADD             R4, SP
libumejni.so:E8F10858 STR             R0, [R4]
libumejni.so:E8F1085A LDR             R2, =0x644
libumejni.so:E8F1085C ADD             R2, SP
libumejni.so:E8F1085E LDR             R2, [R2]
libumejni.so:E8F10860 ANDS            R2, R0
libumejni.so:E8F10862 STR             R2, [SP,#arg_10]
libumejni.so:E8F10864 LSRS            R0, R2, #7
libumejni.so:E8F10866 LDR             R2, =0xC7B8B2AC
libumejni.so:E8F10868 NEGS            R6, R2
libumejni.so:E8F1086A SUBS            R0, R6, R0
libumejni.so:E8F1086C ADDS            R2, R0, R2
libumejni.so:E8F1086E LDR             R6, =0x69C
libumejni.so:E8F10870 ADD             R6, SP
libumejni.so:E8F10872 LDR             R6, [R6]
libumejni.so:E8F10874 ADDS            R6, #0xE
libumejni.so:E8F10876 MOVS            R3, #0x1B
libumejni.so:E8F10878 EORS            R3, R6
libumejni.so:E8F1087A LDR             R4, =0x4BC
libumejni.so:E8F1087C ADD             R4, SP
libumejni.so:E8F1087E STR             R3, [R4]
libumejni.so:E8F10880 PUSH            {R2}
libumejni.so:E8F10882 POP             {R0}
libumejni.so:E8F10884 EORS            R0, R3
libumejni.so:E8F10886 ANDS            R0, R2
libumejni.so:E8F10888 LDR             R2, =unk_1722011C
libumejni.so:E8F1088A EORS            R2, R6
libumejni.so:E8F1088C PUSH            {R0}
libumejni.so:E8F1088E POP             {R3}
libumejni.so:E8F10890 ANDS            R3, R2
libumejni.so:E8F10892 EORS            R0, R6
libumejni.so:E8F10894 STR             R6, [SP,#arg_3BC]
libumejni.so:E8F10896 MOVS            R4, #0x1C
libumejni.so:E8F10898 STR             R4, [SP,#arg_C]
libumejni.so:E8F1089A ANDS            R0, R4
libumejni.so:E8F1089C ORRS            R0, R3
libumejni.so:E8F1089E LDR             R3, [SP,#arg_10]
libumejni.so:E8F108A0 LSLS            R4, R3, #1
libumejni.so:E8F108A2 ANDS            R2, R4
libumejni.so:E8F108A4 EORS            R4, R6
libumejni.so:E8F108A6 LDR             R3, [SP,#arg_C]
libumejni.so:E8F108A8 ANDS            R4, R3
libumejni.so:E8F108AA ORRS            R4, R2
libumejni.so:E8F108AC EORS            R4, R0
libumejni.so:E8F108AE PUSH            {R4}
libumejni.so:E8F108B0 POP             {R0}
libumejni.so:E8F108B2 LDR             R2, =0x688
libumejni.so:E8F108B4 ADD             R2, SP
libumejni.so:E8F108B6 LDR             R2, [R2]
libumejni.so:E8F108B8 EORS            R0, R2
libumejni.so:E8F108BA ANDS            R0, R1
libumejni.so:E8F108BC EORS            R1, R2
libumejni.so:E8F108BE PUSH            {R2}
libumejni.so:E8F108C0 POP             {R6}
libumejni.so:E8F108C2 ANDS            R1, R4
libumejni.so:E8F108C4 ORRS            R1, R0
libumejni.so:E8F108C6 LDR             R0, [SP,#arg_1C]
libumejni.so:E8F108C8 LDR             R2, [SP,#arg_18]
libumejni.so:E8F108CA STRB            R1, [R2,R0]
libumejni.so:E8F108CC LDR             R0, =0x698
libumejni.so:E8F108CE ADD             R0, SP
libumejni.so:E8F108D0 LDR             R0, [R0]
libumejni.so:E8F108D2 ADDS            R0, #0x5A
libumejni.so:E8F108D4 EORS            R0, R6
libumejni.so:E8F108D6 ANDS            R5, R0
libumejni.so:E8F108D8 MOVS            R1, #0x19
libumejni.so:E8F108DA MVNS            R1, R1
libumejni.so:E8F108DC LDR             R2, [SP,#arg_14]
libumejni.so:E8F108DE ANDS            R2, R1
libumejni.so:E8F108E0 ORRS            R2, R5
libumejni.so:E8F108E2 PUSH            {R2}
libumejni.so:E8F108E4 POP             {R4}
libumejni.so:E8F108E6 LDR             R3, [SP,#arg_24]
libumejni.so:E8F108E8 ANDS            R0, R3
libumejni.so:E8F108EA LDR             R2, [SP,#arg_20]
libumejni.so:E8F108EC ANDS            R1, R2
libumejni.so:E8F108EE ORRS            R1, R0
libumejni.so:E8F108F0 EORS            R1, R4
libumejni.so:E8F108F2 MOVS            R0, #5
libumejni.so:E8F108F4 PUSH            {R6}
libumejni.so:E8F108F6 POP             {R5}
libumejni.so:E8F108F8 PUSH            {R5}
libumejni.so:E8F108FA POP             {R4}
libumejni.so:E8F108FC EORS            R4, R0
libumejni.so:E8F108FE STR             R4, [SP,#arg_1C]
libumejni.so:E8F10900 PUSH            {R0}
libumejni.so:E8F10902 POP             {R6}
libumejni.so:E8F10904 STR             R6, [SP,#arg_18]
libumejni.so:E8F10906 PUSH            {R1}
libumejni.so:E8F10908 POP             {R0}
libumejni.so:E8F1090A ANDS            R0, R4
libumejni.so:E8F1090C EORS            R1, R5
libumejni.so:E8F1090E ANDS            R1, R6
libumejni.so:E8F10910 ORRS            R1, R0
libumejni.so:E8F10912 LDR             R0, [SP,#arg_3C4]
libumejni.so:E8F10914 ANDS            R2, R0
libumejni.so:E8F10916 LDR             R0, [SP,#arg_3C0]
libumejni.so:E8F10918 ANDS            R3, R0
libumejni.so:E8F1091A ORRS            R3, R2
libumejni.so:E8F1091C LDR             R0, =0x4B8
libumejni.so:E8F1091E ADD             R0, SP
libumejni.so:E8F10920 LDR             R0, [R0]
libumejni.so:E8F10922 ANDS            R3, R0
libumejni.so:E8F10924 LSLS            R4, R3, #1
libumejni.so:E8F10926 PUSH            {R3}
libumejni.so:E8F10928 POP             {R5}
libumejni.so:E8F1092A LDR             R3, =0x5D866783
libumejni.so:E8F1092C LDR             R2, [SP,#arg_3BC]
libumejni.so:E8F1092E EORS            R3, R2
libumejni.so:E8F10930 PUSH            {R4}
libumejni.so:E8F10932 POP             {R0}
libumejni.so:E8F10934 ANDS            R0, R3
libumejni.so:E8F10936 EORS            R4, R2
libumejni.so:E8F10938 MOVS            R6, #0x83
libumejni.so:E8F1093A STR             R6, [SP,#arg_20]
libumejni.so:E8F1093C ANDS            R4, R6
libumejni.so:E8F1093E ORRS            R4, R0
libumejni.so:E8F10940 LSRS            R0, R5, #7
libumejni.so:E8F10942 STR             R0, [SP,#arg_24]
libumejni.so:E8F10944 LDR             R6, =0x42F7F125
libumejni.so:E8F10946 NEGS            R0, R6
libumejni.so:E8F10948 LDR             R5, [SP,#arg_24]
libumejni.so:E8F1094A SUBS            R0, R0, R5
libumejni.so:E8F1094C ADDS            R5, R0, R6
libumejni.so:E8F1094E EORS            R5, R2
libumejni.so:E8F10950 LDR             R0, =0x4BC
libumejni.so:E8F10952 ADD             R0, SP
libumejni.so:E8F10954 LDR             R0, [R0]
libumejni.so:E8F10956 ORRS            R5, R0
libumejni.so:E8F10958 EORS            R5, R2
libumejni.so:E8F1095A LDR             R0, =unk_F3C6633F
libumejni.so:E8F1095C ORRS            R0, R2
libumejni.so:E8F1095E ANDS            R0, R5
libumejni.so:E8F10960 ANDS            R3, R0
libumejni.so:E8F10962 EORS            R0, R2
libumejni.so:E8F10964 PUSH            {R2}
libumejni.so:E8F10966 POP             {R5}
libumejni.so:E8F10968 LDR             R2, [SP,#arg_20]
libumejni.so:E8F1096A ANDS            R0, R2
libumejni.so:E8F1096C ORRS            R0, R3
libumejni.so:E8F1096E EORS            R0, R4
libumejni.so:E8F10970 LDR             R3, [SP,#arg_1C]
libumejni.so:E8F10972 ANDS            R3, R0
libumejni.so:E8F10974 LDR             R2, =0x688
libumejni.so:E8F10976 ADD             R2, SP
libumejni.so:E8F10978 LDR             R2, [R2]
libumejni.so:E8F1097A EORS            R0, R2
libumejni.so:E8F1097C LDR             R2, [SP,#arg_18]
libumejni.so:E8F1097E ANDS            R0, R2
libumejni.so:E8F10980 ORRS            R0, R3
libumejni.so:E8F10982 EORS            R0, R1
libumejni.so:E8F10984 LDR             R1, =0x648
libumejni.so:E8F10986 ADD             R1, SP
libumejni.so:E8F10988 LDR             R1, [R1]
libumejni.so:E8F1098A STRB            R0, [R1,#1]
libumejni.so:E8F1098C LDR             R0, [SP,#arg_3CC]
libumejni.so:E8F1098E LDR             R1, [SP,#arg_3C0]
libumejni.so:E8F10990 ANDS            R1, R0
libumejni.so:E8F10992 LDR             R0, [SP,#arg_3C8]
libumejni.so:E8F10994 LDR             R2, [SP,#arg_3C4]
libumejni.so:E8F10996 ANDS            R2, R0
libumejni.so:E8F10998 ORRS            R2, R1
libumejni.so:E8F1099A LDR             R0, =0x4B8
libumejni.so:E8F1099C ADD             R0, SP
libumejni.so:E8F1099E LDR             R0, [R0]
libumejni.so:E8F109A0 ANDS            R2, R0
libumejni.so:E8F109A2 LSLS            R1, R2, #1
libumejni.so:E8F109A4 PUSH            {R2}
libumejni.so:E8F109A6 POP             {R4}
libumejni.so:E8F109A8 LDR             R2, =0x6E6D25EE
libumejni.so:E8F109AA PUSH            {R5}
libumejni.so:E8F109AC POP             {R3}
libumejni.so:E8F109AE EORS            R2, R3
libumejni.so:E8F109B0 PUSH            {R1}
libumejni.so:E8F109B2 POP             {R0}
libumejni.so:E8F109B4 ANDS            R0, R2
libumejni.so:E8F109B6 EORS            R1, R3
libumejni.so:E8F109B8 PUSH            {R3}
libumejni.so:E8F109BA POP             {R6}
libumejni.so:E8F109BC MOVS            R3, #0xEE
libumejni.so:E8F109BE ANDS            R1, R3
libumejni.so:E8F109C0 ORRS            R1, R0
libumejni.so:E8F109C2 LSRS            R0, R4, #7
libumejni.so:E8F109C4 LDR             R4, =0x5A5E028F
libumejni.so:E8F109C6 NEGS            R5, R4
libumejni.so:E8F109C8 SUBS            R0, R5, R0
libumejni.so:E8F109CA ADDS            R4, R0, R4
libumejni.so:E8F109CC PUSH            {R6}
libumejni.so:E8F109CE POP             {R5}
libumejni.so:E8F109D0 EORS            R4, R5
libumejni.so:E8F109D2 LDR             R0, =0x4BC
libumejni.so:E8F109D4 ADD             R0, SP
libumejni.so:E8F109D6 LDR             R0, [R0]
libumejni.so:E8F109D8 ORRS            R4, R0
libumejni.so:E8F109DA EORS            R4, R5
libumejni.so:E8F109DC LDR             R0, =0x6CFB1414
libumejni.so:E8F109DE ORRS            R0, R5
libumejni.so:E8F109E0 ANDS            R0, R4
libumejni.so:E8F109E2 ANDS            R2, R0
libumejni.so:E8F109E4 EORS            R0, R5
libumejni.so:E8F109E6 ANDS            R0, R3
libumejni.so:E8F109E8 ORRS            R0, R2
libumejni.so:E8F109EA EORS            R0, R1
libumejni.so:E8F109EC MOVS            R6, #0x4E
libumejni.so:E8F109EE LDR             R1, =0x688
libumejni.so:E8F109F0 ADD             R1, SP
libumejni.so:E8F109F2 LDR             R1, [R1]
libumejni.so:E8F109F4 PUSH            {R1}
libumejni.so:E8F109F6 POP             {R2}
libumejni.so:E8F109F8 EORS            R2, R6
libumejni.so:E8F109FA PUSH            {R0}
libumejni.so:E8F109FC POP             {R3}
libumejni.so:E8F109FE ANDS            R3, R2
libumejni.so:E8F10A00 EORS            R0, R1
libumejni.so:E8F10A02 ANDS            R0, R6
libumejni.so:E8F10A04 ORRS            R0, R3
libumejni.so:E8F10A06 LDR             R4, =0x698
libumejni.so:E8F10A08 ADD             R4, SP
libumejni.so:E8F10A0A LDR             R4, [R4]
libumejni.so:E8F10A0C ADDS            R4, #0x1D
libumejni.so:E8F10A0E EORS            R4, R1
libumejni.so:E8F10A10 LDR             R1, =0x644
libumejni.so:E8F10A12 ADD             R1, SP
libumejni.so:E8F10A14 LDR             R1, [R1]
libumejni.so:E8F10A16 ANDS            R1, R4
libumejni.so:E8F10A18 MOVS            R3, #0x56
libumejni.so:E8F10A1A MVNS            R3, R3
libumejni.so:E8F10A1C LDR             R5, =0x4C0
libumejni.so:E8F10A1E ADD             R5, SP
libumejni.so:E8F10A20 LDR             R5, [R5]
libumejni.so:E8F10A22 ANDS            R5, R3
libumejni.so:E8F10A24 ORRS            R5, R1
libumejni.so:E8F10A26 LDR             R1, =0x4C0
libumejni.so:E8F10A28 ADD             R1, SP
libumejni.so:E8F10A2A STR             R5, [R1]
libumejni.so:E8F10A2C LDR             R1, [SP,#arg_3CC]
libumejni.so:E8F10A2E ANDS            R4, R1
libumejni.so:E8F10A30 LDR             R5, [SP,#arg_3C8]
libumejni.so:E8F10A32 ANDS            R3, R5
libumejni.so:E8F10A34 ORRS            R3, R4
libumejni.so:E8F10A36 LDR             R4, =0x4C0
libumejni.so:E8F10A38 ADD             R4, SP
libumejni.so:E8F10A3A LDR             R4, [R4]
libumejni.so:E8F10A3C EORS            R3, R4
libumejni.so:E8F10A3E ANDS            R2, R3
libumejni.so:E8F10A40 LDR             R4, =0x688
libumejni.so:E8F10A42 ADD             R4, SP
libumejni.so:E8F10A44 LDR             R4, [R4]
libumejni.so:E8F10A46 EORS            R3, R4
libumejni.so:E8F10A48 ANDS            R3, R6
libumejni.so:E8F10A4A ORRS            R3, R2
libumejni.so:E8F10A4C EORS            R3, R0
libumejni.so:E8F10A4E LDR             R0, =0x648
libumejni.so:E8F10A50 ADD             R0, SP
libumejni.so:E8F10A52 LDR             R0, [R0]
libumejni.so:E8F10A54 STRB            R3, [R0,#2]
libumejni.so:E8F10A56 LDR             R0, [SP,#arg_3D0]
libumejni.so:E8F10A58 ANDS            R0, R1
libumejni.so:E8F10A5A LDR             R1, [SP,#arg_3D4]
libumejni.so:E8F10A5C ANDS            R5, R1
libumejni.so:E8F10A5E ORRS            R5, R0
libumejni.so:E8F10A60 LDR             R0, =0x4B8
libumejni.so:E8F10A62 ADD             R0, SP
libumejni.so:E8F10A64 LDR             R0, [R0]
libumejni.so:E8F10A66 ANDS            R5, R0
libumejni.so:E8F10A68 LSLS            R0, R5, #1
libumejni.so:E8F10A6A PUSH            {R5}
libumejni.so:E8F10A6C POP             {R4}
libumejni.so:E8F10A6E LDR             R2, =0xB8039EE9
libumejni.so:E8F10A70 LDR             R5, [SP,#arg_3BC]
libumejni.so:E8F10A72 EORS            R2, R5
libumejni.so:E8F10A74 PUSH            {R0}
libumejni.so:E8F10A76 POP             {R1}
libumejni.so:E8F10A78 ANDS            R1, R2
libumejni.so:E8F10A7A EORS            R0, R5
libumejni.so:E8F10A7C MOVS            R3, #0xE9
libumejni.so:E8F10A7E ANDS            R0, R3
libumejni.so:E8F10A80 ORRS            R0, R1
libumejni.so:E8F10A82 LSRS            R1, R4, #7
libumejni.so:E8F10A84 NEGS            R4, R1
libumejni.so:E8F10A86 EORS            R4, R5
libumejni.so:E8F10A88 LDR             R1, =0x4BC
libumejni.so:E8F10A8A ADD             R1, SP
libumejni.so:E8F10A8C LDR             R1, [R1]
libumejni.so:E8F10A8E ORRS            R4, R1
libumejni.so:E8F10A90 EORS            R4, R5
libumejni.so:E8F10A92 LDR             R1, =unk_22A3B1E6
libumejni.so:E8F10A94 ORRS            R1, R5
libumejni.so:E8F10A96 ANDS            R1, R4
libumejni.so:E8F10A98 ANDS            R2, R1
libumejni.so:E8F10A9A EORS            R1, R5
libumejni.so:E8F10A9C ANDS            R1, R3
libumejni.so:E8F10A9E ORRS            R1, R2
libumejni.so:E8F10AA0 EORS            R1, R0
libumejni.so:E8F10AA2 LDR             R0, =0x698
libumejni.so:E8F10AA4 ADD             R0, SP
libumejni.so:E8F10AA6 LDR             R0, [R0]
libumejni.so:E8F10AA8 ADDS            R0, #0x21
libumejni.so:E8F10AAA LDR             R3, =0x688
libumejni.so:E8F10AAC ADD             R3, SP
libumejni.so:E8F10AAE LDR             R3, [R3]
libumejni.so:E8F10AB0 EORS            R0, R3
libumejni.so:E8F10AB2 PUSH            {R1}
libumejni.so:E8F10AB4 POP             {R2}
libumejni.so:E8F10AB6 ANDS            R2, R0
libumejni.so:E8F10AB8 EORS            R1, R3
libumejni.so:E8F10ABA MOVS            R3, #0xAD
libumejni.so:E8F10ABC ANDS            R1, R3
libumejni.so:E8F10ABE ORRS            R1, R2
libumejni.so:E8F10AC0 LDR             R2, [SP,#arg_2C]
libumejni.so:E8F10AC2 ANDS            R0, R2
libumejni.so:E8F10AC4 LDR             R2, [SP,#arg_28]
libumejni.so:E8F10AC6 ANDS            R2, R3
libumejni.so:E8F10AC8 ORRS            R2, R0
libumejni.so:E8F10ACA EORS            R2, R1
libumejni.so:E8F10ACC LDR             R0, =0x648
libumejni.so:E8F10ACE ADD             R0, SP
libumejni.so:E8F10AD0 LDR             R0, [R0]
libumejni.so:E8F10AD2 STRB            R2, [R0,#3]
libumejni.so:E8F10AD4 LDR             R0, =0x8B4
libumejni.so:E8F10AD6 ADD             R0, SP
libumejni.so:E8F10AD8 LDR             R0, [R0]
libumejni.so:E8F10ADA ADDS            R0, #1
libumejni.so:E8F10ADC BL              loc_E8F12E5E
libumejni.so:E8F10ADC ; End of function sub_E8F10734
libumejni.so:E8F10ADC

在经过urg176,分4轮,每轮一个字节进行处理后得到如下结果:

[anon:libc_malloc]:DDEA7D60 DCB 0xD3
[anon:libc_malloc]:DDEA7D61 DCB 0x54 ; T
[anon:libc_malloc]:DDEA7D62 DCB 0xFD
[anon:libc_malloc]:DDEA7D63 DCB 0x47 ; G
[anon:libc_malloc]:DDEA7D64 DCB 0xBA
[anon:libc_malloc]:DDEA7D65 DCB 0xFB
[anon:libc_malloc]:DDEA7D66 DCB 0xF8
[anon:libc_malloc]:DDEA7D67 DCB 0x8F
[anon:libc_malloc]:DDEA7D68 DCB    1
[anon:libc_malloc]:DDEA7D69 DCB 0x70 ; p
[anon:libc_malloc]:DDEA7D6A DCB 0x7A ; z
[anon:libc_malloc]:DDEA7D6B DCB 0xF1
[anon:libc_malloc]:DDEA7D6C DCB 0x20
[anon:libc_malloc]:DDEA7D6D DCB 0x66 ; f
[anon:libc_malloc]:DDEA7D6E DCB 0x61 ; a
[anon:libc_malloc]:DDEA7D6F DCB 0x8C

接着又进行cw逻辑,明文16字节处理,得到如下结果:

[anon:libc_malloc]:DDEA7D60 DCB 0x66 ; f
[anon:libc_malloc]:DDEA7D61 DCB 0x20
[anon:libc_malloc]:DDEA7D62 DCB 0x54 ; T
[anon:libc_malloc]:DDEA7D63 DCB 0xA0
[anon:libc_malloc]:DDEA7D64 DCB 0xF4
[anon:libc_malloc]:DDEA7D65 DCB  0xF
[anon:libc_malloc]:DDEA7D66 DCB 0x41 ; A
[anon:libc_malloc]:DDEA7D67 DCB 0x73 ; s
[anon:libc_malloc]:DDEA7D68 DCB 0x7C ; |
[anon:libc_malloc]:DDEA7D69 DCB 0x51 ; Q
[anon:libc_malloc]:DDEA7D6A DCB 0xDA
[anon:libc_malloc]:DDEA7D6B DCB 0xA1
[anon:libc_malloc]:DDEA7D6C DCB 0xB7
[anon:libc_malloc]:DDEA7D6D DCB 0x33 ; 3
[anon:libc_malloc]:DDEA7D6E DCB 0xEF
[anon:libc_malloc]:DDEA7D6F DCB 0x64 ; d

接着又进入swap交换逻辑

经过10轮后,又进入新的10轮。

开始encodecw,然后swap,这两个逻辑跟前面是相同的。但是到了encode4bytes的时候,发现具体逻辑不一样了

代码如下

libumejni.so:E8F13FE8 sub_E8F13FE8
libumejni.so:E8F13FE8 LDR             R0, =0x7E8
libumejni.so:E8F13FEA ADD             R0, SP
libumejni.so:E8F13FEC LDR             R0, [R0]
libumejni.so:E8F13FEE LSLS            R0, R0, #2
libumejni.so:E8F13FF0 LDR             R1, =0xD7A889A
libumejni.so:E8F13FF2 SUBS            R0, R0, R1
libumejni.so:E8F13FF4 ADDS            R0, #0xA0
libumejni.so:E8F13FF6 ADDS            R0, R0, R1
libumejni.so:E8F13FF8 LDR             R1, =0x7EC
libumejni.so:E8F13FFA ADD             R1, SP
libumejni.so:E8F13FFC LDR             R1, [R1]
libumejni.so:E8F13FFE NEGS            R1, R1
libumejni.so:E8F14000 SUBS            R0, R1, R0
libumejni.so:E8F14002 LDR             R1, =0x9C0
libumejni.so:E8F14004 ADD             R1, SP
libumejni.so:E8F14006 SUBS            R0, R1, R0
libumejni.so:E8F14008 LDRB            R1, [R0]
libumejni.so:E8F1400A LDR             R0, =0x698
libumejni.so:E8F1400C ADD             R0, SP
libumejni.so:E8F1400E LDR             R0, [R0]
libumejni.so:E8F14010 ADDS            R0, #0x73
libumejni.so:E8F14012 PUSH            {R1}
libumejni.so:E8F14014 POP             {R2}
libumejni.so:E8F14016 EORS            R2, R0
libumejni.so:E8F14018 LDR             R3, =0x798
libumejni.so:E8F1401A ADD             R3, SP
libumejni.so:E8F1401C LDR             R3, [R3]
libumejni.so:E8F1401E LDR             R4, =0x7E8
libumejni.so:E8F14020 ADD             R4, SP
libumejni.so:E8F14022 LDR             R4, [R4]
libumejni.so:E8F14024 LSLS            R4, R4, #2
libumejni.so:E8F14026 ADDS            R3, R3, R4
libumejni.so:E8F14028 LDR             R4, =0x7EC
libumejni.so:E8F1402A ADD             R4, SP
libumejni.so:E8F1402C LDR             R4, [R4]
libumejni.so:E8F1402E LDRB            R5, [R3,R4]
libumejni.so:E8F14030 ANDS            R2, R5
libumejni.so:E8F14032 EORS            R0, R5
libumejni.so:E8F14034 ANDS            R0, R1
libumejni.so:E8F14036 ORRS            R0, R2
libumejni.so:E8F14038 STRB            R0, [R3,R4]
libumejni.so:E8F1403A LDR             R0, =0x8CC
libumejni.so:E8F1403C ADD             R0, SP
libumejni.so:E8F1403E LDR             R0, [R0]
libumejni.so:E8F14040 NEGS            R0, R0
libumejni.so:E8F14042 MOVS            R1, #1
libumejni.so:E8F14044 SUBS   

  所有明文分成16字节处理完后

[anon:libc_malloc]:DBB29630 DCB 0x75 ; u
[anon:libc_malloc]:DBB29631 DCB 0x72 ; r
[anon:libc_malloc]:DBB29632 DCB 0x47 ; G
[anon:libc_malloc]:DBB29633 DCB 0x30 ; 0
[anon:libc_malloc]:DBB29634 DCB 0x69 ; i
[anon:libc_malloc]:DBB29635 DCB 0x38 ; 8 

接着进入这个逻辑,应该是用urG0i8跟明文中间结果进行处理。

可能是3转4的操作,这个逻辑是取明文3个自己。

libumejni.so:E8F14548 sub_E8F14548
libumejni.so:E8F14548
libumejni.so:E8F14548 arg_26C=  0x26C
libumejni.so:E8F14548 arg_270=  0x270
libumejni.so:E8F14548
libumejni.so:E8F14548 LDR             R0, =0x8E0
libumejni.so:E8F1454A ADD             R0, SP
libumejni.so:E8F1454C LDR             R0, [R0] ; 指向明文地址
libumejni.so:E8F1454E ADDS            R0, #1
libumejni.so:E8F14550 LDR             R4, =0x80C
libumejni.so:E8F14552 ADD             R4, SP
libumejni.so:E8F14554 STR             R0, [R4]
libumejni.so:E8F14556 LDR             R0, =0x8E0
libumejni.so:E8F14558 ADD             R0, SP
libumejni.so:E8F1455A LDR             R0, [R0]
libumejni.so:E8F1455C LDRB            R0, [R0]
libumejni.so:E8F1455E LDR             R1, =0x8D8
libumejni.so:E8F14560 ADD             R1, SP
libumejni.so:E8F14562 LDR             R1, [R1]
libumejni.so:E8F14564 NEGS            R2, R1
libumejni.so:E8F14566 MOVS            R1, #1
libumejni.so:E8F14568 SUBS            R2, R1, R2
libumejni.so:E8F1456A LDR             R4, =0x810
libumejni.so:E8F1456C ADD             R4, SP
libumejni.so:E8F1456E STR             R2, [R4]
libumejni.so:E8F14570 LDR             R2, =0x918
libumejni.so:E8F14572 ADD             R2, SP
libumejni.so:E8F14574 LDR             R3, =0x8D8
libumejni.so:E8F14576 ADD             R3, SP
libumejni.so:E8F14578 LDR             R3, [R3]
libumejni.so:E8F1457A STRB            R0, [R2,R3]
libumejni.so:E8F1457C MOVS            R0, #0
libumejni.so:E8F1457E LDR             R2, =0x810
libumejni.so:E8F14580 ADD             R2, SP
libumejni.so:E8F14582 LDR             R2, [R2]
libumejni.so:E8F14584 CMP             R2, #3
libumejni.so:E8F14586 PUSH            {R1}
libumejni.so:E8F14588 POP             {R2}
libumejni.so:E8F1458A BEQ  

带着明文取出的3个字节,进入3转4逻辑

第一组3个字节得到如下结果

FB 12 DF

[stack]:FFAA1A94 DCB 0x3E ; >
[stack]:FFAA1A95 DCB 0x31 ; 1
[stack]:FFAA1A96 DCB  0xB
[stack]:FFAA1A97 DCB 0x1F

libumejni.so:E8F1251C sub_E8F1251C
libumejni.so:E8F1251C
libumejni.so:E8F1251C ; FUNCTION CHUNK AT libumejni.so:E8F153E0 SIZE 00000008 BYTES
libumejni.so:E8F1251C
libumejni.so:E8F1251C LDR             R1, =0x918
libumejni.so:E8F1251E ADD             R1, SP
libumejni.so:E8F12520 LDRB            R0, [R1]
libumejni.so:E8F12522 PUSH            {R1}
libumejni.so:E8F12524 POP             {R3}
libumejni.so:E8F12526 LDR             R5, =0x4C0
libumejni.so:E8F12528 ADD             R5, SP
libumejni.so:E8F1252A STR             R3, [R5]
libumejni.so:E8F1252C LSRS            R1, R0, #2
libumejni.so:E8F1252E LDR             R2, =0x91C
libumejni.so:E8F12530 ADD             R2, SP
libumejni.so:E8F12532 LDR             R5, =0x644
libumejni.so:E8F12534 ADD             R5, SP
libumejni.so:E8F12536 STR             R2, [R5]
libumejni.so:E8F12538 STRB            R1, [R2]
libumejni.so:E8F1253A LDR             R2, =0x698
libumejni.so:E8F1253C ADD             R2, SP
libumejni.so:E8F1253E LDR             R2, [R2]
libumejni.so:E8F12540 ADDS            R2, #0x73
libumejni.so:E8F12542 LDR             R5, =0x4D4
libumejni.so:E8F12544 ADD             R5, SP
libumejni.so:E8F12546 STR             R2, [R5]
libumejni.so:E8F12548 MOVS            R1, #0x30
libumejni.so:E8F1254A EORS            R1, R2
libumejni.so:E8F1254C LSLS            R0, R0, #4
libumejni.so:E8F1254E EORS            R0, R2
libumejni.so:E8F12550 ORRS            R0, R1
libumejni.so:E8F12552 EORS            R0, R2
libumejni.so:E8F12554 MOVS            R4, #0x57
libumejni.so:E8F12556 ORRS            R4, R2
libumejni.so:E8F12558 ANDS            R4, R0
libumejni.so:E8F1255A MOVS            R0, #0xFF
libumejni.so:E8F1255C LDR             R2, loc_E8F12934
libumejni.so:E8F1255E ADD             R2, SP
libumejni.so:E8F12560 STR             R0, [R2]
libumejni.so:E8F12562 ANDS            R4, R0
libumejni.so:E8F12564 LDR             R6, loc_E8F12938
libumejni.so:E8F12566 ADD             R6, SP
libumejni.so:E8F12568 LDR             R6, [R6]
libumejni.so:E8F1256A ADDS            R6, #0xE
libumejni.so:E8F1256C LDR             R5, loc_E8F1293C
libumejni.so:E8F1256E EORS            R5, R6
libumejni.so:E8F12570 PUSH            {R4}
libumejni.so:E8F12572 POP             {R0}
libumejni.so:E8F12574 ANDS            R0, R5
libumejni.so:E8F12576 EORS            R4, R6
libumejni.so:E8F12578 MOVS            R1, #0x5C
libumejni.so:E8F1257A LDR             R2, =0x688
libumejni.so:E8F1257C ADD             R2, SP
libumejni.so:E8F1257E STR             R1, [R2]
libumejni.so:E8F12580 PUSH            {R4}
libumejni.so:E8F12582 POP             {R2}
libumejni.so:E8F12584 ANDS            R2, R1
libumejni.so:E8F12586 ORRS            R2, R0
libumejni.so:E8F12588 LDRB            R0, [R3,#1]
libumejni.so:E8F1258A LDR             R3, =0x4BC
libumejni.so:E8F1258C ADD             R3, SP
libumejni.so:E8F1258E STR             R0, [R3]
libumejni.so:E8F12590 LSRS            R0, R0, #4
libumejni.so:E8F12592 PUSH            {R0}
libumejni.so:E8F12594 POP             {R1}
libumejni.so:E8F12596 ANDS            R1, R5
libumejni.so:E8F12598 LDR             R3, =0x4B8
libumejni.so:E8F1259A ADD             R3, SP
libumejni.so:E8F1259C STR             R1, [R3]
libumejni.so:E8F1259E EORS            R0, R6
libumejni.so:E8F125A0 PUSH            {R0}
libumejni.so:E8F125A2 POP             {R1}
libumejni.so:E8F125A4 LDR             R3, =0x688
libumejni.so:E8F125A6 ADD             R3, SP
libumejni.so:E8F125A8 LDR             R3, [R3]
libumejni.so:E8F125AA ANDS            R1, R3
libumejni.so:E8F125AC LDR             R3, =0x4B8
libumejni.so:E8F125AE ADD             R3, SP
libumejni.so:E8F125B0 LDR             R3, [R3]
libumejni.so:E8F125B2 ORRS            R1, R3
libumejni.so:E8F125B4 EORS            R1, R2
libumejni.so:E8F125B6 ORRS            R0, R4
libumejni.so:E8F125B8 EORS            R0, R6
libumejni.so:E8F125BA LDR             R2, =0x688
libumejni.so:E8F125BC ADD             R2, SP
libumejni.so:E8F125BE LDR             R2, [R2]
libumejni.so:E8F125C0 ORRS            R5, R2
libumejni.so:E8F125C2 ANDS            R5, R0
libumejni.so:E8F125C4 ORRS            R5, R1
libumejni.so:E8F125C6 LDR             R4, =0x644
libumejni.so:E8F125C8 ADD             R4, SP
libumejni.so:E8F125CA LDR             R4, [R4]
libumejni.so:E8F125CC STRB            R5, [R4,#1]
libumejni.so:E8F125CE MOVS            R0, #0x3C
libumejni.so:E8F125D0 LDR             R2, =0x4D4
libumejni.so:E8F125D2 ADD             R2, SP
libumejni.so:E8F125D4 LDR             R2, [R2]
libumejni.so:E8F125D6 EORS            R0, R2
libumejni.so:E8F125D8 LDR             R1, =0x4BC
libumejni.so:E8F125DA ADD             R1, SP
libumejni.so:E8F125DC LDR             R1, [R1]
libumejni.so:E8F125DE LSLS            R1, R1, #2
libumejni.so:E8F125E0 EORS            R1, R2
libumejni.so:E8F125E2 ORRS            R1, R0
libumejni.so:E8F125E4 EORS            R1, R2
libumejni.so:E8F125E6 LDR             R3, =0x698
libumejni.so:E8F125E8 ADD             R3, SP
libumejni.so:E8F125EA LDR             R3, [R3]
libumejni.so:E8F125EC PUSH            {R3}
libumejni.so:E8F125EE POP             {R0}
libumejni.so:E8F125F0 EORS            R0, R2
libumejni.so:E8F125F2 PUSH            {R2}
libumejni.so:E8F125F4 POP             {R5}
libumejni.so:E8F125F6 ORRS            R0, R3
libumejni.so:E8F125F8 ANDS            R0, R1
libumejni.so:E8F125FA LDR             R1, =0x4D8
libumejni.so:E8F125FC ADD             R1, SP
libumejni.so:E8F125FE LDR             R1, [R1]
libumejni.so:E8F12600 ANDS            R0, R1
libumejni.so:E8F12602 LDR             R1, =0x4C0
libumejni.so:E8F12604 ADD             R1, SP
libumejni.so:E8F12606 LDR             R1, [R1]
libumejni.so:E8F12608 LDRB            R1, [R1,#2]
libumejni.so:E8F1260A LSRS            R2, R1, #6
libumejni.so:E8F1260C PUSH            {R0}
libumejni.so:E8F1260E POP             {R3}
libumejni.so:E8F12610 EORS            R3, R2
libumejni.so:E8F12612 ANDS            R0, R2
libumejni.so:E8F12614 ORRS            R0, R3
libumejni.so:E8F12616 PUSH            {R4}
libumejni.so:E8F12618 POP             {R2}
libumejni.so:E8F1261A STRB            R0, [R2,#2]
libumejni.so:E8F1261C EORS            R5, R1
libumejni.so:E8F1261E MOVS            R0, #0x3F
libumejni.so:E8F12620 EORS            R0, R5
libumejni.so:E8F12622 ANDS            R0, R1
libumejni.so:E8F12624 STRB            R0, [R2,#3]
libumejni.so:E8F12626 LDR             R1, =0x8D0
libumejni.so:E8F12628 ADD             R1, SP
libumejni.so:E8F1262A LDR             R1, [R1]
libumejni.so:E8F1262C LDR             R0, =0x8D4
libumejni.so:E8F1262E ADD             R0, SP
libumejni.so:E8F12630 LDR             R0, [R0]
libumejni.so:E8F12632 ADDS            R1, #4
libumejni.so:E8F12634 BL              sub_E8F1573C
libumejni.so:E8F12638 LDR             R2, =0x818
libumejni.so:E8F1263A ADD             R2, SP
libumejni.so:E8F1263C STR             R0, [R2]
libumejni.so:E8F1263E MOVS            R0, #0
libumejni.so:E8F12640 LDR             R2, =0x4D4
libumejni.so:E8F12642 ADD             R2, SP
libumejni.so:E8F12644 STR             R0, [R2]
libumejni.so:E8F12646 LDR             R0, =0x8D0
libumejni.so:E8F12648 ADD             R0, SP
libumejni.so:E8F1264A LDR             R0, [R0]
libumejni.so:E8F1264C LDR             R2, =0x4D8
libumejni.so:E8F1264E ADD             R2, SP
libumejni.so:E8F12650 STR             R0, [R2]
libumejni.so:E8F12652 LDR             R6, =0x494
libumejni.so:E8F12654 BL              loc_E8F153E0
libumejni.so:E8F12654 ; End of function sub_E8F12

最后3转4不够3,补0的逻辑。

libumejni.so:E8F10CAA loc_E8F10CAA            ; 3转4最后补0的逻辑
libumejni.so:E8F10CAA LDR             R0, =0x918
libumejni.so:E8F10CAC ADD             R0, SP
libumejni.so:E8F10CAE LDRB            R3, [R0]
libumejni.so:E8F10CB0 PUSH            {R0}
libumejni.so:E8F10CB2 POP             {R6}
libumejni.so:E8F10CB4 LDR             R5, =0x644
libumejni.so:E8F10CB6 ADD             R5, SP
libumejni.so:E8F10CB8 STR             R6, [R5]
libumejni.so:E8F10CBA LSRS            R1, R3, #2
libumejni.so:E8F10CBC LDR             R0, =0x91C
libumejni.so:E8F10CBE ADD             R0, SP
libumejni.so:E8F10CC0 LDR             R5, =0x688
libumejni.so:E8F10CC2 ADD             R5, SP
libumejni.so:E8F10CC4 STR             R0, [R5]
libumejni.so:E8F10CC6 STRB            R1, [R0]
libumejni.so:E8F10CC8 LDR             R2, =0x698
libumejni.so:E8F10CCA ADD             R2, SP
libumejni.so:E8F10CCC LDR             R2, [R2]
libumejni.so:E8F10CCE PUSH            {R2}
libumejni.so:E8F10CD0 POP             {R1}
libumejni.so:E8F10CD2 ADDS            R1, #0x73
libumejni.so:E8F10CD4 MOVS            R4, #0x30
libumejni.so:E8F10CD6 EORS            R4, R1
libumejni.so:E8F10CD8 LSLS            R3, R3, #4
libumejni.so:E8F10CDA EORS            R3, R1
libumejni.so:E8F10CDC ORRS            R3, R4
libumejni.so:E8F10CDE EORS            R3, R1
libumejni.so:E8F10CE0 PUSH            {R2}
libumejni.so:E8F10CE2 POP             {R5}
libumejni.so:E8F10CE4 ADDS            R5, #0x5E
libumejni.so:E8F10CE6 PUSH            {R5}
libumejni.so:E8F10CE8 POP             {R4}
libumejni.so:E8F10CEA EORS            R4, R1
libumejni.so:E8F10CEC ORRS            R4, R5
libumejni.so:E8F10CEE ANDS            R4, R3
libumejni.so:E8F10CF0 MOVS            R3, #0xFF
libumejni.so:E8F10CF2 ANDS            R4, R3
libumejni.so:E8F10CF4 LDRB            R5, [R6,#1]
libumejni.so:E8F10CF6 LSRS            R0, R5, #4
libumejni.so:E8F10CF8 PUSH            {R0}
libumejni.so:E8F10CFA POP             {R6}
libumejni.so:E8F10CFC EORS            R6, R4
libumejni.so:E8F10CFE ANDS            R4, R0
libumejni.so:E8F10D00 ORRS            R4, R6
libumejni.so:E8F10D02 LDR             R6, =0x688
libumejni.so:E8F10D04 ADD             R6, SP
libumejni.so:E8F10D06 LDR             R6, [R6]
libumejni.so:E8F10D08 STRB            R4, [R6,#1]
libumejni.so:E8F10D0A MOVS            R0, #0x3C
libumejni.so:E8F10D0C EORS            R0, R1
libumejni.so:E8F10D0E LSLS            R4, R5, #2
libumejni.so:E8F10D10 EORS            R4, R1
libumejni.so:E8F10D12 ORRS            R4, R0
libumejni.so:E8F10D14 EORS            R4, R1
libumejni.so:E8F10D16 ADDS            R2, #0x57
libumejni.so:E8F10D18 PUSH            {R2}
libumejni.so:E8F10D1A POP             {R5}
libumejni.so:E8F10D1C EORS            R5, R1
libumejni.so:E8F10D1E ORRS            R5, R2
libumejni.so:E8F10D20 ANDS            R5, R4
libumejni.so:E8F10D22 ANDS            R5, R3
libumejni.so:E8F10D24 LDR             R0, =0x644
libumejni.so:E8F10D26 ADD             R0, SP
libumejni.so:E8F10D28 LDR             R0, [R0]
libumejni.so:E8F10D2A LDRB            R0, [R0,#2]
libumejni.so:E8F10D2C LSRS            R3, R0, #6
libumejni.so:E8F10D2E PUSH            {R5}
libumejni.so:E8F10D30 POP             {R4}
libumejni.so:E8F10D32 EORS            R4, R3
libumejni.so:E8F10D34 ANDS            R5, R3
libumejni.so:E8F10D36 ORRS            R5, R4
libumejni.so:E8F10D38 PUSH            {R6}
libumejni.so:E8F10D3A POP             {R2}
libumejni.so:E8F10D3C STRB            R5, [R2,#2]
libumejni.so:E8F10D3E EORS            R1, R0
libumejni.so:E8F10D40 MOVS            R3, #0x3F
libumejni.so:E8F10D42 EORS            R3, R1
libumejni.so:E8F10D44 ANDS            R3, R0
libumejni.so:E8F10D46 STRB            R3, [R2,#3]
libumejni.so:E8F10D48 LDR             R0, [SP,#arg_80]
libumejni.so:E8F10D4A LDR             R2, [R0]
libumejni.so:E8F10D4C MOVS            R1, #1
libumejni.so:E8F10D4E MOVS            R0, #0
libumejni.so:E8F10D50 CMP             R2, #0xA
libumejni.so:E8F10D52 PUSH            {R1}
libumejni.so:E8F10D54 POP             {R2}
libumejni.so:E8F10D56 BLT             loc_E8

最终拓出代码,对明文加密

得到密文

与它app加密一样,至此加密分析完毕。

响应数据分析,通过内部代码分析,主体为json结构,详细数据为protobuf协议格式。
最终响应结果:

源代码

总结

说到底无论如何加密,最终都有被解密得可能,只是成本时间的问题,我也虽没经过系统学习,仅凭爱好也能分析出来,可想而知面对那些专业人士就是裸奔。

即便如此,我们更加要做好数据安全,至少把门槛提高了。