Android签名工厂

来源:未知 责任编辑:智问网络 发表时间:2013-10-22 20:07 点击:

随手写的一个签名程序,Linux内核监听(监听文件夹内文件的变化),只要将你的文件后缀改成unsigned.apk放入到监听的目录即可快速签名。

希望对需要天天签名而烦恼的人有用哈。

 

 http://weibo.com/myzoooo

 

C代码

#include <unistd.h> 

#include <sys/inotify.h> 

#include <stdio.h> 

#include <string.h> 

 

#define MAX_BUF_SIZE 1024 

#define CHECK_PATH "/home/ffly/Desktop" 

 

int check_name(char *apk_name); 

int sign_apk(char *apk_name,char *apk_path); 

 

int check_dir(char *path) 

    int fd, wd; 

    int len, index; 

    char buffer[MAX_BUF_SIZE]; 

    struct inotify_event *event; 

    fd = inotify_init(); 

    if(fd < 0){ 

        printf("Failed to initialize inotify.\n"); 

        return 1; 

    } 

    wd = inotify_add_watch(fd, path,IN_CLOSE_WRITE | IN_MOVED_TO); 

    if(wd < 0){ 

        printf("Can't add watch for %s", path); 

        return 1; 

    } 

    while(len = read(fd, buffer, MAX_BUF_SIZE)){ 

        index = 0; 

        while(index < len){ 

            event = (struct inotify_event *)(buffer+index); 

            if(event->wd != wd) 

                continue; 

            if((event -> mask & IN_CLOSE_WRITE) || (event -> mask & IN_MOVED_TO)){ 

        int boolean; 

        char pathbuff[512]; 

        boolean = check_name(event->name); 

        sprintf(pathbuff,"%s/%s",CHECK_PATH,event->name); 

        if(boolean){ 

            sign_apk(event->name,pathbuff); 

        } 

        } 

            index += sizeof(struct inotify_event)+event->len; 

        } 

    } 

    return 0; 

 

int check_name(char *apk_name){ 

    int len,fix_len,idx,j,count; 

    char a,b; 

    char fix[] = "unsigned.apk"; 

    len = strlen(apk_name); 

    fix_len = strlen(fix); 

    count =0; 

    if(len<=fix_len) 

        return 0; 

    for(idx = len-fix_len,j = 0;idx<len;idx++,j++){ 

 

        a = apk_name[idx]; 

        b = fix[j]; 

        if(a == b){ 

            count++; 

        }else{ 

            count =0; 

            j=0; 

        } 

         if(count == fix_len) 

                   return 1; 

    } 

    return 0; 

 

int sign_apk(char *apk_name,char *apk_path){ 

    pid_t child_id; 

    child_id  = fork(); 

    char new_path_buf[512]; 

    sprintf(new_path_buf,"%s-signed.apk",apk_path); 

    printf("signed fileName:%s\n",apk_name); 

 

    if(child_id==0){  

        execl("/usr/bin/jarsigner","jarsigner","-storepass","ffly20110811","-keystore","/home/ffly/bin/lib/signapk_key/ffly.keystore","-signedjar",new_path_buf,apk_path,"ffly.keystore",(char *)0); 

    } 

     

    return 0; 

 

int main(){ 

    check_dir(CHECK_PATH); 

    return 0; 

}   

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1