Android编码-将文件从应用程序内存传输到设备存储
我试图弄清楚应用程序是如何从蓝牙设备下载文件的,我想知道如何将文件从该设备下载到我的手机存储器中,附件是它用来读取应用程序内部文件的方法,它是从APK中提取的,但我不确定如何处理,因为我不明白它的作用Android编码-将文件从应用程序内存传输到设备存储,android,bluetooth,reverse-engineering,Android,Bluetooth,Reverse Engineering,我试图弄清楚应用程序是如何从蓝牙设备下载文件的,我想知道如何将文件从该设备下载到我的手机存储器中,附件是它用来读取应用程序内部文件的方法,它是从APK中提取的,但我不确定如何处理,因为我不明白它的作用 public int DownloadSDfile(char[] inpath, byte[] indata, int len) { char[] cArr = inpath; byte[] bArr = indata; int i = len; byte[] Se
public int DownloadSDfile(char[] inpath, byte[] indata, int len) {
char[] cArr = inpath;
byte[] bArr = indata;
int i = len;
byte[] SendBuffer = new byte[2080];
byte[] ReceivedBuffer = new byte[2080];
int start_addr = 0;
int crcbuf = getBufCRC(bArr, i, 0);
int sendlen = 0 + 1;
byte b = 72;
SendBuffer[0] = 72;
int sendlen2 = sendlen + 1;
SendBuffer[sendlen] = 1;
int sendlen3 = sendlen2 + 1;
SendBuffer[sendlen2] = (byte) (i >> 24);
int sendlen4 = sendlen3 + 1;
SendBuffer[sendlen3] = (byte) (i >> 16);
int sendlen5 = sendlen4 + 1;
SendBuffer[sendlen4] = (byte) (i >> 8);
int sendlen6 = sendlen5 + 1;
SendBuffer[sendlen5] = (byte) (i >> 0);
int filelen = cArr.length;
int j = 0;
while (j < filelen) {
SendBuffer[sendlen6] = (byte) cArr[j];
j++;
sendlen6++;
}
int sendlen7 = sendlen6 + 1;
SendBuffer[sendlen6] = 0;
User_SendData(128, SendBuffer);
int i2 = filelen;
if (User_ReceiveData(ReceivedBuffer, 4000) == 0) {
return 33;
}
if (ReceivedBuffer[0] != 72) {
return 34;
}
if (ReceivedBuffer[1] != 1) {
return 35;
}
byte b2 = 2;
if (ReceivedBuffer[2] != 121) {
return 36;
}
int k = 0;
while (true) {
int sendlen8 = sendlen7;
if (k < i / 2048) {
int sendlen9 = 0 + 1;
SendBuffer[0] = b;
int sendlen10 = sendlen9 + 1;
SendBuffer[sendlen9] = b2;
int sendlen11 = sendlen10 + 1;
SendBuffer[sendlen10] = 8;
int sendlen12 = sendlen11 + 1;
SendBuffer[sendlen11] = 0;
int sendlen13 = sendlen12 + 1;
SendBuffer[sendlen12] = (byte) (start_addr >> 24);
int sendlen14 = sendlen13 + 1;
SendBuffer[sendlen13] = (byte) (start_addr >> 16);
int sendlen15 = sendlen14 + 1;
SendBuffer[sendlen14] = (byte) (start_addr >> 8);
int sendlen16 = sendlen15 + 1;
SendBuffer[sendlen15] = (byte) (start_addr >> 0);
int j2 = 0;
while (j2 < 2048) {
SendBuffer[sendlen16] = bArr[start_addr];
j2++;
sendlen16++;
start_addr++;
}
User_SendData(sendlen16, SendBuffer);
if (User_ReceiveData(ReceivedBuffer, 15000) == 0) {
return 49;
}
if (ReceivedBuffer[2] != 121) {
return 50;
}
k++;
sendlen7 = sendlen16;
b2 = 2;
b = 72;
} else {
if (i % 2048 != 0) {
int sendlen17 = 0 + 1;
SendBuffer[0] = 72;
int sendlen18 = sendlen17 + 1;
SendBuffer[sendlen17] = 2;
int sendlen19 = sendlen18 + 1;
SendBuffer[sendlen18] = (byte) ((i % 2048) / 256);
int sendlen20 = sendlen19 + 1;
SendBuffer[sendlen19] = (byte) ((i % 2048) % 256);
int sendlen21 = sendlen20 + 1;
SendBuffer[sendlen20] = (byte) (start_addr >> 24);
int sendlen22 = sendlen21 + 1;
SendBuffer[sendlen21] = (byte) (start_addr >> 16);
int sendlen23 = sendlen22 + 1;
SendBuffer[sendlen22] = (byte) (start_addr >> 8);
int sendlen24 = sendlen23 + 1;
SendBuffer[sendlen23] = (byte) (start_addr >> 0);
int j3 = 0;
while (j3 < i % 2048) {
SendBuffer[sendlen24] = bArr[start_addr];
j3++;
sendlen24++;
start_addr++;
}
User_SendData(2056, SendBuffer);
if (User_ReceiveData(ReceivedBuffer, 15000) == 0) {
return 51;
}
if (ReceivedBuffer[2] != 121) {
return 52;
}
int i3 = sendlen24;
} else {
int i4 = sendlen8;
}
int sendlen25 = 0 + 1;
SendBuffer[0] = 72;
int sendlen26 = sendlen25 + 1;
SendBuffer[sendlen25] = 3;
int sendlen27 = sendlen26 + 1;
SendBuffer[sendlen26] = (byte) (crcbuf / 256);
int i5 = sendlen27 + 1;
SendBuffer[sendlen27] = (byte) (crcbuf % 256);
User_SendData(128, SendBuffer);
if (User_ReceiveData(ReceivedBuffer, 6000) == 0) {
return 65;
}
if (ReceivedBuffer[2] != 121) {
return 66;
}
return 0;
}
}
}
public int DownloadSDfile(char[]inpath,byte[]indata,int len){
char[]cArr=inpath;
字节[]bArr=indata;
int i=len;
字节[]SendBuffer=新字节[2080];
字节[]ReceivedBuffer=新字节[2080];
int start_addr=0;
int crcbuf=getBufCRC(bArr,i,0);
int sendlen=0+1;
字节b=72;
SendBuffer[0]=72;
int sendlen2=sendlen+1;
SendBuffer[sendlen]=1;
int sendlen3=sendlen2+1;
SendBuffer[sendlen2]=(字节)(i>>24);
int sendlen4=sendlen3+1;
SendBuffer[sendlen3]=(字节)(i>>16);
int sendlen5=sendlen4+1;
SendBuffer[sendlen4]=(字节)(i>>8);
int sendlen6=sendlen5+1;
SendBuffer[sendlen5]=(字节)(i>>0);
int filelen=cArr.length;
int j=0;
而(j>24);
int sendlen14=sendlen13+1;
SendBuffer[sendlen13]=(字节)(开始地址>>16);
int sendlen15=sendlen14+1;
SendBuffer[sendlen14]=(字节)(开始地址>>8);
int sendlen16=sendlen15+1;
SendBuffer[sendlen15]=(字节)(开始地址>>0);
int j2=0;
而(j2<2048){
SendBuffer[sendlen16]=bArr[start_addr];
j2++;
sendlen16++;
start_addr++;
}
用户_SendData(sendlen16,SendBuffer);
如果(用户接收数据(接收缓冲区,15000)==0){
返回49;
}
如果(接收缓冲[2]!=121){
返回50;
}
k++;
sendlen7=sendlen16;
b2=2;
b=72;
}否则{
如果(i%2048!=0){
int sendlen17=0+1;
SendBuffer[0]=72;
int sendlen18=sendlen17+1;
SendBuffer[sendlen17]=2;
int sendlen19=sendlen18+1;
SendBuffer[sendlen18]=(字节)((i%2048)/256);
int sendlen20=sendlen19+1;
SendBuffer[sendlen19]=(字节)((i%2048)%256);
int sendlen21=sendlen20+1;
SendBuffer[sendlen20]=(字节)(开始地址>>24);
int sendlen22=sendlen21+1;
SendBuffer[sendlen21]=(字节)(开始地址>>16);
int sendlen23=sendlen22+1;
SendBuffer[sendlen22]=(字节)(开始地址>>8);
int sendlen24=sendlen23+1;
SendBuffer[sendlen23]=(字节)(开始地址>>0);
int j3=0;
而(j3
谢谢你的时间