안 드 로 이 드 서명 공장

3000 단어 android
손 쉽게 쓴 서명 프로그램 입 니 다. Linux 커 널 감청 (감청 폴 더 내 파일 의 변화) 은 파일 접 두 사 를 unsigned. apk 로 바 꾸 어 감청 디 렉 터 리 에 넣 으 면 빠 른 서명 을 할 수 있 습 니 다.
매일 사인 이 필요 해서 고민 하 는 사람 에 게 도움 이 됐 으 면 좋 겠 어 요.
 
 http://weibo.com/myzoooo
 
#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.
"); 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
",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; }

좋은 웹페이지 즐겨찾기