关于通达OA某平台版本的函数混淆处理诀窍

本文分享了如何通过对比分析低版本源代码来解决通达OA平台版本逆向还原的问题,强调了积累和实践的重要性。同时指出,尽管zend4.x引入了函数混淆功能增加了逆向难度,但并非无法逾越。

      通达OA是国内OA行业的翘楚,在办公自动化方面扮演着十分重要的角色。在国内的IT业界一直有一个潜规则:名气大,功能出色的商业软件一定就是模仿与抄袭的对象。通达OA自然也免不了被许多开发者或者软件公司拿来当练手的样本。它是由php语言开发的。目前php的逆向解密已经不是什么非常困难的工程。很多所谓自主创新的OA软件都是照抄通达的。如果懂逆向的朋友,一定知道,解密出来的代码,很多是错误的,甚至是把某些代码丢失了,如何让逆向出来的代码可以正常运行。这需要逆向开发的人员具备相当的编程能力。懂得排查错误与修补缺失的代码。自古是道高一尺,魔高一丈。zend4.x以后在php里面加入了函数混淆的功能,这让逆向出来的代码变得更加难以修复。当然了,唯一的死办法就是逆向人员自己动手制作超级字典。说穿了就是制作一张乱码特征的对照翻译表。我们在尝试修复通达某个平台版本的过程中,也遇到过很多混淆的函数。刚开始束手无策。后来偶然的机会,得到一套通达早期版本的源代码文件(尽管这套代码也是错误百出),通过对比分析,发现高版本中很多混淆的函数字段,其实可以从低版本的某些地方得到印证。经过一番引用替换测试,收获还真不小。终于完成该版本源代码得100%逆向还原。

     我在这里只不过是告诉大家一个解决问题得途径,平时多注意积累。函数混淆不是一道不可逾越的鸿沟!得意

通达OA2010版本,完整general目录下php文件无加密,示例: <?php /*********************/ /* */ /* Version : 5.1.0 */ /* Author : RM */ /* Comment : 071223 */ /* */ /*********************/ include_once( "inc/auth.php" ); if ( $LOGIN_THEME != "10" ) { $query = "SELECT * from INTERFACE"; $cursor = exequery( $connection, $query ); if ( $ROW = mysql_fetch_array( $cursor ) ) { $IE_TITLE = $ROW['IE_TITLE']; } echo "<html>\r\n<head>\r\n<title>"; echo $IE_TITLE; echo "</title>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\r\n[removed][removed]\r\n[removed]\r\nself.moveTo(0,0);\r\nself.resizeTo(screen.availWidth,screen.availHeight);\r\nself.focus();\r\n\r\nrelogin=0;\r\nfunction exit()\r\n{\r\n if(document.body.clientWidth-event.clientX<50||event.altKey||event.ctrlKey)\r\n {\r\n"; if ( $ISPIRIT == 1 ) { echo "return;"; } echo " var req = new_req();\r\n\treq.open(\"GET\", \"relogin.php\", true);\r\n\treq.send('');\r\n }\r\n}\r\n\r\n[removed]\r\n</head>\r\n"; include_once( "inc/antivirus.txt" ); echo "<frameset rows=\"50,*,20\" cols=\"*\" frameborder=\"no\" border=\"0\" framespacing=\"0\" id=\"frame1\" <frame name=\"banner\" id=\"banner\" scrolling=\"no\" noresize=\"noresize\" src=\"topbar.php\" frameborder=\"0\">\r\n <frameset rows=\"*\" cols=\"200,*\" frameborder=\"no\" border=\"0\" framespacing=\"0\" id=\"frame2\">\r\n <frame name=\"leftmenu\" id=\"leftmenu\" scrolling=\"no\" noresize=\"noresize\" src=\"ipanel\" frameborder=\"0\">\r\n <frame name=\"table_index\" id=\"table_index\" scrolling=\"no\" src=\"table.php\" frameborder=\"0\">\r\n </frameset>\r\n <frame name=\"status_bar\" id=\"status_bar\" scrolling=\"no\" noresize=\"noresize\" src=\"status_bar\" frameborder=\"0\">\r\n</frameset>\r\n</html>\r\n"; exit( ); } include_once( "inc/utility_all.php" ); include_once( "inc/td_core.php" ); include_once( "inc/chinese_date.php" ); include_once( "inc/sys_function_all.php" ); ob_end_clean( ); 本资源(仅供技术学习,版权归原公司所有)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值