Crash, Crash, Crash

最近开发项目碰到了个很神奇的野指针问题,在arm64下正常,armv7a下炸了,然而这个项目是从C代码移植过来的,ndk那边只做了层CPP的封装,配置gradle的时候,直接指定了外部cmake,因此没办法直接用android studio调试,至少我不知道有什么办法可以导入源码。

然后你看logcat,炸了就一条简单的Fatal signal X,真的是让人摸不到头脑,本来想挂lldb的,但实在懒癌,不过没办法,就搜了下buildin的lldb在哪里,结果被引导到了谷歌的调试页面:

https://developer.android.com/ndk/guides/debug

[……]

查看文章

认真你就输系列 – Arm间接寻址

我们都知道x86中的寻址相对于arm稍微简单一些,arm因无法直接操作内存地址,所以需要使用成对的ldr和str指令完成操作,因此,在操作一些常量或者字符串的时候,免不了要寻址,常见的教程版本大概是这样子讲的(摘抄):

汇编器编译后,反汇编看大概是长这样的:

乍一看没什么问题吧?ldr r0, [pc, #12],PC + 12的地址就是变量地址,那么我们找一个真实世界里面的例子,随便一个android arm的so文件好了,原因呢,是因为有人问我ida里面为什么用这种方式表示

说实话我也只是知道这里是把字符串加载进来,但从来没较真过这个问题,结果认真就输了,问[……]

查看文章

Tracing

最近感觉记忆力衰退,遂写几篇文章进行备忘。
代码分析的过程中,经常会碰到大坨难懂的逻辑(比如动态的函数指针,鬼知道它跳到哪里去了),或是难以定位关键点的问题,这个时候就需要tracing技术了,把所有的调用记录下来,再静态分析对流程进行梳理。
用tracing技术可以用来对付那些恶心的混淆(ollvm一类),或者找到程序的执行路径,但依旧免不了大量的人肉分析工作,很多时候并不会起到关键性的作用,所以我时常在想,如果我能针对trace的结果做些自动化的话,可能会有奇效,之前画眉的课程里面,他曾经说过,如果破解程序的时候可以记录全部的jcc指令,对比下用正确激活码走的流程是怎样的(虽说大部分程序有[……]

查看文章

“合法”の酷鸟浏览器

注意!本文不是广告,更不是软文,找激活码请绕道,咱根本就没用过

好吧,我承认标题有点戏虐,今天群里看到张图

emmmm,从哪里开始吐槽呢?什么时候访问国外热门网站不合法了吗?当然不会讨论这种无聊话题的话~

下载到的是一个安装包,我虚拟机前段时间搞炸了,也懒得装了,毕竟听说要用的话也得实名注册 + 激活码,更何况我只是好奇。

那么工具人一号上线了——7zip

安装包里面毫不掩饰的就一个chrome呗,这道也没啥好吐槽的。

再往里面有一个比较引人注目的目录名:

喵喵喵?

ss-local.exe 这名字也太眼熟了吧?

工具……啊呸,[……]

查看文章

Java/Android手工去字符串混淆

去除java字符串混淆的工具一直不少,这里推荐几个比较好用的:

Simplify(https://github.com/CalebFenton/simplify

这个看介绍是挺不错的,但实际使用中,很是鸡肋,执行效率低的恐怖,而且很大可能完全没作用

Dex-orcale(https://bbs.pediy.com/thread-253522.htm

没给原始GitHub链接的原因是,这个项目已经不在维护了,可能无法直接拿来用,附上大佬魔改版,可以直接拿来用

Dex2Jar附带工具(https://github.com/pxb1988/dex2jar/wiki/[……]

查看文章

Java/android大型工程分析工具

能用于反编译apk/class的反编译器有很多,实际工作中几乎体验过所有的反编译器后,发现大型项目的分析,还是用ide比较方便。

众所周知,IntelliJ idea有一个很棒的反编译器,但我曾经搜索过,并没有独立版,直到今天我才知道这个东西是开源的:https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine

这个东西是可以命令行工作的,但我估计也没人愿意下载整个idea的源码去编译,不过没关系,不需要我们自己去编译它,有个叫bytecode viewer的项目[……]

查看文章

pycharm开发idapython

试了N多文本编辑器,智能提示都很不理想,包括用了Visual Studio这种宇宙第一ide也不行(还碰到了一堆bug),下载了一个pycharm community版本,导入script之后,再把ida安装目录下的python整个导入并设置为source root就可以了,整体体验十分好,强力推荐~

[……]

查看文章

“虚拟大师”,GPLv3你都敢抄

这篇文档只是个无聊的存档, 预防打脸,先写一行 ,我目前无法确定anbox的这个开源虚拟机是否给国内 http://www.vmos.com 这家公司授权可以使用源代码。

嘛,事情的经过呢,就是张总发了个A岛看到的图片,叫安卓上首款安卓虚拟机,大家都觉得又是什么无聊的Virtual App技术+Xposed,抱着看看玩的心态,我下载了一个,结果扔到虚拟机里面无法执行,应用我懒得反编译,就直接抓了网络请求:http://files.vmos.com/romVersion/2019041822533879694.zip

下载下来呢,200多M,还真的是个安卓的镜像文件!

于是[……]

查看文章

ELF Dump文件修复(一) ELF文件结构

写这个文章呢,无非就一个理由,巩固基础,不过我这种逆向思维的性格,大家大概也知道这系列文章的走向。

关于ELF的一些结构呢,我就不在这里浪费篇幅了,随便找几篇文章都比我讲得好,这里我只提一些关联性的总结。

在program header table里面

e_phoff

e_phnum 

e_phentsize

表示program headers的偏移数量和大小,用来定位program header

区段表包含了节区的所有信息,需要链接的情况下必须有这个表

而接下来我们应该关心的就是区段表中的Load段了

LOAD表示一个需[……]

查看文章