一个被众多逆向人员凌辱的app --> 某du牛

一 前言

app版本:4.54
抓包工具:Charles
反汇编工具:JEB、JADX
inject:frida
查壳:360加固

二 抓包

2.1 Headers

POST: /api/user/login HTTP/1.1
Content-Type: application/json; charset=utf-8
User-Agent: Dalvik/2.1.0 (Linux; U; Android 8.1.0; Pixel 2 XL Build/OPM4.171019.021.R1)
Host: api.dodovip.com
Accept-Encoding: gzip
Content-Length: 262
Connection: keep-alive

2.2 Text

{"Encrypt":"NIszaqFPos1vd0pFqKlB42Np5itPxaNH//FDsRnlBfgL4lcVxjXii+GOZz1l+A5V9FPOSMf47jbE\n010Kk+PbNyEDRjj1zY76jXa7VyHLkjxpqsrJYht6LX1PcVabK8oBp/fiOE4l2lC5JVjqx/JI7CJm\neUXVXkgJ6rgPne3WCJUYU+ztDNEi+mvECeOktUk0KxqBbPzuJj3LKsW5Ux080rWm4NZWHxPFbZYl\nIs2IRcs=\n"}

2.3 Response

2v+DC2gq7RuAC8PE5GZz5wH3/y9ZVcWhFwhDY9L19g9iEd075+Q7xwewvfIN0g0ec/NaaF43/S0=

多次抓包仅 Encrypt 参数变化,需要分析的就是它了。

三 脱壳

上脚本,手机端启动fs后执行即可,脱壳的dex会在/data/data/com.dodonew.online目录下: 

1

2

3

4

5

6

7

8

9

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

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

function find_hook_fun() {

    var fun_Name = "";

    var libart = Module.findBaseAddress('libart.so');   //查找基地址

    var exports = Module.enumerateExportsSync("libart.so");

    for(var i=0; i<exports.length; i++){

        if(exports[i].name.indexOf("OpenMemory") !== -1){

            fun_Name = exports[i].name;

            console.log("导出模块名: " + exports[i].name + "\t\t偏移地址: "+ (exports[i].address - libart - 1));

            break;

        }else if(exports[i].name.indexOf("OpenCommon") !== -1){

            fun_Name = exports[i].name;

            console.log("导出模块名: " + exports[i].name + "\t\t偏移地址: "+ (exports[i].address - libart - 1));

            break;

        }

    }

    return fun_Name;

}

function DexFileVerifier(Verify){

    var magic_03x = true;

    var magic_Hex = [0x640x650x780x0a0x300x330x350x00];

    for(var i = 0; i < 8; i++){

        if(Memory.readU8(ptr(Verify).add(i)) !== magic_Hex[i]){

            if(Memory.readU8(ptr(Verify).add(i)) === 0x37 || 0x38){

                console.log('new dex');

            }else{

                magic_03x = false;

                break;

            }

        }

    }

    return magic_03x;

}

function dump_Dex(fun_Name, apk_Name){

    if (fun_Name !== ''){

        var hook_fun = Module.findExportByName("libart.so", fun_Name);

        Interceptor.attach(hook_fun, {

            onEnter: function (args) {

                var begin = 0;

                var dex_flag = false;

                dex_flag = DexFileVerifier(args[0]);

                if(dex_flag === true){

                    begin = args[0];

                }

                if(begin === 0){

                    dex_flag = DexFileVerifier(args[1]);

                    if(dex_flag === true){

                        begin = args[1];

                    }

                }

                if(dex_flag === true){

                    console.log("magic : " + Memory.readUtf8String(begin));

                    var address = parseInt(begin,16+ 0x20;

                    var dex_size = Memory.readInt(ptr(address));

                    console.log("dex_size :" + dex_size);

某flutter-app逆向分析是指对于一个使用flutter框架开发的应用进行逆向工程分析。逆向工程是通过分析应用的代码、二进制文件等来了解其内部实现细节。 首先,我们需要获取该应用的安装包文件(APK或IPA文件),然后进行解包操作,将其转换为可读取的文件目录结构。 接下来,我们可以使用一些工具来提取应用的资源文件、代码文件等。对于flutter-app来说,可以提取出dart文件,这是flutter的主要代码文件,其中包含了应用的逻辑实现。 通过阅读dart文件,我们可以了解应用的代码结构、数据模型、界面设计等。可以分析应用的逻辑实现方法,包括各种函数、类、方法的调用关系。 同时,还可以通过分析相关配置文件、资源文件等来了解应用的各种设置、资源加载方式等。 在逆向过程中,还可以使用一些调试工具来进一步了解应用的运行机制。例如,hook工具可以拦截应用的函数调用,并捕获输入输出数据,用于进一步分析。 逆向分析的目的可以有很多,比如了解应用的工作原理、发现潜在的漏洞或安全问题、提供参考用于自己的开发等。 需要注意的是,逆向分析需要遵守法律规定。未经授权的逆向分析可能侵犯他人的知识产权,涉及到隐私等方面的问题。因此,在进行逆向分析之前,应该了解并遵守当地相关法律法规,避免产生法律纠纷。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值