某手rsa分析未完成

 v16 = objc_msgSend(v15, "objectForKey:", CFSTR("private"));
      v17 = objc_retainAutoreleasedReturnValue(v16);
      v19 = (void *)objc_retainAutorelease(v17, v18);
      v20 = v19;
      v21 = (const char *)objc_msgSend(v19, "bytes");// 把密钥转换为字节流  0000000100BCE3C0
      v23 = sub_100BCDFF4(v21, 1);              // 处理密钥    0000000100BCE3C8
      if ( v23 )
      {
        v24 = (void *)objc_retainAutorelease(v8, v22);
        v25 = objc_msgSend(v24, "bytes");
        v26 = objc_msgSend(v24, "length");
        CC_SHA256(v25, v26, &v42);              // 输入raw    0000000100BCE404
        memset(&v41, 0, 0x100uLL);
        v40 = 0;
        if ( (unsigned int)sub_10159CC80(672, (__int64)&v42, 0x20, (__int64)&v41, &v40, v23) )// v41指向的值是输出的关键十六进制值   v40应该是长度   v23key
        {                                       //  0000000100BCE434
          v27 = objc_msgSend(&OBJC_CLASS___NSData, "dataWithBytes:length:", &v41, v40);
          v28 = (KSApiDotGifShowHTTPClient *)objc_retainAutoreleasedReturnValue(v27);

这段代码很奇怪,很像rsa但又好像不是。v21跟踪了很多次,都是私钥的字节流形式,不会变化如下:

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCvquzGvYK5rk5K
JN9E7ZNHDMf0AHQBjTzJHSQYljnXWoKbJECWCPyeqgfeUckIyVL0oSZ+LBejHkqt
sgzCxGCPJmlubTOVQ6WbgX7hWnQiKuHYjYL/u7JpgVtRowVUFjcCNnDrf7JZEe4S
56TGffNVaTYo3OqcQbu4mE3L3MtpcmOoZQDxhgz0ah6+wuNAJmYjrnHpBEEqXt3v
QuEM9TB+ZEuoHaXM9CIoe6vDn5DgP+GEf3CqAdoyp8aiu3hr9SZV20UdRJZK+3Pr
uvcLE7Y5YFjneRTQwxNJZMPV6FyIG/i2EmULPqSJne/xNOsf2SxHqtmeb2UI0sQV
xyyrsi+5AgMBAAECggEAC5GaHkyEu227Qi7DdWqf9GHnGS6edSu0ARqmMehSztfr
GgR9LGRTHq/b7Mw+DRIVIH8sZcrJk7h++olrRbhhE4xYDSmr5/yYf3E7xeOLGmTw
kq5fHjBiQ4h9VxcBVtRPsxmavieeuzbvEtemhlvtFobjRjWmTbwWfMWq+e4Eh2Eh
Gh8GUq2URUCvm0UKT8Y+eBG0PzHlSfam0m1Tk260uFvo/yjM3T/6P/yDT8bpmAZE
wW+UQOHpjvrLEaW4KtuXumTw8Pi5iovDtMJt6o9AeUpiFpUZUKH9Uuqi5Ef6DQHc
zz6Fyi7iwgIF8/CSy5TjkNySLF556pWkzw4V2dsTsQKBgQDoioF9DlPNbivhMaZW
zfFKdT3giMxxwvnQvc/6tbroiR4MT11HZz+Rxhu5XP7749H5tAcqfLCfihSAxXet
KBBW5utkpvbdviNGSzy9ma5VaoohgyzI95FiAx8b2Tv6T5BXFXK1qBUmdCOe2upG
BBZMHSPv2e2a67UJ3ddZDJK6ZwKBgQDBY6J7AgujPdK2UUjSY3bus+LoKJKmmqVN
MED1AXFQysSf9yHhPcvYRnOuSn/CXXm42uOmto97nSqFbEirM4mM4jQ/A5walJiy
dakCVzp99VcVaCRxeDKGg7lUiW8Ier7FYzbBnT/54P9rixv6/HZK0+uRNxA+x/eQ
qDmPS42w3wKBgFUWOQM1Nty4Lz4bGK4ydNO1yopaA9SsbxQ+H9ewn09uvJvsfkke
Mlh4kLRmnrY0SiSABw84yLfXomDr4Dpvqmrh28fcf//rDqUt6m/Fx9BhR2GzybNP
QtcGJV/fQN76NepnYq2tbu+/FzmNCKPN4wq+ruOYbiR9kqSlk6J1w0qJAoGAXUpy
NELNWGdXgcn+hjejRQ2UNYh1DlflzDGt9ENI5b+bUMvIFT9ZWbDK11ZrAVlUgd9e
GKtS1kAAJjMRbz1CaqsopwlXwd7TNqvZ5x4rQl4bL2F4yyA/x3I98lEGNiH4a4Is
BQSVuzZWIQwPaGlnqztGFVxpws92VttAQSciaCMCgYEAluTFz/6k0iBmwHduCOyb
Jt8ns1NPFEpDRIzEZi30HogXmEpfTJ7rPb6EFiA63ke6CW42SuGhw+9dOCvJQrUP
jP3uQepmf0OPYqlDbRqsirmqzM8lI19yo7TItdPAtD0J5ql3FhP1ixC+3U8SvR87
LrjV6X4GDxWyLarbqP5YMwo=
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr6rsxr2Cua5OSiTfRO2T
RwzH9AB0AY08yR0kGJY511qCmyRAlgj8nqoH3lHJCMlS9KEmfiwXox5KrbIMwsRg
jyZpbm0zlUOlm4F+4Vp0Iirh2I2C/7uyaYFbUaMFVBY3AjZw63+yWRHuEuekxn3z
VWk2KNzqnEG7uJhNy9zLaXJjqGUA8YYM9GoevsLjQCZmI65x6QRBKl7d70LhDPUw
fmRLqB2lzPQiKHurw5+Q4D/hhH9wqgHaMqfGort4a/UmVdtFHUSWSvtz67r3CxO2
OWBY53kU0MMTSWTD1ehciBv4thJlCz6kiZ3v8TTrH9ksR6rZnm9lCNLEFccsq7Iv
uQIDAQAB
-----END PUBLIC KEY-----
//v25和v26
1515638170601

//cc_sha256加密后
25 c8 2c 78 b6 a1 57 e3 35 8c a5 9b 53 6e a8 eb
a5 da c9 62 c3 1e 8c b5 30 11 24 2f 27 c6 6f 92
//sub_10159CC80(672, (__int64)&v42, 0x20, (__int64)&v41, &v40, v23) v42指向256出来的结果如上,v23 = sub_100BCDFF4(v21, 1); 把密钥处理后成了个莫名其妙的结构。
0x162b88160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x162b88170: 90 18 ad 02 01 00 00 00 00 00 00 00 00 00 00 00  ..?.............
0x162b88180: 40 a2 73 60 01 00 00 00 70 97 69 60 01 00 00 00  @?s`....p.i`....
0x162b88190: 30 c7 fd 60 01 00 00 00 c0 e4 40 60 01 00 00 00  0??`....??@`....
0x162b881a0: f0 af 7d 60 01 00 00 00 c0 6d 60 60 01 00 00 00  ?}`....?m``....
0x162b881b0: 90 69 6e 60 01 00 00 00 00 c7 03 60 01 00 00 00  .in`.....?.`....
0x162b881c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x162b881d0: 02 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00  ................
0x162b881e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x162b881f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x162b88200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00  ................
0x162b88210: e5 50 a3 02 a1 05 00 00 01 00 00 00 0b 00 00 00  ?P?.?...........
0x162b88220: 01 00 00 00 00 00 00 00 00 00 00 04 56 7a 4b 40  ............VzK@
0x162b88230: 06 00 00 00 02 00 00 00 b8 0b 00 00 00 00 00 00  ........?.......
0x162b88240: 06 00 00 00 00 00 00 00 b0 09 8f 60 01 00 00 00  ........?..`....
0x162b88250: f0 7f 75 60 01 00 00 00 50 00 00 00 00 00 00 00  ?.u`....P.......
//这段数据完全不明白

//  执行完sub_10159CC80函数,v40指向如下字符串:
5e277cc38848b0ea22c2fc08743f2f611c0b98c4c0ec8e69d8d9dc92624435026de79f33fa18053161b5dd769bf851ec24b1bf711a2fffdb514289d1c719d1585edbc4de59b20e32a8e2a310e0c3d21ab714d644fd477ff56692cb3d53d535acb18235d0a3b77e7721d49763cfd53abbd3824420ad119b2bea796115ce72d5e0af0660c645dbf641b32778aa60b78c5a48493f7a5a81e2bc8b5b330d180eb7535a72a51658cbb44fb4211a2b2b5a8c2065bd08df8578e146c264c02ca1d745d9a55b4a74e1efea14908ea4ed350ecd823ff5446e5c3a7d3df21160b00bf3e5734aefa8d7fec93873af869694caaab8ba3201f7995e1c0c95057ac7a5fec8937e

//经过Base64得到字节流如下:

5869643877346849734f6f6977767749644438765952774c6d4d544137493570324e6e636b6d4a454e514a743535387a2b6867464d574731335861622b4648734a4c472f63526f762f397452516f6e5278786e5257463762784e355a73673479714f4b6a454f444430687133464e5a452f55642f39576153797a31543154577373594931304b4f33666e6368314a646a7a39553675394f4352434374455a7372366e6c684663357931654376426d44475264763251624d6e654b70677434786153456b2f656c71423472794c577a4d4e474136335531707970525a5979375250744345614b7974616a43426c76516a6668586a6852734a6b774379683130585a7056744b644f4876366853516a7154744e51374e676a2f31524735634f6e3039386846677341767a35584e4b37366a582f736b3463362b476c70544b717269364d6748336d563463444a55466573656c2f73695466673d3d

//转换成文本
Xid8w4hIsOoiwvwIdD8vYRwLmMTA7I5p2NnckmJENQJt558z+hgFMWG13Xab+FHsJLG/cRov/9tRQonRxxnRWF7bxN5Zsg4yqOKjEODD0hq3FNZE/Ud/9WaSyz1T1TWssYI10KO3fnch1Jdjz9U6u9OCRCCtEZsr6nlhFc5y1eCvBmDGRdv2QbMneKpgt4xaSEk/elqB4ryLWzMNGA63U1pypRZYy7RPtCEaKytajCBlvQjfhXjhRsJkwCyh10XZpVtKdOHv6hSQjqTtNQ7Ngj/1RG5cOn098hFgsAvz5XNK76jX/sk4c6+GlpTKqri6MgH3mV4cDJUFesel/siTfg==

sub_10159CC80(672, (__int64)&v42, 0x20, (__int64)&v41, &v40, v23)

标题中提及的“BOE-B2-154-240-JD9851-Gamma2.2_190903.rar”标识了一款由京东方公司生产的液晶显示单元,属于B2产品线,物理规格为154毫米乘以240毫米,适配于JD9851型号设备,并采用Gamma2.2标准进行色彩校正,文档生成日期为2019年9月3日。该压缩文件内包含的代码资源主要涉及液晶模块的底层控制程序,采用C/C++语言编写,用于管理显示屏的基础运行功能。 液晶模块驱动作为嵌入式系统的核心软件组成部分,承担着直接操控显示硬件的任务,其关键作用在于通过寄存器读写机制来调整屏幕的各项视觉参数,包括亮度、对比度及色彩表现,同时负责屏幕的启动与关闭流程。在C/C++环境下开发此类驱动需掌握若干关键技术要素: 首先,硬件寄存器的访问依赖于输入输出操作,常借助内存映射技术实现,例如在Linux平台使用`mmap()`函数将寄存器地址映射至用户内存空间,进而通过指针进行直接操控。 其次,驱动需处理可能产生的中断信号,如帧缓冲区更新完成事件,因此需注册相应的中断服务例程以实时响应硬件事件。 第三,为确保多线程或进程环境下共享资源(如寄存器)的安全访问,必须引入互斥锁、信号量等同步机制来避免数据竞争。 第四,在基于设备树的嵌入式Linux系统中,驱动需依据设备树节点中定义的硬件配置信息完成初始化与参数设置。 第五,帧缓冲区的管理至关重要,驱动需维护该内存区域,保证图像数据准确写入并及时刷新至显示面板。 第六,为优化能耗,驱动应集成电源管理功能,通过寄存器控制实现屏幕的休眠与唤醒状态切换。 第七,针对不同显示设备支持的色彩格式差异,驱动可能需执行色彩空间转换运算以适配目标设备的色彩输出要求。 第八,驱动开发需熟悉液晶显示控制器与主处理器间的通信接口协议,如SPI、I2C或LVDS等串行或并行传输标准。 最后,完成代码编写后需进行系统化验证,包括基础显示功能测试、性能评估及异常处理能力检验,确保驱动稳定可靠。 该源代码集合为深入理解液晶显示控制原理及底层驱动开发实践提供了重要参考,通过剖析代码结构可掌握硬件驱动设计的具体方法与技术细节。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值