package com.android.reverse.collecter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import com.android.reverse.util.NativeFunction;
public class MemDump {
private static void saveByteBuffer(OutputStream out, ByteBuffer data) {
data.order(ByteOrder.LITTLE_ENDIAN);
byte[] buffer = new byte[8192];
data.clear();
while (data.hasRemaining()) {
int count = Math.min(buffer.length, data.remaining());
data.get(buffer, 0, count);
try {
out.write(buffer, 0, count);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
public static void dumpMem(String filepath, int start, int length) {
ByteBuffer buffer = NativeFunction.dumpMemory(start, length);
File file = new File(filepath);
if (!file.exists()) {
try {
file.createNewFile();
file.setWritable(true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
saveByteBuffer(new FileOutputStream(file), buffer);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void dumpMem(OutputStream outstream, int start, int length) {
ByteBuffer buffer = NativeFunction.dumpMemory(start, length);
saveByteBuffer(outstream, buffer);
}
}