U3D手游逆向dll解密函数看不懂
研究了好几天.网上各种帖子看完.在去研究自己的看到的...现在根本搞不清该怎么写解密代码.C我不太懂.我是java的.但是大概我也看的明白.
但是这句
strstr((const char *)haystacka, "Assembly-CSharp.dll")
一个int类型强转成char数组????然后还判断是不是"Assembly-CSharp.dll"...我特意找我弟看了一下.他说他也不懂....
ASC码我知道 int单转char我也能理解...一个int怎么能转成一个字符串呢....是真能还是我学疏才浅???
后面的代码更是云里雾里.我放弃了静态分析.开始研究怎么用动态调试.
然后我用IDA挂上真机调的时候..发现方法好像重载了....入参都不一样了
想问一下.....到底咋回事啊?难道这个so还动态改代码??重载的方法搜不到?
数据类型判断错了……你最好找一下mono_image_open_from_data_with_name的函数原型
我觉得haystacka是一个指针,而并不是一个int
你看伪代码要先把数据类型分清了才能分析代码功能 我觉得你动态调试的那个是对的
mono_image_open_from_data_with_name (char *data, guint32 data_len, gboolean need_copy, MonoImageOpenStatus *status, gboolean refonly, const char *name) 你这种只是加密dll, so库还是暴露的,比较容易。
ps:有偿脱壳,有无mono_image_open_from_data_with_name都可以脱 JemmyloveJenny 发表于 2019-7-31 23:28
数据类型判断错了……你最好找一下mono_image_open_from_data_with_name的函数原型
我觉得haystacka是一个 ...
我大概懂了.是不是其实IDA它反编译的并不一定完全是正确的.
就好比我有些java的代码反编译过来也有部分代码跟源代码不一样.
所以才导致后面动态的时候 跟我刚刚静态看的都不一样了? xukun245 发表于 2019-8-2 20:23
我大概懂了.是不是其实IDA它反编译的并不一定完全是正确的.
就好比我有些java的代码反编译过来也有部分 ...
对啊,IDA不一定正确
有时候光静态分析,比如跳转到调用的函数再返回来,被调用函数声明就改变了
这很常见的
页:
[1]