所需工具

1.IDA_Pro_v6.8_and_Hex-Rays_Decompiler_

2.WinHex

3.ARM_ASM

背景:I2C通讯时报log  CameraHal_Marvin: HAL-MOCKUP: HalReadI2CMem(1578): bus_num(7) or reg_addr_size(1) is invalidate

CameraHal_Marvin: OV2735: Sensor_IsiCheckSensorConnectionIss RevId = 0x00002735, value = 0x00000000 result = 13 
CameraHal_Marvin: CAM_API_CAMENGINE: openSensor (IsiCheckSensorConnectionIss failed)

13代表无效的参数,我自己写一个I2C的读函数,读同样的寄存器是成功,所以怀疑so文件对I2C NUM大小做了判断,认为I2C7是无效的。所以想破解so,将对i2c num 的大小改大点。

基础知识:

(1)了解反编译成汇编后的结构,以及常用的汇编指令的意义

https://bbs.ichunqiu.com/thread-41629-1-1.html?from=sec

(2)实战预热

https://blog.csdn.net/m0_37766442/article/details/72903385

一、反编译so

使用IDA打开so

根据log信息或猜测查找需要破解的大致位置

如我需要搜索的log:bus_num(7) or reg_addr_size(1)

我们就搜索reg_addr_size这个字符串

我们找到了一处符合的字符串,双击上面的DATA_REF后的内容跳转到引用的代码段

代码段

根据我们的推测,如果对I2C num做判断肯定会使用if语句做比较,在汇编里也就是CMP指令,然后BLT或BL 、BGT进行跳转

我们看到打印这一段log的过程中没有CMP 和BL,所以很有可能这是if里面的内容,CMP在其他地方。我们看到上方有一个

loc_82036,这代表一段代码的标签处,类似C里面goto 的标签,那肯定其他地方会向这个标签做跳转

选中这个标签,右击

点击红框选项,就会列出所有向此处跳转的地方,这个so,也就在其上面,已经高亮了

我们看到有两个地方向此处跳转,也都有CMP语句和BL,应该没错了,大致分析下

CMP R0,#6            R0寄存器与立即数6做比较,大于6跳转到loc_82036

下面一个是大于等于5跳转到loc_82036

此处我们以大于6跳转为例说明如何破解,实际中可以结合函数参数个数等其他可能的原因猜测,排除一些跳转项,实在无法排除就一个一个试。

点中CMP R0,#6的地址处,然后切换到HEX View

Hex VIEW 可以切换数据格式,64位so用4字节格式,32位so用2字节格式

我们需要将CMP R0,#6  改成CMP R0,#8试一试

打开arm_asm工具,输入CMP R0,#6 ,   GO

可以看到这条指令对应的2字节16进制是0628

看IDA里的值 也是2806  应该是大小端的问题,不影响,我们修改时注意下就可以

看这条指令的物理地址,以便在winhex内修改

是80026,使用winhex打开这个so,跳转到这一地址

我们将06改成08保存

替换so,不再打印那个错误log,读正常了,但是写还有问题,同样的方法修改I2C写操作里的值,问题解决

反编译so库破解so相关推荐

  1. Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向工程反编译apk库等文件

    前段时间在 Android play 上看到一个很牛逼的 3D 动态天气预报,效果真的很炫,二话不说动手 dex2jar.bat/apktool 发现这并没 有什么卵用,在核心的地方看见 native ...

  2. Android Cocos2dx引擎 prv.ccz/plist/so等优化缓存文件,手把手ida教你逆向project反编译apk库等文件...

    前段时间在 Android play 上看到一个非常牛逼的 3D 动态天气预报,效果真的非常炫.二话不说动手 dex2jar.bat/apktool 发现这并没 有什么卵用,在核心的地方看见 nati ...

  3. 反编译工具reflector破解方法

    很不错的反编译工具,可以让你有机会看看大师们写的代码了,呵呵 文件下载:http://files.cnblogs.com/lori/Red.Gate.Reflector7.6.rar 破解方法: 1. ...

  4. Linux开发_反编译开发_破解简单登录程序外加缓冲区溢出攻击

    缓冲区溢出攻击即破坏指定buff的缓冲区大小,使其溢出到别的空间上去,破坏堆栈. 比如有如下代码: #include <stdio.h> #include <string.h> ...

  5. Apk文件破解反编译(转)

    首先我们了解下什么是apk APK是AndroidPackage的缩写,即Android安装包(apk).APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到Android ...

  6. 文件签名魔塔50层android反编译破解

    发一下牢骚和主题无关: 缘由:该游戏作者有点可爱,原来就是拿别人的游戏,还在游戏中参加积分的轨制,打到20层后,需要积分.看不惯,就把它破解了,打到20层后,直接跳过要积分进程. 本文不提供破解后的安 ...

  7. 如何保护.net中的dll文件(防破解、反编译)

    .net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间语言,再由.net编译器 JIT 解释映象为本机代码并交付CPU执行.中间语言很容易被反编译,所以研究下如何有效的保护dll文件. ...

  8. 【破解利器】反汇编工具 and 反编译(Decompilers)

    今天给大家放上 破解利器 之 反汇编工具 and 反编译(Decompilers) 篇 反汇编工具 IDA Pro IDA Pro是DataRescue开发的专业反汇编工具, IDA Pro是一款专业 ...

  9. 最新微信小程序反编译破解过程记录

    一.前言 既然你进来看这篇文章,我认为"微信小程序反编译"这个技术你多少应该会了解点.在学习微信小程序前端开发的过程中,我跟大部分人一样,试着仿写过一些线上的小程序案例,但在实际练 ...

  10. apk包的破解与反编译

    原文:http://www.jianshu.com/p/78cac8e9ddf1 关于apk包的破解,首先需要下载这三个反编译的工具: 1. 提取资源:apktool, http://ibotpeac ...

最新文章

  1. 训练作用_我们口才训练微信群有哪些重要作用?
  2. 实现页面打开后滚动到最底端的效果(转)
  3. 来自iSpy整理的最全海康大华IPC的RTSP连接地址
  4. bootstrap table教程--使用入门基本用法
  5. Java学习----你的选择是什么-条件结构
  6. 机器学习之 weka学习(六)最大内存
  7. 剑桥大学的下午茶,为何能喝出六十位诺贝尔奖获得者?
  8. zend studio mysql_Zend Studio的一些常用配置和使用帮助手册
  9. 5G 浪潮来袭!程序员在风口中有何机遇?
  10. dw1510_超低温种子储存柜
  11. wps中的相交_如何在wps中添加交叉引用 - 卡饭网
  12. prince2证书有含金量吗?
  13. C++中智能指针-atuo_ptr、unique_ptr
  14. 【渝粤题库】广东开放大学 经济法实务 形成性考核
  15. 镜面反射与Phong模型
  16. 【gitLab】gitLab新建项目步骤
  17. java面试题 sql_SQL 面试题目及答案 | java面试题
  18. 网狐荣耀6701,6801(系列十)手机端热更新
  19. 【码农学编曲】Waves混音 混响 延时 母带
  20. 深划痕需要大面积补漆吗_什么程度的划痕才需补漆? 小心亏大了!

热门文章

  1. 安卓日历每日提醒_Android日历事件管理器,是时候为你的APP增加一个事件提醒功能啦!...
  2. XP系统屏幕倒立翻转了怎么办???
  3. python爬虫 scrapy 爬取腾讯招聘
  4. 吴军老师的《计算之魂》部分重点摘要
  5. UVALive - 4987 (dp+贪心)
  6. python软件工程师月薪-软件工程师薪水知多少?
  7. 导航中的常用坐标系解析
  8. nmap命令man详解与脚本目录
  9. 数据库实验——简单数据库应用系统设计与实现
  10. PHP的zend引擎