二进制安卓
① 如何编译android 可执行的二进制文件
Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码。 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能。 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧。 首先我们需要的工具是dex2jar和jd-gui 其中第一个工具dex2jar是用来把classex.dex文件也就是dex二进制码转化为java的标准.class二进制码,然后jd-gui是把标准的.class二进制码再反编译为java源码。 首先从apk包里面提取出classes.dex 放到dex2jar目录下 然后在命令行下执行 dex2jar.bat classes.dex 这时执行成功后会生成一个classes.dex.dex2jar.jar文件 这个文件再用jd-gui打开,如下图 几乎跟我自己写的这个程序的源码一样 提供这个反编译方法主要用于大家学习与研究,有问题可以与我邮件讨论。 希望大家不要用这个方法从事恶意的活动,毕竟,别人辛辛苦苦写程序也不容易,用这个方法可以大致的学习到别人写的程序的逻辑,架构,希望对大家有所帮助。 Android 逆向apk程序的心得 本文主要介绍如何逆向一个Android的APK应用程序,本文提供的方法仅供研究学习之用。 本文需要用到的工具有 jdk 这个用于搭建java运行环境 AXMLPrinter2.jar 这个用于逆向.xml文件 baksmali.jar 这个用于逆向classex.dex文件 由于Android的.apk文件实际上就是一个zip文件 可以直接用winrar打开
② 安卓如何将二进制流解析成为图片
Android图片二进制与Bitmap、Drawable之间的回转换答
http://www.apkbus.com/thread-318870-1-1.html
③ 安卓手机su二进制文件过旧解决方法
很多网友说安装个一键VPN,搜了一下很多都叫一键VPN哪个才是需要的呢。。。最后试了几个才发现原来是叫“VPN专线”的那个才是。
给大家挂上大家也就不用找了。
安装完成后连接GPRS,进入VPN专线,点击后面的“关闭”(我觉得应该这个俺就改成开启,用灰暗决定开关看着不太舒服)。然后连接成功进入SUPEUSER更新,2秒钟不到。OK了。。。
④ 安卓的su二进制文件可以手动替换吗,这个文件路径在哪里呢
你要能有办法写Android设备的/system分区,那把su放在/system/bin目录就可以。
关键是,/system分区默认是只读的,没有常专规手段可以remount这各属分区。如果你有办法做到把su替换掉,那就相当于破解系统了。
看楼主是在网络知道里提的这个问题,我想楼主的意图应该不是破解系统。
在已经root了的手机上替换这个文件自然是简单,然而既然已经root,其实替换它就没什么卵用了。
综上,大体来说,不可以手动替换su命令。
⑤ android 怎么发送post请求并接收二进制数据
可使用android自带的httpclient框架实现向服务器发起get或post请求,以下为完整的示例代码:
1. GET 方式传递参数
//先将参数放入List,再对参数进行URL编码
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "数据")); //增加参数1
params.add(new BasicNameValuePair("param2", "value2"));//增加参数2
String param = URLEncodedUtils.format(params, "UTF-8");//对参数编码
String baseUrl = "服务器接口完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//将URL与参数拼接
HttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse response = httpClient.execute(getMethod); //发起GET请求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取服务器响应内容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2. POST方式 方式传递参数
//和GET方式一样,先将参数放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));//增加参数1
params.add(new BasicNameValuePair("param2", "第二个参数"));//增加参数2
try {
HttpPost postMethod = new HttpPost(baseUrl);//创建一个post请求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
HttpResponse response = httpClient.execute(postMethod); //执行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}