![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
逆向笔记
文章平均质量分 81
asd
无所事事的程序员
时间留下的痕迹
展开
-
静态分析反调试apk
在进入本节课之前我先问你一个问题什么是反调试?答:反调试技术是为了保护自己程序的代码不被逆向。增加逆向分析的难度 防止程序被破解, 针对动态分析。要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学! --致选择分析环境:JEB2.2.7+IDA7.0 测试手机:nexusIDA7.0下载链接链接:https://pan.baidu.com/s/1xEtjnTVZFuLiMpHKwMOY2Q 密码:g3v9前言测试一:首先拿到反调试挑战.apk 安装后直接运行,这里转载 2021-01-31 14:10:09 · 508 阅读 · 0 评论 -
在Smali中插入Log
如果数据是String类型:代码: const-string v0, "Test" const-string p1, "Hello World" invoke-static {v0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I如果是方法返回的String: invoke-virtual {p0}, Lcom/sheng/logtest/MainActivity;->原创 2020-12-16 20:43:58 · 684 阅读 · 0 评论 -
so组成结构
用readelf 打印出目标so文件的文件结构进行分析。readelf -a C:\Users\SHENG\Desktop\1\libtest-lib.so >1.txt一ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complem原创 2020-09-25 22:52:26 · 2550 阅读 · 1 评论 -
dump脚本
static main(void){ auto fp,begin,end,dexbyte,len; fp=fopen("D:\\dump.dex","wb"); begin=0x544D2008; len=0x019cf4; end=begin+len; for(dexbyte=begin;dexbyte<end;dexbyte++) fputc(Byte(dexbyte),fp);}原创 2020-09-25 16:46:54 · 320 阅读 · 0 评论 -
逆向知识点
1,Soload2,init_array3,jni_onload4,奇怪的函数5,fini_array原创 2020-09-22 20:44:30 · 137 阅读 · 0 评论 -
FDex2脱腾讯乐固免费壳
app导出dex ,得到(⼀个或)多个dex⽂件,⽽这么多 dex ,其中只有⼀个是真正包含了安卓app的业 务逻辑的 dex ⽂件。首先创建一个测试工程(随意自己写一个)。然后进行腾讯乐固加固链接然后进行签名,进行安装打开该文件目录,可以发现有两个dex文件:长按将两个文件复制到一个简单点的文件夹下,对其重命名(为了好导出来)然后cmd:adb pull dev/bus/1.dex [本地文件路径]用jadx-gui打开,其中可看到2.dex是原本程序的dex文件...原创 2020-09-05 23:50:47 · 2464 阅读 · 0 评论 -
010 Editor编写脚本修复DEX
修改完DEX文件后,DexHeader 头部的 checksum 和 signature 字段是错的,需要修正。未修正的dex:修正后的:所以我们需要编写脚本进行修正:代码如下:int endian = ReadInt(0x28); // endian_flagif (endian == 0x12345678) { LittleEndian();}else { BigEndian();}uchar sha1[20];ReadBytes(sha1, 0xc原创 2020-09-02 17:44:35 · 967 阅读 · 2 评论 -
Fiddler抓包
一,配置环境打开WLAN长按。将代理改为手动,代理服务主机名为:主机cmd ipconfig其中的ipv4地址fiddler的默认端口是:8888。之后点击保存即可。也可以在在fiddler修改端口号原创 2020-08-30 14:18:47 · 117 阅读 · 0 评论 -
android_server端口检测
运行android_server打开一个新的cmd。在根目录下输入命令cat /proc/net/tcp从中可以找到 5D8A 端口号,转换10进制为23946。面对apk存在端口检测,原创 2020-08-21 21:08:44 · 839 阅读 · 0 评论 -
objdump,readelf
这些工具都存在于 :(前提是安装了android studio,然后安装了ndk工具包)原创 2020-08-21 16:12:21 · 159 阅读 · 1 评论 -
.ab文件
什么是.ab文件.ab 后缀名的文件是 Android 系统的备份文件格式,它分为加密和未加密两种类型,.ab 文件的前 24 个字节是类似文件头的东西,如果是加密的,在前 24 个字节中会有 AES-256 的标志,如果未加密,则在前 24 个字节中会有 none 的标志可以通过abe.jar(android-backup-extractor)将其转换成.tar文件然后进行解压下载abe...原创 2020-08-18 10:38:30 · 9477 阅读 · 1 评论 -
DEX文件格式
DexHeadermagic: 标志这是个dex文件,如果它是合法的则值为:dex.035checksum:整个dex文件的校验和,可以用来判断dex文件是否损坏或被篡改signture:SHA-1散列值fileSize:整个文件大小1897336的十六进制是:1cf378headerSize:DexHeader结构的大小endianTag:字段指定了DEX运行环境的CPU字节序, 预设值为0x12345678,默认采用小端字节序stringIdsOff:DexStringId的偏移,原创 2020-08-16 01:55:41 · 375 阅读 · 0 评论 -
Android---签名保护
其实签名保护也就是在运行apk时,来比较当时发行apk时的签名和现在的签名,如果不一样,则代表apk被进行过修改,然后进行下一步操作,比如关闭程序或者进行其他操作。一,关键的函数获得apk签名。 public String getSignature(){ Context context = mContext; try{ PackageInfo packageInfo =context.getPackageManager().getPacka原创 2020-08-14 00:24:48 · 346 阅读 · 0 评论 -
Android---andresguard资源混淆
未进行资源混淆时:进行资源混淆后:一在gradle导入依赖: classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.18'二在app目录下新建一个and_res_guard.gradle,创建的方式可以复制一个build.gradle。内容如下:apply plugin: 'AndResGuard'buildscript { repositories { jcenter() go原创 2020-08-13 00:59:52 · 693 阅读 · 2 评论 -
Android代码混淆
Android代码混淆ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。1,Shrink: 压缩,在这一步中,用于检测和删除无用的类,字段,方法和属性。2,Optimize: 优化,在这一步中,对字节码进行分析优化,并且移除无用指令。3,Obfuscate: 混淆,在这一步中,使用无意义的名称(a,b,c),对类、字段和方法进行重命名。4,Preveirfy: 预检,在这一步中,主要是在Java平台上原创 2020-08-10 16:06:15 · 135 阅读 · 0 评论 -
使用IDA进行DEX调试
一将apk(release)拖入ida,选择classes.dex打开debugger option可以选择点击以下的从AXML填充,也可以自己填写二选择Process option选择端口,端口默认是23946,这里端口号可以设置为8700,但避免端口被占用就写8699吧。完成上面操作,既可以进行调试了三点击导航栏的绿色箭头(Run)之后可以通过左上角的箭头按钮和通过设置断点来进行动态调试...原创 2020-08-10 01:17:13 · 591 阅读 · 0 评论 -
Frida入门使用
一网上很多教程的python环境都是安装了Anaconda,那就下载吧。但下载之后我们需要用到的工具是里面的spyder,但现在用不到。二安装完之后,在该文件夹下找到 pip指令,或者在安装anaconda时,选择了添加环境变量的设置,就不需要专门去找该指令的目录。然后 cmdpip install fridapip install frida-tools安装完成后,在github上下载frida-server链接虚拟机用x86,真机用arm三下载完frida-server之后,将原创 2020-08-02 02:30:15 · 1529 阅读 · 0 评论 -
Xposed模块的编写
编写Xposed模块1,在AXML文件里添加以下代码:<!-- 添加标识--> <meta-data android:name="xposedmodule" android:value="true" /><!-- 载入Hook模块后显示的信息--> <meta-data android:name="xposeddescriptio原创 2020-07-28 23:31:49 · 583 阅读 · 2 评论 -
IDA动态调试
前期工作:1,将ida中的android_server导入手机端。存放位置(/data/local/tmp)2,adb shell 进入手机端指令操作,进入到该目录下,给该文件权限3,直接执行该文件,可以得到端口之后转发端口:adb forward tcp:23946 tcp:239464,打开ida进行动态调试然后就弹出列表,选择要调试的包名。...原创 2020-07-27 17:31:53 · 1223 阅读 · 0 评论 -
签名三兄弟
getPackageName()getPackageManage()getPackageInfo()原创 2020-07-28 16:26:16 · 190 阅读 · 0 评论 -
smalidea的使用
下载smalidea.zip打开as,添加插件,将该zip添加进去之后打开反编译后的文件目录,将smali文件设置为Source Root(下边没有显示)打开project structure设置jdk打开edit configurations创建一个新的Remote,可以按照你的习惯设置该Remote的名字和端口号。打开雷电模拟器,打开调试进程。打开cmd输入 adb shell ps。可以得到进程表从表中找到调试进程的端口号(PID),这里是2288(补充)USER:进原创 2020-07-25 16:56:33 · 765 阅读 · 0 评论 -
编写smali代码
(可以直接点将vn看成局部变量寄存器,pn为参数寄存器)clinit:表示静态代码块locals :表示局部变量寄存器 使用数量为 1个new-instance:实例化invoke-direct:调用方法----表示构造方。这里表示调用构造方法实例化supt-object:表示将v0寄存器赋值给f...原创 2020-07-24 02:10:57 · 465 阅读 · 0 评论 -
动态分析技巧--代码注入法
测试apk下载一用apktool对apk进行反编译apktool d app-release.apk -o out之后对反汇编代码进行分析# virtual methods.method public onClick(Landroid/view/View;)V .locals 3 .line 34 iget-object p1, p0, Lcom/droider/checksn/MainActivity$1;->this$0:Lcom/droider/checks原创 2020-07-15 15:47:51 · 361 阅读 · 0 评论 -
第五章学习日记
在做ida分析和修改app-release时遇到了点小问题1,修改了app.debug.apk的classes文件后,修复了dex校验和还有签名后,在手机会闪退。所以还是的用release发布版本,不要用调试版本。2,在修改完dex文件后,要修复校验和。方法如下:d2j-dex-recompute-checksum -f xxxxxxxx.dex或者直接将dex文件拖入d2j-dex-recompute-checksum.bat之后会生成一个修复版本的文件,然后进行命名和替换apk包下的clas原创 2020-07-02 00:34:04 · 262 阅读 · 0 评论 -
dexjar用法
将dex文件转换成jar文件:直接将dex文件拖进d2j-dex2jar.bat 或者 用cmd进行转换将jar文件转换成dex文件:直接将jar文件拖进d2j-jar2dex.bat 或者 用cmd进行转换原创 2020-07-01 01:42:04 · 1290 阅读 · 0 评论 -
apk签名问题---CERT.RSA,MANIFEST.MF,CERT.SF
在生成release版本的apk文件时…写的详细一点点吧:1,创建密钥文件。这里我填写过了就不填了吧。2,之后就在目录下生成了release版本的apk了。但是在这两天我就发现了个问题。我想要查看META-INF目录下的CERT.RSA,MANIFEST.MF,CERT.SF文件。结果没有CERT.RSA,CERT.SF文件,MANIFEST.MF时签名的清单文件,打开后也没有内容。解决的办法:1,就是用已有的工具进行签名2,进行如下操作,再生成release.apk代码样式:原创 2020-06-30 16:10:40 · 2324 阅读 · 2 评论 -
将c语言反编译成汇编
在该目录下,生成xxxx.s文件,对应该文件的汇编语言gcc -s xxxx.c原创 2020-06-04 19:24:07 · 1890 阅读 · 0 评论 -
IDA Pro进行DEX文件修改
先编写一个Android程序,然后进行破解吧程序地址:地址流程:1用unzip命令将apk文件中的classes.dex文件取出来,命令如下:unzip xxx.apk classes.dex //会解压该文件到当前目录记得要cmd移动至该目录下接下来进行对apk反编译res…\string.xml,可以看到一个“unsuccessed”。通过public.xml可以看到对应的id “0x7f0b002b”。2用IDA Pro对该dex文件进行静态分析用快捷键ALT+T 搜索原创 2020-06-01 01:07:19 · 1731 阅读 · 0 评论 -
unzip导出apk的dex
unzip xxx.apk classes.dex 会解压该文件到当前目录原创 2020-05-31 21:25:07 · 307 阅读 · 0 评论 -
编写Smali,生成dex
.class public LHelloWord;.super Ljava/lang/Object;.method public static main([Ljava/lang/String;)V .registers 4 .prologue return-void .end method使用smali.jar将写好的smali文件生成dex文件,语法如下:java -jar smali.jar a -o xxxxx\xxxx\xx\test.dex xxxx\xxxx\xx\test.s原创 2020-05-31 13:52:27 · 1567 阅读 · 0 评论 -
.java生成.class,.class生成.dex
.java生成.class:javac xxx.java.class生成dex:dx --dex --output=xxx.dex com/xxx/aaa..../yyy.class今天我尝试将java生成的class文件,生成dex,但是报了以下错误:最后还是搞不定,所以就直接找了其他方法。app-》build-》intermediates-》res-》javac-》debug-》com…-》xxx目录下可以找到相应的class类。但是!在该目录下不能生成dex,会报错:解决的方法就原创 2020-05-29 16:49:24 · 370 阅读 · 0 评论 -
导出Android Library的aar文件
1,创建一个空项目2,New Model…选择 Android Library3,然后Make Project,生成bulid文件,可以看到bulid文件下有一个outputs文件下,有一个aar文件。4,点击右上角Gradle,点击对应的包下的assemble生成xxxx-release.aar文件...原创 2020-05-29 00:25:04 · 291 阅读 · 0 评论 -
ApkTool---反编译,回编译
准备工作:1,apktool.jar (重点,需要最新的?或者比较新的)2,aapt.exe3,apktool.bat将上诉文件放在一起,配置环境。反编译:apktool d -f <文件路径> -o <反编译后存放的文件路径>注意:反编译后存放的文件夹下东西会被"清空",实际上是新建一个同名文件。还有就是文件有一个apktool.yml文件,回编译时需要。回编译:apktool b <反编译后存放的文件路径>文件路径和反编译的文件路径一样,需要一个原创 2020-05-28 18:49:41 · 585 阅读 · 0 评论 -
逆向工具的使用及快捷键使用
alt+f12:字符串集f5:反编译成c原创 2020-05-10 23:45:23 · 257 阅读 · 0 评论