首页
社区
课程
招聘
已解决
发表于: 2016-4-13 00:50 8925

已解决

2016-4-13 00:50
8925
已解决。。。。。。。。。。。。。。。。。。。。。。。。。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (29)
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
。。。。。。。。。。。。。。。。。。。。。。
2016-4-13 01:04
0
雪    币: 46
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
静态解析elf找plt表项里对应的函数即可
2016-4-13 09:16
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢,大大
2016-4-13 09:41
0
雪    币: 343
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
哎。。。。
2016-4-13 09:57
0
雪    币: 3836
活跃值: (4218)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
gettpid在c库里面,用你的代码解析libc.so应该就可以获取到.
2016-4-13 09:57
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
- - 还是 谢谢你
2016-4-13 10:10
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
8
哎,真不想喷你,看你写的那么兴起,动不动就要写什么加壳器,连系统函数地址都不知道怎么找,先去学学什么叫加载器吧,另外不要动不动就提vmp,代码加解密跟vmp是一个概念吗,不说了
2016-4-13 10:11
0
雪    币: 370
活跃值: (1175)
能力值: ( LV9,RANK:310 )
在线值:
发帖
回帖
粉丝
9
我觉得现阶段研究这样加密的意义不太大,多研究下其他技术吧。
2016-4-13 10:17
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
不能直接 BL 跳转 静态偏移地址,否则程序启动地址肯定不对,动态地址应该是 Lib模块基地址 + 静态偏移地址 肯定不对。
2016-4-13 10:21
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
大大息怒。。。。我新上手的,比较陌生,慧根低,无法实现Vmp,但是Vmp的代码标记 我模仿了,可以让用户通过我给的内联汇编 标记任何一段代码的始末。。。。从而实现加密解密做准备。
2016-4-13 10:26
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
12
大大终于出现了。。。。我是带着项目 提问题,学习效果好,目标明确。。。。不盲目学习。。。希望大大指点迷津。。。
2016-4-13 10:29
0
雪    币: 343
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
研究意义确实不大。
2016-4-13 10:34
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
本人觉得挺大的,这个就是 静态用 arm汇编 DIY 安卓Elf文件,包括游戏的So文件。
做病毒感染 ,  做游戏外挂补丁,  做后门补丁  做加壳, 都是必备的啊

这个技术不会还 怎么DIY  ELF,还怎么 在安卓移动市场里面驰骋沙场。。。。。得这个技术得安卓移动安全的天下,我可以直接这样说。。。。

因为 目前我们面对的都是 不开源的SO 文件。。。。。。加壳的话不能像韩国人一样说,要求把SO源码给他们,然后他们给你加壳吧。。。。SO源码是一个科技公司的核心知识产品,怎么能随便开源给安全公司去加壳呢?  所以必须静态的给成品SO加壳。。。。
2016-4-13 10:38
0
雪    币: 343
活跃值: (831)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
15
太被容易脱壳了
2016-4-13 11:14
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
16
有本事来拖。。。。我后期DIY 会把功能做强
2016-4-13 11:26
0
雪    币: 76
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
哪些技术比较有意思?想关注下
2016-4-13 12:55
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
18
为了获取模块So基础地址,我用汇编实现了,不用系统函数getpid,但是修改代码段的内存属性,必须用mprotect吗?快成功了。。。。就缺 修改内存属性了。。。
2016-4-13 13:25
0
雪    币: 206
活跃值: (840)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
svc,再说论坛上也有写shellcode的精华文章,年轻真好!
2016-4-13 13:40
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
20
我也不年轻了,希望大家支持我!
2016-4-13 13:44
0
雪    币: 53
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
你是卡在获取外部so的函数地址了吗?这样的话可以解析maps文件找到so的基址,然后根据函数名找到目的进程函数地址。可以参考下下面的代码:
void* get_remote_address(pid_t pid, void *local_addr) {
        char buf[256];
        void* local_start = 0;
        void* local_end = 0;
        void* remote_start = 0;
        void* remote_end = 0;

        if(find_module_info_by_address(-1, local_addr, buf, &local_start, &local_end) < 0) {
                LOGI("[-] find_module_info_by_address FAIL");
                return NULL;
        }

        LOGI("[+] the local module is %s", buf);

        if(find_module_info_by_name(pid, buf, &remote_start, &remote_end) < 0) {
                LOGI("[-] find_module_info_by_name FAIL");
                return NULL;
        }

        return (void *)( (uint32_t)local_addr + (uint32_t)remote_start - (uint32_t)local_start );
}

int find_module_info_by_address(pid_t pid, void* addr, char *module, void** start, void** end) {
        char statline[1024];
        FILE *fp;
        char *address, *proms, *ptr, *p;

        if ( pid < 0 ) {
                /* self process */
                snprintf( statline, sizeof(statline), "/proc/self/maps");
        } else {
                snprintf( statline, sizeof(statline), "/proc/%d/maps", pid );
        }

        fp = fopen( statline, "r" );

        if ( fp != NULL ) {
                while ( fgets( statline, sizeof(statline), fp ) ) {
                        ptr = statline;
                        address = nexttok(&ptr); // skip address
                        proms = nexttok(&ptr); // skip proms
                        nexttok(&ptr); // skip offset
                        nexttok(&ptr); // skip dev
                        nexttok(&ptr); // skip inode

                        while(*ptr != '\0') {
                                if(*ptr == ' ')
                                        ptr++;
                                else
                                        break;
                        }

                        p = ptr;
                        while(*p != '\0') {
                                if(*p == '\n')
                                        *p = '\0';
                                p++;
                        }

                        // 4016a000-4016b000
                        if(strlen(address) == 17) {
                                address[8] = '\0';

                                *start = (void*)strtoul(address, NULL, 16);
                                *end   = (void*)strtoul(address+9, NULL, 16);

                                // printf("[%p-%p] %s | %p\n", *start, *end, ptr, addr);

                                if(addr > *start && addr < *end) {
                                        strcpy(module, ptr);

                                        fclose( fp ) ;
                                        return 0;
                                }
                        }
                }

                fclose( fp ) ;
        }

        return -1;
}

int find_module_info_by_name(pid_t pid, const char *module, void** start, void** end) {
        char statline[1024];
        FILE *fp;
        char *address, *proms, *ptr, *p;

        if ( pid < 0 ) {
                /* self process */
                snprintf( statline, sizeof(statline), "/proc/self/maps");
        } else {
                snprintf( statline, sizeof(statline), "/proc/%d/maps", pid );
        }

        fp = fopen( statline, "r" );

        if ( fp != NULL ) {
                while ( fgets( statline, sizeof(statline), fp ) ) {
                        ptr = statline;
                        address = nexttok(&ptr); // skip address
                        proms = nexttok(&ptr); // skip proms
                        nexttok(&ptr); // skip offset
                        nexttok(&ptr); // skip dev
                        nexttok(&ptr); // skip inode

                        while(*ptr != '\0') {
                                if(*ptr == ' ')
                                        ptr++;
                                else
                                        break;
                        }

                        p = ptr;
                        while(*p != '\0') {
                                if(*p == '\n')
                                        *p = '\0';
                                p++;
                        }

                        // 4016a000-4016b000
                        if(strlen(address) == 17) {
                                address[8] = '\0';

                                *start = (void*)strtoul(address, NULL, 16);
                                *end   = (void*)strtoul(address+9, NULL, 16);

                                // printf("[%p-%p] %s | %p\n", *start, *end, ptr, addr);

                                if(strncmp(module, ptr, strlen(module)) == 0) {
                                        fclose( fp ) ;
                                        return 0;
                                }
                        }
                }

                fclose( fp ) ;
        }

        return -1;
}
2016-4-13 17:03
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
22
[QUOTE=Zkeleven;1424953]你是卡在获取外部so的函数地址了吗?这样的话可以解析maps文件找到so的基址,然后根据函数名找到目的进程函数地址。可以参考下下面的代码:
void* get_remote_address(pid_t pid, void *local_addr) {
        char buf[256];
        void* l...[/QUOTE]
感谢下解答,我现在是要实现 mprotect这个函数。。。。。
类似下面通过函数序号调用。。。

        asm volatile(
        "mov $0x18,%%eax\n\t"
        "int $0x80\n\t"

        "mov %%eax,%0\n\t"

        :"=m"(uid)
        );
2016-4-13 18:04
0
雪    币: 206
活跃值: (840)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
前面提过了,svc,libc.so有你想要的
2016-4-13 20:47
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
24
谢谢大大 大大威武 我这就去研究。。。
2016-4-13 21:20
0
雪    币: 64
活跃值: (67)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
25
ThomasKing 大大 有一篇文章提到   无源码加密SO  ,可惜用了3方SO。。。我今天要实现的  纯汇编静态插入客户的SO实现加密。希望大大指点迷津。。。
2016-4-13 21:56
0
游客
登录 | 注册 方可回帖
返回
//