360 so动态脱壳

环境及工具

手机    :  中兴 U887

系统版本:    Android 2.3.5

工具    :    IDA pro 6.6 、0101Editor

版权声明:未经许可,随便转载

目前so加壳有很多家,我己知的有 爱加密,梆梆,360, 娜迦等 各有所长。今天把学习360的脱壳笔记记录下来与小菜共同学习,没有其它目的,大神请绕道!

1.对加壳后的so进行反编译,代码不能正常显示,被加密了,如下图所示:

查看so的"INIT_ARRAY",指向了壳的入口, 如下图所示:

2.用IDA反编译加壳后的so文件,到0Xfd30去(壳的入口函数),如下图所示

3.通过上面分析知道了入口在"INIT_ARRAY",接下来运态调试,(如果不知道如何到该入口的可以参考 0n1y3nd‘s 大神写的文章

http://0nly3nd.sinaapp.com/?p=649)到达壳入口后如下图所示:

与静态分析时是一样的。

4.壳反调试检查是否有如下调试器 gdb strace ltrace android_server,如下图所:

5.接下来解密第二层的壳代码,算法为RC4,如下图所示:

6.知道密钥和算法及要解密的数据与大小,我们来静态解密so中的数据,解密后生成so文件然后反编译该文件,以前不能正常显示的代码现在都能正常显示了,如下图所示:

7.第二层的壳代码解密完后,INIT_ARRAY处的壳代码工能算是走完了,接着在JNI_OnLoad处下好断点,F9运行,如下图所示:

8.断在JNI_OnLoad后继续分析,Unk_8050303C函数解密原始so RC4算法,如下图所示:

解密后的数据以".lfx"开头, 如下所示:

9.将解密后的数据全部dump出来保存为lfx.Dump,与原始的so比较,看发生了什么变化,如下图所示:

10.将上面dump出来的文件lfx.Dump与没加壳前的so文件比较,发现不不同的地方很多,说明还没有完全解密,继续分析,如下图所示:

开头4字节不一样

中间N多字节不一样

11.继分析后发现会对该文件的代码节进解压缩,这时候dump出来就会是原始的代码了,如下图所示:

解密原始so并解压代码的流程如下:

  1 libjuan.so:8050303C             loc_8050303C                            ; CODE XREF:
  2
  3 libjuan.so:JNI_OnLoad+34p
  4 libjuan.so:8050303C F0 4F 2D E9 STMFD           SP!, {R4-R11,LR}
  5 libjuan.so:80503040 D0 B2 9F E5 LDR             R11, =(unk_8050FEE0 - 0x80503054)
  6 libjuan.so:80503044 D0 32 9F E5 LDR             R3, =0xFFFFFF68
  7 libjuan.so:80503048 D0 52 9F E5 LDR             R5, =(unk_8050D940 - 0x80503060)
  8 libjuan.so:8050304C 0B B0 8F E0 ADD             R11, PC, R11 ; unk_8050FEE0
  9 libjuan.so:80503050 03 30 9B E7 LDR             R3, [R11,R3]
 10 libjuan.so:80503054 5B DF 4D E2 SUB             SP, SP, #0x16C
 11 libjuan.so:80503058 05 50 8F E0 ADD             R5, PC, R5 ; unk_8050D940
 12 libjuan.so:8050305C 0C 30 8D E5 STR             R3, [SP,#0xC]
 13 libjuan.so:80503060 00 30 93 E5 LDR             R3, [R3]
 14 libjuan.so:80503064 05 10 A0 E1 MOV             R1, R5
 15 libjuan.so:80503068 0A 20 A0 E3 MOV             R2, #0xA
 16 libjuan.so:8050306C 1C 00 8D E2 ADD             R0, SP, #0x1C
 17 libjuan.so:80503070 64 31 8D E5 STR             R3, [SP,#0x164]
 18 libjuan.so:80503074 11 FE FF EB BL              memcpy_0                ; 拷贝密钥0XA字节
 19 libjuan.so:80503074                                                     ; 46 45 88 89 98 99 87 87
 20
 21 65 87
 22 libjuan.so:80503078 1C 00 8D E2 ADD             R0, SP, #0x1C
 23 libjuan.so:8050307C 0A 10 A0 E3 MOV             R1, #0xA
 24 libjuan.so:80503080 60 20 8D E2 ADD             R2, SP, #0x60
 25 libjuan.so:80503084 7E 0B 00 EB BL              init_Key
 26 libjuan.so:80503088 94 32 9F E5 LDR             R3, =0xFFFFFF94
 27 libjuan.so:8050308C 45 1C A0 E3+MOV             R1, #0x451C             ; 要解密的大小 0000451C
 28 libjuan.so:80503094 03 90 9B E7 LDR             R9, [R11,R3]
 29 libjuan.so:80503098 60 20 8D E2 ADD             R2, SP, #0x60           ; R2初始化的的密钥
 30 libjuan.so:8050309C 00 60 A0 E3 MOV             R6, #0
 31 libjuan.so:805030A0 09 00 A0 E1 MOV             R0, R9                  ; R0要解密的数据 地址
 32
 33 805104CC
 34 libjuan.so:805030A4 97 0C 00 EB BL              rc4_crypt               ; 解密原始的so文件
 35 libjuan.so:805030A8 01 2C A0 E3 MOV             R2, #0x100
 36 libjuan.so:805030AC 00 10 A0 E3 MOV             R1, #0
 37 libjuan.so:805030B0 02 20 82 E2 ADD             R2, R2, #2
 38 libjuan.so:805030B4 60 00 8D E2 ADD             R0, SP, #0x60
 39 libjuan.so:805030B8 03 FE FF EB BL              memset_0
 40 libjuan.so:805030BC 04 00 A0 E3 MOV             R0, #4
 41 libjuan.so:805030C0 12 12 00 EB BL              AnitDbg_0
 42 libjuan.so:805030C4 20 40 99 E5 LDR             R4, [R9,#0x20]
 43 libjuan.so:805030C8 B2 33 D9 E1 LDRH            R3, [R9,#0x32]
 44 libjuan.so:805030CC 28 20 A0 E3 MOV             R2, #0x28
 45 libjuan.so:805030D0 04 40 89 E0 ADD             R4, R9, R4
 46 libjuan.so:805030D4 92 43 23 E0 MLA             R3, R2, R3, R4
 47 libjuan.so:805030D8 10 30 93 E5 LDR             R3, [R3,#0x10]
 48 libjuan.so:805030DC 03 30 89 E0 ADD             R3, R9, R3
 49 libjuan.so:805030E0 04 30 8D E5 STR             R3, [SP,#4]
 50 libjuan.so:805030E4 76 10 00 EB BL              __gnu_armfini_11
 51 libjuan.so:805030E8 0D 20 A0 E3 MOV             R2, #0xD
 52 libjuan.so:805030EC 0C 10 85 E2 ADD             R1, R5, #0xC
 53 libjuan.so:805030F0 28 00 8D E2 ADD             R0, SP, #0x28
 54 libjuan.so:805030F4 F1 FD FF EB BL              memcpy_0
 55 libjuan.so:805030F8 28 00 8D E2 ADD             R0, SP, #0x28
 56 libjuan.so:805030FC D3 14 00 EB BL              GetBase64String
 57 libjuan.so:80503100 38 10 8D E2 ADD             R1, SP, #0x38
 58 libjuan.so:80503104 28 00 8D E2 ADD             R0, SP, #0x28
 59 libjuan.so:80503108 38 60 8D E5 STR             R6, [SP,#0x38]
 60 libjuan.so:8050310C 3C 60 8D E5 STR             R6, [SP,#0x3C]
 61 libjuan.so:80503110 40 60 8D E5 STR             R6, [SP,#0x40]
 62 libjuan.so:80503114 44 60 8D E5 STR             R6, [SP,#0x44]
 63 libjuan.so:80503118 48 60 8D E5 STR             R6, [SP,#0x48]
 64 libjuan.so:8050311C 4C 60 8D E5 STR             R6, [SP,#0x4C]
 65 libjuan.so:80503120 50 60 8D E5 STR             R6, [SP,#0x50]
 66 libjuan.so:80503124 54 60 8D E5 STR             R6, [SP,#0x54]
 67 libjuan.so:80503128 58 60 8D E5 STR             R6, [SP,#0x58]
 68 libjuan.so:8050312C 5C 60 8D E5 STR             R6, [SP,#0x5C]
 69 libjuan.so:80503130 4D 13 00 EB BL              DecBase64String
 70 libjuan.so:80503134 1C 10 85 E2 ADD             R1, R5, #0x1C
 71 libjuan.so:80503138 06 20 A0 E3 MOV             R2, #6
 72 libjuan.so:8050313C 14 00 8D E2 ADD             R0, SP, #0x14
 73 libjuan.so:80503140 DE FD FF EB BL              memcpy_0
 74 libjuan.so:80503144 14 00 8D E2 ADD             R0, SP, #0x14
 75 libjuan.so:80503148 06 10 A0 E3 MOV             R1, #6
 76 libjuan.so:8050314C 8A FF FF EB BL              DecString_0
 77 libjuan.so:80503150 B0 33 D9 E1 LDRH            R3, [R9,#0x30]
 78 libjuan.so:80503154 06 00 53 E1 CMP             R3, R6
 79 libjuan.so:80503158 03 60 A0 01 MOVEQ           R6, R3
 80 libjuan.so:8050315C 39 00 00 0A BEQ             loc_80503248
 81 libjuan.so:80503160 C0 71 9F E5 LDR             R7, =(dword_805149E8 - 0x80503170)
 82 libjuan.so:80503164 06 80 A0 E1 MOV             R8, R6
 83 libjuan.so:80503168 07 70 8F E0 ADD             R7, PC, R7 ; dword_805149E8
 84 libjuan.so:8050316C
 85 libjuan.so:8050316C             loc_8050316C                            ; CODE XREF:
 86
 87 libjuan.so:__gnu_arm_flush+350j
 88 libjuan.so:8050316C 04 C0 9D E5 LDR             R12, [SP,#4]
 89 libjuan.so:80503170 00 00 94 E5 LDR             R0, [R4]
 90 libjuan.so:80503174 14 10 8D E2 ADD             R1, SP, #0x14
 91 libjuan.so:80503178 00 00 8C E0 ADD             R0, R12, R0
 92 libjuan.so:8050317C DE FD FF EB BL              strcmp                  ; 与.text比较
 93 libjuan.so:80503180 00 30 50 E2 SUBS            R3, R0, #0
 94 libjuan.so:80503184 3D 00 00 1A BNE             loc_80503280
 95 libjuan.so:80503188 10 50 94 E5 LDR             R5, [R4,#0x10]
 96 libjuan.so:8050318C 14 C0 94 E5 LDR             R12, [R4,#0x14]
 97 libjuan.so:80503190 05 A0 99 E7 LDR             R10, [R9,R5]
 98 libjuan.so:80503194 08 C0 8D E5 STR             R12, [SP,#8]
 99 libjuan.so:80503198 00 30 8D E5 STR             R3, [SP]
100 libjuan.so:8050319C 0A 00 A0 E1 MOV             R0, R10
101 libjuan.so:805031A0 C3 FD FF EB BL              malloc
102 libjuan.so:805031A4 00 60 50 E2 SUBS            R6, R0, #0
103 libjuan.so:805031A8 05 50 89 E0 ADD             R5, R9, R5
104 libjuan.so:805031AC 00 30 9D E5 LDR             R3, [SP]
105 libjuan.so:805031B0 51 00 00 0A BEQ             loc_805032FC
106 libjuan.so:805031B4 00 00 5A E3 CMP             R10, #0
107 libjuan.so:805031B8 14 00 00 DA BLE             loc_80503210
108 libjuan.so:805031BC 68 11 9F E5 LDR             R1, =0xFFFFFF70
109 libjuan.so:805031C0 04 20 A0 E3 MOV             R2, #4
110 libjuan.so:805031C4 01 E0 9B E7 LDR             LR, [R11,R1]
111 libjuan.so:805031C8 00 10 9E E5 LDR             R1, [LR]
112 libjuan.so:805031CC
113 libjuan.so:805031CC             loc_805031CC                            ; CODE XREF:
114
115 libjuan.so:__gnu_arm_flush+28Cj
116 libjuan.so:805031CC 03 00 13 E3 TST             R3, #3
117 libjuan.so:805031D0 07 00 00 1A BNE             loc_805031F4
118 libjuan.so:805031D4 FE 00 51 E3 CMP             R1, #0xFE
119 libjuan.so:805031D8 05 00 00 8A BHI             loc_805031F4
120 libjuan.so:805031DC 4C 01 9F E5 LDR             R0, =0xFFFFFF6C
121 libjuan.so:805031E0 02 C0 D5 E7 LDRB            R12, [R5,R2]
122 libjuan.so:805031E4 01 10 81 E2 ADD             R1, R1, #1
123 libjuan.so:805031E8 00 00 9B E7 LDR             R0, [R11,R0]
124 libjuan.so:805031EC 01 20 82 E2 ADD             R2, R2, #1
125 libjuan.so:805031F0 43 C1 C0 E7 STRB            R12, [R0,R3,ASR#2]
126 libjuan.so:805031F4
127 libjuan.so:805031F4             loc_805031F4                            ; CODE XREF:
128
129 libjuan.so:__gnu_arm_flush+254j
130 libjuan.so:805031F4                                                     ;
131
132 libjuan.so:__gnu_arm_flush+25Cj
133 libjuan.so:805031F4 02 00 D5 E7 LDRB            R0, [R5,R2]
134 libjuan.so:805031F8 01 20 82 E2 ADD             R2, R2, #1
135 libjuan.so:805031FC 03 00 C6 E7 STRB            R0, [R6,R3]
136 libjuan.so:80503200 01 30 83 E2 ADD             R3, R3, #1
137 libjuan.so:80503204 03 00 5A E1 CMP             R10, R3
138 libjuan.so:80503208 EF FF FF 1A BNE             loc_805031CC
139 libjuan.so:8050320C 00 10 8E E5 STR             R1, [LR]
140 libjuan.so:80503210
141 libjuan.so:80503210             loc_80503210                            ; CODE XREF:
142
143 libjuan.so:__gnu_arm_flush+23Cj
144 libjuan.so:80503210 08 C0 9D E5 LDR             R12, [SP,#8]
145 libjuan.so:80503214 05 00 A0 E1 MOV             R0, R5
146 libjuan.so:80503218 10 10 8D E2 ADD             R1, SP, #0x10
147 libjuan.so:8050321C 06 20 A0 E1 MOV             R2, R6
148 libjuan.so:80503220 0A 30 A0 E1 MOV             R3, R10
149 libjuan.so:80503224 10 C0 8D E5 STR             R12, [SP,#0x10]
150 libjuan.so:80503228 C2 FD FF EB BL              uncompress_0            ; 解压代码(.text)
151 libjuan.so:8050322C 00 00 50 E3 CMP             R0, #0                  ; 这时候dump可以得到原始的
152
153 so了
154 libjuan.so:80503230 27 00 00 0A BEQ             loc_805032D4
155 libjuan.so:80503234 F8 30 9F E5 LDR             R3, =0xFFFFFF60
156 libjuan.so:80503238 BF 2E A0 E3 MOV             R2, #0xBF0
157 libjuan.so:8050323C 00 60 A0 E3 MOV             R6, #0
158 libjuan.so:80503240 03 30 9B E7 LDR             R3, [R11,R3]
159 libjuan.so:80503244 00 20 83 E5 STR             R2, [R3]
160 libjuan.so:80503248
161 libjuan.so:80503248             loc_80503248                            ; CODE XREF:
162
163 libjuan.so:__gnu_arm_flush+1E0j
164 libjuan.so:80503248                                                     ;
165
166 libjuan.so:__gnu_arm_flush+354j ...
167 libjuan.so:80503248 0C C0 9D E5 LDR             R12, [SP,#0xC]
168 libjuan.so:8050324C 64 21 9D E5 LDR             R2, [SP,#0x164]
169 libjuan.so:80503250 06 00 A0 E1 MOV             R0, R6
170 libjuan.so:80503254 00 30 9C E5 LDR             R3, [R12]
171 libjuan.so:80503258 03 00 52 E1 CMP             R2, R3
172 libjuan.so:8050325C 2C 00 00 1A BNE             loc_80503314
173 libjuan.so:80503260 5B DF 8D E2 ADD             SP, SP, #0x16C
174 libjuan.so:80503264 F0 8F BD E8 LDMFD           SP!, {R4-R11,PC}
175 libjuan.so:80503268             ;
176
177 ---------------------------------------------------------------------------
178 libjuan.so:80503268
179 libjuan.so:80503268             loc_80503268                            ; CODE XREF:
180
181 libjuan.so:__gnu_arm_flush+364j
182 libjuan.so:80503268 05 00 A0 E1 MOV             R0, R5
183 libjuan.so:8050326C 0C 10 85 E0 ADD             R1, R5, R12
184 libjuan.so:80503270 69 FE FF EB BL              sub_80502C1C
185 libjuan.so:80503274 06 00 A0 E1 MOV             R0, R6
186 libjuan.so:80503278 96 FD FF EB BL              unk_805028D8
187 libjuan.so:8050327C 01 60 A0 E3 MOV             R6, #1
188 libjuan.so:80503280
189 libjuan.so:80503280             loc_80503280                            ; CODE XREF:
190
191 libjuan.so:__gnu_arm_flush+208j
192 libjuan.so:80503280 05 00 A0 E3 MOV             R0, #5
193 libjuan.so:80503284 A1 11 00 EB BL              AnitDbg_0               ; 反调试,查看是否有
194 libjuan.so:80503284                                                     ; gdb strace ltrace
195
196 android_server程序
197 libjuan.so:80503288 04 C0 9D E5 LDR             R12, [SP,#4]
198 libjuan.so:8050328C 00 00 94 E5 LDR             R0, [R4]
199 libjuan.so:80503290 38 10 8D E2 ADD             R1, SP, #0x38
200 libjuan.so:80503294 00 00 8C E0 ADD             R0, R12, R0
201 libjuan.so:80503298 94 FD FF EB BL              strstr
202 libjuan.so:8050329C 00 00 50 E3 CMP             R0, #0
203 libjuan.so:805032A0 05 00 00 0A BEQ             loc_805032BC
204 libjuan.so:805032A4 00 30 97 E5 LDR             R3, [R7]
205 libjuan.so:805032A8 0C 00 84 E2 ADD             R0, R4, #0xC
206 libjuan.so:805032AC 07 00 90 E8 LDMIA           R0, {R0-R2}
207 libjuan.so:805032B0 03 10 81 E0 ADD             R1, R1, R3
208 libjuan.so:805032B4 03 30 80 E0 ADD             R3, R0, R3
209 libjuan.so:805032B8 0E 00 87 E9 STMIB           R7, {R1-R3}
210 libjuan.so:805032BC
211 libjuan.so:805032BC             loc_805032BC                            ; CODE XREF:
212
213 libjuan.so:__gnu_arm_flush+324j
214 libjuan.so:805032BC B0 33 D9 E1 LDRH            R3, [R9,#0x30]
215 libjuan.so:805032C0 01 80 88 E2 ADD             R8, R8, #1
216 libjuan.so:805032C4 28 40 84 E2 ADD             R4, R4, #0x28
217 libjuan.so:805032C8 08 00 53 E1 CMP             R3, R8
218 libjuan.so:805032CC A6 FF FF CA BGT             loc_8050316C
219 libjuan.so:805032D0 DC FF FF EA B               loc_80503248
220 libjuan.so:805032D4             ;
221
222 ---------------------------------------------------------------------------
223 libjuan.so:805032D4
224 libjuan.so:805032D4             loc_805032D4                            ; CODE XREF:
225
226 libjuan.so:__gnu_arm_flush+2B4j
227 libjuan.so:805032D4 10 30 9D E5 LDR             R3, [SP,#0x10]
228 libjuan.so:805032D8 08 C0 9D E5 LDR             R12, [SP,#8]
229 libjuan.so:805032DC 03 00 5C E1 CMP             R12, R3
230 libjuan.so:805032E0 E0 FF FF 0A BEQ             loc_80503268
231 libjuan.so:805032E4 48 30 9F E5 LDR             R3, =0xFFFFFF60
232 libjuan.so:805032E8 BF 2E A0 E3 MOV             R2, #0xBF0
233 libjuan.so:805032EC 00 60 A0 E1 MOV             R6, R0
234 libjuan.so:805032F0 03 30 9B E7 LDR             R3, [R11,R3]
235 libjuan.so:805032F4 00 20 83 E5 STR             R2, [R3]
236 libjuan.so:805032F8 D2 FF FF EA B               loc_80503248
237 libjuan.so:805032FC             ;
238
239 ---------------------------------------------------------------------------
240 libjuan.so:805032FC
241 libjuan.so:805032FC             loc_805032FC                            ; CODE XREF:
242
243 libjuan.so:__gnu_arm_flush+234j
244 libjuan.so:805032FC 30 20 9F E5 LDR             R2, =0xFFFFFF60
245 libjuan.so:80503300 BE 3E A0 E3+MOV             R3, #0xBEF
246 libjuan.so:80503308 02 20 9B E7 LDR             R2, [R11,R2]

12.解压缩后再次dump出来保存为lfx1.Dump与原始的so比较,发现只有前4字节不一样了,如下图所示:

13.将第二次dump出来的lfx1.Dump文件的头4字节.lfx改成.ELF就成了,脱壳完毕。

14.总结: INIT_ARRAY--->解密第二层壳(JNI_OnLoad)---->解密原始so文件--->解压缩原始so的代码节。

样本 http://yunpan.cn/cVCApjnJvJue6 (提取码:85fc)

时间: 2024-10-25 22:42:51

360 so动态脱壳的相关文章

360加固动态脱壳

参考文章: http://www.52pojie.cn/thread-435746-1-1.html ①. 运行IDA服务端并端口转发 ②. 以调试方式启动app adb shell am start -D -n com.CMapp/com.e4a.runtime.android.StartActivity ③. 使用IDA远程附加 ④. 在libc.so中找到mmap函数设置断点,为了方便,直接设置到函数末尾了 ⑤. 打开ddms或者Eclipse (必要,为了使用jdb命令),获取应用程序的

360加固保动态脱壳

测试环境: 调试器: IDA6.5 手机及系统版本: .SO层脱壳 一:.如何到达壳入口点? 1.我是通过对dvmLoadNativeCode函数下断,分析它执行流程最后到达壳入口(如果您有更好的办法还请告知,感谢中...),函数dvmLoadNativeCode是执行加载so文件的操作.(2.3系统是这个名字),2.3以上系统被名称粉碎了,不过在2.3以上系统中可以在libdvm.so中搜索函数名也是可以找到的,(我当前系统函数名为:_Z17dvmLoadNativeCodePKcP6Obje

“爱加密” 动态脱壳法

测试环境为: 安卓2.3 IDA6.6 下面看具体操作步骤: 具体怎样用IDA动态调试我就不多说了,网上己经有很多文章了,下面直接进入正题. 1.准备好调式环境后 用IDA附加进程. 2.附加成功后按"G"键 跳到dvmDexFileOpenPartial函数与fopen函数与fgets函数去下好断点. 3.下好断点后我们来说说它的反调试吧,下面我给两张图片大家可能就会明白它的反调试是怎么一回事了. 在调试状态下查看进程 TracerPid 不为0 在非调试状态下查看进程 Tracer

Android中插件开发篇之----动态加载Activity(免安装运行程序)

一.前言 又到周末了,时间过的很快,今天我们来看一下Android中插件开发篇的最后一篇文章的内容:动态加载Activity(免安装运行程序),在上一篇文章中说道了,如何动态加载资源(应用换肤原理解析),没看过的同学,可以转战: http://blog.csdn.NET/jiangwei0910410003/article/details/47679843 当然,今天说道的内容还这这篇文章有关系.关于动态加载Activity的内容,网上也是有很多文章介绍了.但是他们可能大部分都是介绍通过代理的方

wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果

上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个  两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50503630 老规矩,先上效果图: qq的未读消息去除很炫酷,其实就是用了两条贝塞尔曲线,我们按思路来,先来画两个圆,及两条贝塞尔曲线,辅助点为圆心y坐标的一半.我们把下面移动的圆,叫做mMoveCircle. 这样一画,就很简单明了了对不对.只要在拖动的时候

教你如何反编译app,拿到加密方式

大家知道app 有安卓和ios 安卓是apk 现在基本上apk都是经过加密的 想动态脱壳没一定的技术是搞不定的 IOS是ipa 今天我主要讲的是这个 准备好反编译设备 1.一套越狱的ios手机 我的设备是iphone6 ios8.3 已越狱 2.一个mac系统 可以是vmware上的mac 黑苹果 或者直接用自己的mac电脑 我为了方便就用了黑苹果(如何搞黑苹果可以看我之前发表的博客) 给大家看下我的环境吧: 准备反编译环境 1. 越狱手机上 1.1 Cydia上面安装 OpenSSH 安装成功

iOS - 逆向工程

公司最近搞得物联网项目,很注重安全,对于我这种架构师,当然考虑到APP使用上的安全.分享一篇逆向基础文章. 1.ios逆向工程指的是在软件层面上进行逆向分析的一个过程.如果想要达到对ios软件较强的逆向分析能力,最好能非常熟悉ios设备的硬件构成.ios系统的运行原理,还要具备丰富的ios开发经验,比如:拿到一个App之后能清晰的推断出这个App使用的技术,包括引用了那些FrameWork,那些经典的第三方代码,以及整个App工程大致的文件个数等. 2.逆向工程的主要两个作用:首先是攻破目标程序

你的APK安全吗?来WeTest免费测!

腾讯安全联合实验室就曾在<2018上半年互联网黑产研究报告>指出,移动端黑产规模宏大,恶意推广日均影响用户超过千万. 尤其在网络强相关的APP流行年代,当APP应用客户端上传与获取信息,大多通过接口在服务器双向通信,这很容易被第三方获取,导致数据盗取.接口盗刷,致使用户信息泄露,严重情况下将出现财产损失. 30%+的产品正在遭受外挂的严重危害 据腾讯云的统计,市面上金融APP每款产品平均存在65个漏洞,且23%为高危漏洞 你的手游/ 应用,也正在面临同样的威胁!   为了帮助开发者在版本更新,

「腾讯视频」微信小程序插件介绍

上期,我们在<从原理到应用,一文带你了解小程序插件能力>一文中介绍了小程序插件的意义.作用以及应用.今天开始,我们会每期与大家分享一款优秀的小程序插件,从使用场景到使用方法,都将作出详细的介绍. 第一期与大家分享的小程序插件,是「腾讯视频」插件. 「腾讯视频」插件能做什么? 如果你有一个电商小程序,想在其中增加商品介绍视频,少不了会担心搭建视频服务开发成本太大的问题: 如果你有一个餐饮类小程序,想在其中增加菜品介绍视频,少不了会担心带宽成本太高的问题: 如果你有一个门票预订小程序,想在其中增加