APK反编译工具

APK反编译之二:工具介绍 APK反编译之二:工具介绍 本人接触不久,有错误望请各位神牛不吝赐教,仅仅希望把自己这段时间研究的东西分享一下,如果可以帮助到有需要的童鞋万感荣幸。欢迎评论转载,但请加上转载来源谢谢!请尊重开发者劳动成果!请勿用于非法用途! 作者:lpohvbe | http://blog.youkuaiyun.com/lpohvbe/article/details/7983907       前面 阅读详情

【原文地址】http://www.linuxidc.com/Linux/2012-07/66531.htm

一般情况下,我们采用apktool(xml资源)+dex2jar+JDGui(jar to java)反编译Android apk之后的代码中,涉及到资源索引的信息全部替换成了十进制的数字。

如何将这些数字还原成为原始的资源索引形式呢?

  1. public g(Context paramContext)  
  2. {  
  3.   super(paramContext);  
  4.   b(2130903088);  
  5.   this.b = ((FirModule)this.k.N().a("fir_module"));  
  6.   int[] arrayOfInt = new int[2];  
  7.   arrayOfInt[0] = 2131427902;  
  8.   arrayOfInt[1] = 2131427901;  
  9.   a(arrayOfInt);  
  10.   f(1);  
  11.   f(2);  
  12. }  

我们希望得到如下形式的代码:

  1. public g(Context paramContext)  
  2. {  
  3.   super(paramContext);  
  4.   b(R.layout.fir_info_page);  
  5.   this.b = ((FirModule)this.k.N().a("fir_module"));  
  6.   int[] arrayOfInt = new int[2];  
  7.   arrayOfInt[0] = R.string.commended_apps;  
  8.   arrayOfInt[1] = R.string.person_info;  
  9.   a(arrayOfInt);  
  10.   f(1);  
  11.   f(2);  
  12. }  

可读性就非常高了。

下面讲述如何做到这个功能:

 b(2130903088);中的数字转换为16进制以后,是0x7f030030,通过手工在R.java中搜索我们可以找到:

        public static final int fir_info_page=0x7f030030;

因此在相应的地方替换为对应的资源索引就可以了,处于layout class之下,因此是 R.layout.fir_info_page 。

好了,原理很简单,接下来我们编写一个perl脚本来批量做这个事情,具体代码如下:

  1. #!/usr/bin/perl  
  2. #注意事项:  
  3. #复制一份 R.java在该文件所在目录  
  4. #第一个参数为:需要处理的源代码目录路径  
  5.   
  6. use strict;  
  7.   
  8. use File::Find;  
  9.   
  10. my $from_str;  
  11. my $to_str;  
  12. my $resource;  
  13. my $init_folder = $ARGV[0];  
  14.   
  15. if (not -d $init_folder)  
  16. {  
  17.   print "目录:$init_folder不存在.\n";  
  18. print "$0 <source_folder>\n";   
  19.   exit;  
  20. }  
  21.   
  22. #读取R.java中的所有文本  
  23. my $k_file = "R.java";  
  24. open my $k ,"< $k_file" or die "couldn't open $k_file\n";  
  25. my @keywords = <$k> ;  
  26. close $k;  
  27.   
  28.   
  29. #遍历每行数据  
  30. for my $line (@keywords)  
  31. {  
  32.   #print "$line";  
  33.   
  34.   #先解析内部class类型:id/style/xml/arrays等  
  35.   #public static final class style {  
  36.   if ($line =~ /public\sstatic\sfinal\sclass\s(\w+)\s\{/)  
  37.   {  
  38.      $resource = $1;  
  39.   }  
  40.   else  
  41.   {  
  42.     #如果格式如下,则解析出来  
  43.     #public static final int MarketPanelTheme=0x7f0c0076;  
  44.     if ($line =~ /public\sstatic\sfinal\sint\s(\w+)=(\w+)\;/)  
  45.     {  
  46.       #print "keywords:$1 <-- $2\n";  
  47.       $from_str = oct $2; #16进制转化为10进制  
  48.       $to_str = "R\.$resource\.$1";  
  49.       print "$from_str --> $to_str\n\n";  
  50.       find(\&CallBackMe, $init_folder );  
  51.     }  
  52.   }  
  53. }  
  54.   
  55. print "Well Done.\n";  
  56.   
  57. sub CallBackMe  
  58. {  
  59.  my $fullpath = $File::Find::name;  
  60.   
  61.  if(-d $fullpath)  
  62.  {  
  63.       print "[Dir] $fullpath\n";  
  64.  }  
  65.  else  
  66.  {  
  67.    print "[File] $fullpath\n";  
  68.    if($fullpath =~ /\.java$/i)  
  69.    {  
  70.      if($fullpath =~ /$k_file/i)  
  71.      {  
  72.         #ignore it  
  73.         print "Ignored $k_file\n";  
  74.      }  
  75.      else  
  76.      {  
  77.        #replace text  
  78.        print "Replacing $from_str with $to_str in $fullpath\n";  
  79.        ReplaceString($fullpath, $from_str,$to_str);  
  80.      }  
  81.    }  
  82.  }  
  83. }  
  84.   
  85. #Replacing $from with $to in $file  
  86. sub ReplaceString  
  87. {  
  88.   my $file = shift @_;  
  89.   my $from = shift @_;  
  90.   my $to = shift @_;  
  91.   
  92.   open my $fh ,"< $file" or die "couldn't open $file\n";  
  93.   my @lines=<$fh>;  
  94.   close $fh;  
  95.   foreach my $l (@lines)  
  96.   {  
  97.     $l=~s/$from/$to/g;  
  98.   }  
  99.   #print "@lines\n";  
  100.   #write back  
  101.   open my $out , "> $file" or die "couldn't write $file";  
  102.   foreach my $l (@lines)  
  103.   {  
  104.      print $out $l;  
  105.   }  
  106.   close $out;  
  107. }  


全面的APK反编译工具教程及应用 本文还有配套的精品资源,点击获取 简介:APK是Android应用的打包格式,包含运行应用所需的所有资源和代码。APK反编译工具允许开发者和安全研究人员分析和修改APK文件,尽管可能无法完全还原源代码。该教程详细介绍了APK反编译的几个步骤,包括APK内容提取、DEX到JAR的转换、反编译JAR文件、处理资源文件、Smali代码与Java代码的交互及转换等。APK反编译有助... 阅读详情

相关推荐

全面探索APK反编译工具组合

本文还有配套的精品资源,点击获取 简介:APK反编译是Android开发中的关键技术,涉及查看APK文件的内部结构。本资源包含dex2jar、apktool和jd-gui三个关键工具,支持从反编译到资源修改的完整流程。安全分析和学习目的均适用,但需注意法律和版权问题。 1. APK反编译技术概览 1.1 反编译技术简述 APK反编译技术是用于Andro...

weixin_36122351的博客 1147

Android逆向分析源码中资源代码还原小工具

一般情况下,我们采用apktool(xml资源)+dex2jar+JDGui(jar to java)反编译Android apk之后的代码中,涉及到资源索引的信息全部替换成了十进制的数字。 如何将这些数字还原成为原始的资源索引形式呢? public g(Context paramContext)  {    super(paramContext);    b(2130903088

Jingle的专栏 1357

Android APK反编译工具套装与实践

本文还有配套的精品资源,点击获取 简介:该文章介绍了Android APK反编译涉及的知识,包括APK文件结构、反编译原理、常用工具如APKTool、aapt、签名工具以及图形化界面工具等。这些工具可以帮助开发者和安全研究人员分析、修改和理解Android应用。反编译过程中涉及的关键点如资源提取、签名验证以及法律伦理问题是作者着重强调的,同时提醒用户在使用反编译工具时要遵循...

weixin_36012152的博客 956

Android逆向实例笔记—初入so并还原分析出代码

很久没有出基础教程了,这里做一个鬼哥的so的作业吧。很基础的东西,算是教学帖子吧。大牛路过吧。这里感谢鬼哥的apk和无名侠的软件 首先我们打开鬼哥提供的apk看看。 其余没有发现什么,我们直接AK来看看吧。 直接看看Java的代码 protected void onCreate(Bundle paramBundle) { super.onCreate(param

sorgs 1万+

APK一键反编译可视化工具指南

APK,即Android Package,是Android系统上的安装包文件格式。它是一个ZIP格式的压缩文件,包含了编译后的Android应用程序的所有内容。这些内容包括代码(通常是Dalvik字节码)、资源、资产、证书等。在APK反编译的过程中,选择合适的工具是至关重要的一步。目前市面上存在多种反编译工具,它们各有特点和适用场景。比较流行的有:JADX: 一款功能强大的Android应用反编译工具,可将DEX文件反编译为Java源代码,同时支持直接从APK文件中提取资源文件。

weixin_35370061的博客 807

Mac平台APK反编译工具使用教程

APK,即Android应用程序包,是Android操作系统用于分发和安装移动应用的文件格式。一个APK文件包含应用所需的所有文件,包括Java源代码编译后的Dalvik可执行文件(.dex)、应用资源文件、清单文件(AndroidManifest.xml)、签名信息等。APK文件本质上是一个ZIP格式的压缩包,可以通过任何支持ZIP格式的工具进行解压缩,以便查看其内部结构和内容。jd-gui是一个Java反编译器,可以将编译后的.class文件转换回.java文件的源代码形式。

weixin_30820933的博客 1171

【安卓逆向】APK修改与反编译回编译

修改APK与反编译回编译备忘

weixin_41802023的博客 5632

全面解析Androidkiller:APK反编译工具

在Android应用开发和安全研究领域,APK反编译是一个不可或缺的环节。它允许开发者、安全分析师乃至普通用户对Android应用程序进行深入分析,了解其运行机制和潜在的安全问题。本章我们将对Androidkiller这一流行的APK反编译工具进行概述,从而为接下来的内容打下基础。Androidkiller是一个在Android应用安全和逆向工程中广泛使用的工具,它提供了一个直观的用户界面,使得用户可以轻松地对APK文件进行反编译、编辑、优化以及重新打包等一系列操作。

weixin_31860973的博客 2690

dump解密后的so并修改原so

先执行IDA动态调试步骤 在JNI_ONLOAD下断点,越往后越好,按ctrl+s查看节点信息,后面的R表示读,W表示写,X表示执行 我们需要的so变成了三个部分,第一个RX表示里面是代码区,对我们没用,最主要的是找到原so文件中被混淆的数据区,其实只需要 RW 复制上图中的start和end的值到文件中,后面用,执行脚本把so dump出来,如下图,start和end替换成上图中的值,然后点击run即可dump出来,代码如下 static main(void) { auto fp, start, e

林羽的博客 5255

APK反编译工具小软件:轻松实现APK分析与定制

APK是Android Package的缩写,它是一种应用程序包文件格式,用于在Google的Android操作系统上分发和安装移动应用。一个APK文件包含了构成Android应用的所有必需文件,包括编译后的代码(例如.class文件)、资源文件和清单文件(AndroidManifest.xml)。APK文件通常通过Android官方应用商店Google Play或其他第三方平台进行分发。反编译是将可执行文件或字节码转换回高级源代码的过程,通常用来分析程序逻辑或进行修改。

weixin_33608403的博客 1717

Mac上APK反编译工具的综合指南

在反编译Android应用程序时,选择合适的工具至关重要。不同的反编译工具具有不同的功能与优势。一些工具专注于快速还原Java源代码,而其他工具则着重于恢复资源文件,甚至还有工具能够重建应用的原始目录结构。功能性分析涵盖了工具的以下方面:代码还原能力:能够还原多少比例的原始Java代码,是否支持反混淆。资源文件处理:能否提取图片、XML布局文件等非代码资源。调试信息保留:是否保留了方法签名和调试信息,这对于后续分析尤为重要。

weixin_35752233的博客 1008

Android逆向——反编译APK改代码

android逆向

QG 1万+

全面掌握APK反编译技术的实用工具合集

在移动应用开发和安全领域,APK反编译是一个重要环节。它允许开发者和安全专家理解、分析和修改已编译的Android应用包。本章将介绍APK反编译的基础知识,并概述完成这一任务所需的必要工具。在本章节中,我们将重点关注几个关键的反编译工具,这些工具帮助我们更高效地进行APK文件的分析与修改:apktool: 一款用于反编译APK文件的工具,支持查看和修改资源文件。dex2jar: 将APK文件中的DEX(Dalvik Executable)文件转换为Java的JAR文件。

weixin_42298254的博客 1213

关于 APK 反编译与重构工具集

apktool是一款开源的 Android APK 工具,用于:它不能还原 Java 源码,只能将 DEX 转为 smali。

Triste__chengxi的博客 3341

STM32开发实战:从嵌入式系统到硬件控制 | 你必须得会

🏆本文收录于「编程与技术实战」专栏,此专栏涵盖了C/C++编程、人工智能、数据结构、机器学习等技术领域的内容,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1044

SAP 对接CBS(http方式)

CLEAR:lv_xml_crc32_string. CONCATENATEcrc32_passwordcrc32_keyi_stringINTOlv_xml_crc32_string. CONDENSElv_xml_crc32_string. CALLFUNCTION'SCMS_STRING_TO_XSTRING' EXPORTING text=lv_xml_crc32_string encoding='8400' "GB...

3597

APK反编译工具包:深入解析APK文件的利器

APK反编译工具包:深入解析APK文件的利器 【下载地址】APK反编译工具包 这是一个专为APK文件反编译设计的工具包,集成了多个实用工具,帮助开发者深入分析和修改APK文件。工具包包含apktool、dex2jar和JD-GUI等经典工具,支持Windows系统,版本稳定且易于使用。无论是逆向工程、安全分析,还是代码研...

gitblog_06724的博客 873

Windows Server 2012 R2虚拟机安装全攻略:从镜像选择到网络配置一步到位

本文提供Windows Server 2012 R2虚拟机安装全攻略,涵盖从镜像选择到网络配置的完整流程。详细讲解在Oracle VM VirtualBox中的安装步骤、TCP/IP网络设置、系统优化及常见问题解决方案,帮助用户快速搭建可立即投入使用的服务器环境。特别适合IT初学者和系统管理员学习传统服务器应用的部署与配置。

weixin_28363123的博客 538

APK反编译工具及方法

文章目录一、下载工具apktooldex2jarjd-gui二、APK反编译方法1、apktool反编译APK获取资源文件(源代码、图片、XML配置、语言资源)。2、dex2jar反编译APK得到Java源代码3、使用jd-gui工具查看class文件反编译成java的源代码。 一、下载工具 apktool apktool:资源文件获取,可以提取出图片文件和布局文件进行使用查看。 点击下载apktool dex2jar dex2jar:将apk反编译成java源码(classes.dex转化成jar文件)

gu305524073的博客 8868

深入解析路科验证V0实验lab1:SV接口与时钟块实战

本文深入解析了路科验证V0实验Lab1的核心内容,重点阐述了SystemVerilog接口与时钟块在验证环境搭建中的关键作用。通过拆解router_io接口设计、时钟块同步机制及程序块封装,详细讲解了如何构建稳定可靠的验证通信基础,并提供了复位时序分析与常见调试技巧,为后续复杂验证打下坚实基础。

peach的博客 430

GameFramework专栏目录

本专栏是专门介绍GameFramework框架的,持续更新中,如有疑问可留言,24小时内回复。

TxNet 4725

apk反编译工具

PK反编译工具是用于将Android应用程序包(APK)文件解包并分析其内部结构和代码的软件。这些工具在逆向工程、安全分析、应用程序调试和学习Android开发等方面非常有用。

994

看GRE协议的数据封装

GRE网络数据封装流程

FanFF的博客 80

Mac平台APK反编译工具包

Mac平台APK反编译工具包 【下载地址】Mac平台APK反编译工具包 这是一款专为Mac平台设计的APK反编译工具包,集成了ApkTool、dex2jar和JD-GUI三大实用工具,帮助用户轻松完成APK文件的反编译与代码查看。ApkTool支持将APK文件反编译为可编辑格式并重新编译,dex2jar可将DEX文件转换...

gitblog_06798的博客 583

从零开始:手把手教你设计人形机器人锂电池供电系统

人形机器人要像人类一样“活起来”,必须有稳定的“能量血液”——供电系统。本文聚焦锂电池供电系统如何根据机器人功耗选择合适的锂电池参数(容量、电压、放电倍率);如何设计电池管理系统(BMS)保护电池安全;如何解决机器人运动时的“瞬时大电流”供电难题;如何通过硬件电路和代码实现供电系统的监测与控制。用“机器人小助手的能量危机”故事引入锂电池供电系统;拆解锂电池核心参数(容量、电压、放电倍率)和供电系统三大组件(电池组、BMS、电源转换模块);

AI天才研究院 1758

淘宝滑块验证码破解:Python模拟鼠标轨迹过关详解

本文全面解析了淘宝滑块验证码的破解流程,从机制分析、图像处理、轨迹模拟到自动化实现,提供了完整的Python解决方案。随着2026年风控技术的升级,单纯依靠轨迹模拟已经难以达到高通过率,未来趋势是结合强化学习生成更自然的轨迹,并利用深度神经网络进行端到端的验证码绕过。此外,各大平台正逐步推广"无感验证"和"行为式验证码",将验证融入到用户正常操作中,这对爬虫技术提出了更高的挑战。技术本身是中立的,关键在于使用者的目的。希望本文能帮助开发者更好地理解验证码对抗技术,从而设计出更安全的防御系统。

2201_76125261的博客 95
上一篇: Ubuntu 14上编译Android 4.4,退出terminal,无法再次启动emulator
下一篇: Android中Loader之源码阅读
随缘顺风
博客等级 码龄17年 5粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值