今天练练手 做一个跳过签名验证的练习
下手的app :
首先拖入AndroidKiller
选择不分析
编译打包
拖入模拟器
发现直接停止运行
下面来找原因
拖入GDA3.72 打开入口 发现可以函数调用
进去看看
读取了签名 但是没有干啥事情
进kille把这段改掉,试试看
发现崩溃依旧
继续回到入口找
可可疑 进去看看
发现是native
搜索加载的so
在这里
拖入ida 找这个地方
发现是静态注册 直接进去f5
跟进去
就是这里了
返回上一级 把调用的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
.text:00000D44 ; int __fastcall Java_com_bug_bt_MainActivity_bug(JNIEnv *env, jobject obj)
.text:00000D44 EXPORT Java_com_bug_bt_MainActivity_bug
.text:00000D44 Java_com_bug_bt_MainActivity_bug ; DATA XREF: LOAD:00000174↑o
.text:00000D44 ; __unwind {
.text:00000D44 000 10 B5 PUSH {R4,LR}
.text:00000D46 008 04 1C MOVS R4, R0
.text:00000D48 008 FF F7 58 FF BL getSignHashCode ; 这几句干掉 不去调用就可以 具体方法就是nop掉 ida装一个keypatch 直接改
.text:00000D4C 008 22 68 LDR R2, [R4]
.text:00000D4E 008 04 49 LDR R1, =(aHttpWwwBtsouOr - 0xD58) ; "http://www.btsou.org/web?q="
.text:00000D50 008 A7 23 9B 00 MOVS R3, #0x29C
.text:00000D54 008 79 44 ADD R1, PC ; "http://www.btsou.org/web?q="
.text:00000D56 008 D3 58 LDR R3, [R2,R3]
.text:00000D58 008 20 1C MOVS R0, R4
.text:00000D5A 008 98 47 BLX R3
.text:00000D5C 008 10 BD POP {R4,PC}
.text:00000D5C ; End of function Java_com_bug_bt_MainActivity_bug
|
成功!