-
-
[求助]ida生成C伪代码失败,提示太复杂
-
发表于:
2017-12-3 16:12
7321
-
原来10M带宽用idm下载能满速,现在升到200M带宽后,idm使用32连接数最大下载速度3.5M,虽然同时下6个文件可以接近满速,但idm已经卡到很难操作了。至少说明服务器应该没有限制更多的连接数,于是想破解下idm6.29的连接数。
在网上找的该注册表的方法没用,所以猜测程序内有最大连接数判断,通过搜索注册表字符串'MaxConnectionsNumber',定位到引用的函数unknown_libname_20后就没有上一级引用了,于是用Cheat Engine断点找到了sub_5A1760,并修改二进制取消最大32的限制。
本以为如此简单就成功了,结果运行时只要超过32就崩溃。继续查找 调用sub_5A1760 的函数,找到 sub_573590,结果无法生成C伪代码,提示
,
通过CE断点回退到sub_576868,ida同样无法生成C伪代码。
CE继续定位到sub_5A5890,发现有alloca(428336);……_eh_vector_constructor_iterator_((int)&v67, 13384, 32, (void (__thiscall *)(_DWORD))sub_5A49D0, (int)sub_5A49A0);……_eh_vector_destructor_iterator_((int)&v67, 13384, 32, (void (__thiscall *)(_DWORD))sub_5A49A0);
查询分别是栈检查、new[]、delete[],于是猜测是内存分配不足导致崩溃,结果32都修改到240后,点下载直接崩溃,之前不过是连接数达到32后才崩溃。
继续通过文件、网络、消息api、搜索
13384
定位查看伪代码,发现很多32常量条件或循环判断,而且感觉无法生成C伪代码的复杂函数应该有关键代码,并因此没办法继续猜了。只有少数几处改改试试还成,那么多就算全改了也未必能行,寥寥几句其实已经浪费了几天时间了,到此放弃了。
本人不过是想靠读懂C伪代码,靠运气改改试试,并不懂多少这些软件的知识,继续深究已经大大超出我的预想和能力了。
只是心有不甘,想如果ida生成伪代码不出错,或许有机会读懂。又试了ida64,结果都无此功能。
希望大神有解决办法,怎么让ida64支持生成C伪代码?如果大神有闲暇破解下idm的连接数,更是感激不尽!先谢了!
另,看fdm能定义更大的连接数,下载试了下,它叫分段数,结果改大也无用,超过20连接服务器就拒绝了,鉴于此还是idm更强大,至少能到32连接。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)