Appro 2A lib 破解 crack

一、研究的目的:
1、加密芯片的目的: 防止软件被盗版,很多公司采用硬件保护软件,软硬件相结合加大了破解的难度。Appro公司的IPNC方案,就有一个6pin加密芯
片,放在CMOS sensor板上面。用加密芯片,保护Appro公司的2A lib.
2、加密芯片的原理:通过主程序调用加密程序,调用时,从RAM里面随机调用一组数据作为明文,与程序里面的密钥混合产生一组暗文,暗文传到加
密芯片,按反算法与加密芯片中密钥产生明文,与RAM中的明文比较,一致程序继续,不一致程序中断(I2C)。
3、研究的目的:让程序在没有加密芯片的情况下,绕开加密算法正常执行。
二、研究方法
客户提供的是静态库,对静态库研究最好的办法就是反汇编静态库,弄清楚程序的详细流程。
三、研究工具
1、IDA Pro:反汇编的是静态库,IDA Pro是最好的反汇编工具。它可以清晰的看到程序的流程。
四、研究步骤
1、从静态库的打印信息着手。打印信息如下:
APPRO 2A Created
XXXXX IAE_CMD_SET_CONFIG XXXXX
 222 Aew_Cal_LoadParam: dfc check sum success
 (nand offset: 0x00500010, size: 0x0000181c, checksum: 0x00022155)
################DFC ret=0##################
############################################################
#####  AEWB IPNC_DM368IMX036 formal version for FW2.60.01 20120106.  #####
############################################################
--->Chip init PASS
2、启动反汇编工具,选择Unix -static lib,选择.o文件
一共有8个.o文件,需要创建8个工程      
3、根据搜索的情况,定位反汇编的具体位置   例如:dfc check sum success出现在Appro_aew_cal.o文件
4、从加密芯片的原理可以看出程序是受if else控制,如果加密芯片有效,则程序继续执行。
5、if else 对应的汇编语句格式为:
    CMP R3,R1
    BNE Ioc_FA0     ;通过CMP后的条件,跳转到指定位置执行。
6、比较的伪指令如下:
            BEQ    相等
            BNE    不等
            BPL    非负
            BMI    负
            BCC    无进位
            BCS    有进位
            BLO    小于(无符号数)
            BHS    大于等于(无符号数)
            BHI    大于(无符号数)
            BLS    小于等于(无符号数)
            BVC    无溢出(有符号数)
            BVS    有溢出(有符号数)
            BGT    大于(有符号数)
            BGE    大于等于(有符号数)
            BLT    小于(有符号数)
            BLE    小于等于(有符号数)

7、破解思路:为了兼容有加密芯片的设备,我这里是采用的修改CMP R3,R1的方法,也就是说,不管有没有加密芯片则程序始终执行2A 算法。
8、机器码的研究,每条汇编语句都对应4字节的二进制编码。
CMP R2,R3        -->      03 00 52 E1
CMP R3,R3        -->      03 00 53 E1
7、函数、静态库、动态库的关系
编译完的某个函数是以连续的方式存在于静态库和动态库中的。可以通过反汇编工具找到相关修改点的机器码,然后在静态库或者动态库中找到对应
的位置(采用64个字节的二进制搜索),按照预定的机器码修改。(这里要非常小心,需要观察对应位置前后的机器码是否一致,防止修改到其他地
方)
8、将修改后的动态库重新打包,测试

9、测试结果,成功绕过加密芯片执行2A算法.



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草根大哥

进军大神程序员路上,谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值