錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁(yè)
topFlag3 收藏本站
 
maojin003 首 頁(yè) 公司介紹 服務(wù)項(xiàng)目 服務(wù)報(bào)價(jià) 維修流程 IT外包服務(wù) 服務(wù)器維護(hù) 技術(shù)文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù)技術(shù)文章
【練手】阿里crackme的新解法-frida

作者: watchdoge  日期:2017-05-16 19:53:31   來(lái)源: 本站整理

 
 


最近在看FrIDA,又看壇子里PJ頭狼的帖子http://www.52pojie.cn/thread-559205-1-1.html,

于是順手用frida來(lái)試試,對(duì)于這題frida有個(gè)很大的優(yōu)勢(shì),就是不會(huì)觸發(fā)反調(diào)試,這樣就節(jié)省了很多功夫。
先簡(jiǎn)單介紹下frida,frida是一款代碼插樁工具,它可以向windows,macOS,Linux,iOS,Android等平

臺(tái)的原生應(yīng)用中注射自定義的JavaScript代碼片段,它的主要作用有:

  • Access process memory
  • Overwrite functions while the application is running
  • Call functions from imported classes
  • Find object instances on the heap and use them
  • Hook, trace and intercept functions etc.

0x01 簡(jiǎn)單地繞過驗(yàn)證
如果只是想繞過驗(yàn)證的話,那么非常簡(jiǎn)單,通常思路是反編譯成smali文件然后編輯這里的代碼,

然后重新打包簽名,不過這里我們用frida也很容易實(shí)現(xiàn),用下面的代碼在java層hook住這個(gè)securityCheck函數(shù),直接重新編寫其邏輯:

[JavaScript] 純文本查看 復(fù)制代碼
1
2
3
4
5
6
7
8
send("Running Script");
Java.perform(function(){
    MainActivity = Java.use("com.yaotong.crackme.MainActivity");
    MainActivity.securityCheck.implementation = function(v){
        send("securityCheck hooked");
        return true;
    }
});


0x02 獲取密碼
我們的主要目的當(dāng)然還是獲取到正確的密碼,這個(gè)程序的具體情況不細(xì)說(shuō)了,

感興趣的可以自己分析或者看頭狼的那篇帖子,其驗(yàn)證邏輯如下:
 
最核心的就是將我們的輸入與off_628c所指向的值做比較,而我們?cè)谶@里用frida來(lái)獲取程序運(yùn)行時(shí)該處的值,frida提供了劫持native函數(shù)以及操作內(nèi)存的一系列方法,首先我們需要通過導(dǎo)出函數(shù)表獲取securityCheck這個(gè)函數(shù)的地址

[JavaScript] 純文本查看 復(fù)制代碼
1
2
3
4
5
6
7
8
9
var securityCheck = undefined;
    exports = Module.enumerateExportsSync("libcrackme.so");
    for(i=0; i<exports.length; i++){
        if(exports[i].name == "Java_com_yaotong_crackme_MainActivity_securityCheck"){
            securityCheck = exports[i].address;
            send("securityCheck is at " + securityCheck);
            break;
        }
    }

然后就是讀取off_628C的值了,在ida的exports里可以看到該函數(shù)的偏移為0x11A8,因此可以通過函數(shù)當(dāng)前地址減0x11A8再加0x628C,然后用Memory.readPointer獲取該處所指向的地址,最后用Memory.readUtf8String讀取最終的結(jié)果,所有的代碼如下:
[Python] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env python
# coding=utf-8
from __future__ import print_function
import frida,sys
 
native_hook_code = """
Java.perform(function(){
    send("Running Script");
 
    var securityCheck = undefined;
    exports = Module.enumerateExportsSync("libcrackme.so");
    for(i=0; i<exports.length; i++){
        if(exports[i].name == "Java_com_yaotong_crackme_MainActivity_securityCheck"){
            securityCheck = exports[i].address;
            send("securityCheck is at " + securityCheck);
            break;
        }
    }
 
    Interceptor.attach(securityCheck,{
        onEnter: function(args){
            send("key is: " + Memory.readUtf8String(Memory.readPointer(securityCheck.sub(0x11a8).add(0x628c))));
        }
    });
});
"""
 
check_hook_code = """
    send("Running Script");
Java.perform(function(){
    MainActivity = Java.use("com.yaotong.crackme.MainActivity");
    MainActivity.securityCheck.implementation = function(v){
        send("securityCheck hooked");
        return true;
    }
});
"""
 
def on_message(message, data):
    if message['type'] == 'send':
        print(" {0}".format(message['payload']))
    else:
        print(message)
 
process = frida.get_device_manager().enumerate_devices()[-1].attach("com.yaotong.crackme")
script = process.create_script(native_hook_code)
script.on('message', on_message)
script.load()
sys.stdin.read()

結(jié)果如圖:
 

 



熱門文章
  • 機(jī)械革命S1 PRO-02 開機(jī)不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點(diǎn)不...
  • 三星一體激光打印機(jī)SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數(shù)和判...
  • IIS 8 開啟 GZIP壓縮來(lái)減少網(wǎng)絡(luò)請(qǐng)求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對(duì)講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機(jī)始終停留在開機(jī)界面...
  • 常見打印機(jī)清零步驟
  • 安裝驅(qū)動(dòng)時(shí)提示不包含數(shù)字簽名的解...
  • 共享打印機(jī)需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機(jī)的...
  • 錦州廣廈電腦上門維修

    報(bào)修電話:13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號(hào):遼ICP備2023002984號(hào)-1
    上門服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護(hù),上門維修電腦,黑屏藍(lán)屏死機(jī)故障排除,無(wú)線上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 亚洲国产超清无码专区| 久久老子午夜精品无码| 国产午夜无码片在线观看| 亚洲熟妇无码一区二区三区| 精品无码人妻一区二区免费蜜桃| 国产精品无码制服丝袜| 精品久久久久久无码免费| 无码少妇一区二区性色AV | 亚洲精品无码久久久久| 欲色aV无码一区二区人妻| 特级无码a级毛片特黄| 水蜜桃av无码一区二区| 国产激情无码一区二区| 国产台湾无码AV片在线观看| 国产成人无码区免费A∨视频网站| 精品久久久久久无码中文字幕| 亚洲av无码国产综合专区| 国产在线无码视频一区二区三区 | 亚洲αⅴ无码乱码在线观看性色| 亚洲人成网亚洲欧洲无码久久| 亚洲AV无码乱码麻豆精品国产| 伊人久久无码中文字幕| 免费无码国产V片在线观看| 亚洲日韩乱码中文无码蜜桃| 中国少妇无码专区| 在线观看片免费人成视频无码| 亚洲人成网亚洲欧洲无码| 日韩人妻无码一区二区三区99| 中文字幕精品无码久久久久久3D日动漫| 亚洲av无码一区二区三区观看| 无码人妻精品中文字幕免费| 中文字幕日韩精品无码内射| 国产高新无码在线观看| 国产精品无码素人福利| 人妻少妇无码视频在线| 中日精品无码一本二本三本| 红桃AV一区二区三区在线无码AV| 狠狠噜天天噜日日噜无码| 久久午夜无码鲁丝片午夜精品| 中文无码熟妇人妻AV在线| 亚洲桃色AV无码|