xukun245 发表于 2019-7-31 23:18

U3D手游逆向dll解密函数看不懂

研究了好几天.网上各种帖子看完.在去研究自己的看到的...现在根本搞不清该怎么写解密代码.
C我不太懂.我是java的.但是大概我也看的明白.
但是这句
strstr((const char *)haystacka, "Assembly-CSharp.dll")
一个int类型强转成char数组????然后还判断是不是"Assembly-CSharp.dll"...我特意找我弟看了一下.他说他也不懂....
ASC码我知道 int单转char我也能理解...一个int怎么能转成一个字符串呢....是真能还是我学疏才浅???

后面的代码更是云里雾里.我放弃了静态分析.开始研究怎么用动态调试.
然后我用IDA挂上真机调的时候..发现方法好像重载了....入参都不一样了


想问一下.....到底咋回事啊?难道这个so还动态改代码??重载的方法搜不到?

JemmyloveJenny 发表于 2019-7-31 23:28

数据类型判断错了……你最好找一下mono_image_open_from_data_with_name的函数原型
我觉得haystacka是一个指针,而并不是一个int
你看伪代码要先把数据类型分清了才能分析代码功能

JemmyloveJenny 发表于 2019-7-31 23:33

我觉得你动态调试的那个是对的
mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly, const char *name)

回不去的时光 发表于 2019-8-1 01:19

你这种只是加密dll, so库还是暴露的,比较容易。
ps:有偿脱壳,有无mono_image_open_from_data_with_name都可以脱

xukun245 发表于 2019-8-2 20:23

JemmyloveJenny 发表于 2019-7-31 23:28
数据类型判断错了……你最好找一下mono_image_open_from_data_with_name的函数原型
我觉得haystacka是一个 ...

我大概懂了.是不是其实IDA它反编译的并不一定完全是正确的.
就好比我有些java的代码反编译过来也有部分代码跟源代码不一样.
所以才导致后面动态的时候 跟我刚刚静态看的都不一样了?

JemmyloveJenny 发表于 2019-8-2 21:23

xukun245 发表于 2019-8-2 20:23
我大概懂了.是不是其实IDA它反编译的并不一定完全是正确的.
就好比我有些java的代码反编译过来也有部分 ...

对啊,IDA不一定正确
有时候光静态分析,比如跳转到调用的函数再返回来,被调用函数声明就改变了
这很常见的
页: [1]
查看完整版本: U3D手游逆向dll解密函数看不懂