|
2015年6月21日 08:41:09 大家反馈没皮肤文件,忘记打包了,不好意思,已添加到最后,请大家重新下载即可。 首先祝大家端午节快乐,很久没有出教程了,今天给大家分享一个 AutoIt3的破解教程,一个网络呼死你程序,说实话,这是我见过的最给力的呼死你,没有之一,接下来是破解过程及呼死你实现分析。
在此之前,从没有接触过AutoIt的程序,借助万能的度娘,在百度百科找到如下原话:
AutoIt 目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作。
一、软件初窥
软件主要限制:未购买,只能呼叫20次。显号各种模式都有不同程度的限制。
二、语言分析及反编译处理
查壳,显示Autoitv3.3 ,加了UPX区段。
由于以前从不知道有Autoit这号东东,以为是个UPX什么的东西,二话不说,丢OD,ESP定律,脱壳。
提示,无法打开脚本文件,无解,百度之。细细查看各路大神的文档,原来Autoit完全可以直接反编译。
感谢ximo大神如此好用的DeAutoIt,直接拖入,Decode秒秒钟搞定,生成一个呼死你98.exe.au3 文件。由于这是反编译的源码,因此我们最好能弄个编辑器,所谓工欲善其事必先利其器,百度一个Autoit的SDK环境,打开反编译的au3后缀的文件。
三 、反编译分析及源码修复
1、删除开头的三句由工具自动生成的注释。应该是分号”;”表示注释,而不是双斜杠。
2、头文件修复
初略翻看反编译的代码,有很多常量、字符串,API定义,直接运行也有很多错误。
有过高级语言编程基础的人都知道,编译器在编译的时候,会将所有的相关文件预处理到一个文件中后再编译链接,而这些常量,API函数就是编译的时候加进来的。接下来的任务就是找到程序真正的开头,把其他无关部分剔除。
继续需求万能的百度,在看雪和52有相关的文章,Autoit的程序,以如下代码开头,直接Ctrl+F,查找:
OPT ( "MustDeclareVars" , 1 )
OPT ( "TrayMenuMode" , 1 )
OPT ( "WinTitleMatchMode" , 2 )
OPT ( "GUIOnEventMode" , 1 )
找到以后,上面的所有代码删除。
选择菜单->工具->语法检查(Ctrl+F5),有牛多错误。晕中。
错误1:
WARNING: $DLL 可能未声明或者未创建 WARNING: $GUI_SHOW: 使用前并未进行声明.
解决1:
这种是没有申明变量,直接查找Decode au3的文件,copy过来。
GLOBAL CONST $STDOUT_CHILD = 2
GLOBAL CONST $STDERR_CHILD = 4
GLOBAL ENUM $TOOLBAR_1 = 1000 , $TOOLBAR_2 , $TOOLBAR_3 , $TOOLBAR_4 , $TOOLBAR_5
GLOBAL $TOOLBAR_STRINGS [ 5 ] , $TOOLBAR , $TOOLBAR_IMAGE , $TAB1 , $TAB2 , $TAB3 , $TAB4 , $TAB5 , $TOOLBARON
GLOBAL $HSTATUS
;申明变量
GLOBAL $BUSEADVTRAYMENU , $NTRAYMENU1 , $NSIDEITEM3 , $GPEDIT , $ABOUTITEM , $DIRCREA = 2 , $WORKDIR , $WORKTEMPPATH , $SERVER_URL , $INPUT4 , $DEBUG , $PICFILE , $ICOFILENUM , $DLL
错误2:
错误: 表达式错误
IF FILEEXISTS ( @SCRIPTDIR & "\img\wav.exe" ) THEN SHELLEXECUTEWAIT ( @SCRIPTDIR & "\img\wav.exe" , " "" & $MEDIAFILE_WAV & "" "" & $MEDIAFILE_MP3 & " ""
解决2:
这是引号的问题,需要将双引号引起来的单双引号改成单引号。
错误3:
ERROR: _TRAYICONSETCLICK(): undefined function.
函数未定义
解决3:
查找函数所在的头文件,将其加入脚本文件。
这个工作是整个脚本修复过程中最难的,大部分函数都可以在这个在线文档中心找到。
http://www.autoitx.com/Doc/
例如
_GUICtrlToolbar_AddButton 需要加入#Include <GuiToolBar.au3>
修复后的头文件如下:
#include <IE.au3>
#Include <GuiImageList.au3>
#Include <ScreenCapture.au3>
#include <WinHttp_GetRespond.au3>
#Include <GuiListView.au3>
#Include <GuiToolBar.au3>
#include <ButtonConstants.au3> ; 定义了 $BN_CLICKED 等等跟按钮有关的常量
#include <WindowsConstants.au3> ; $WM_COMMAND 等等系统信息代号在此定义
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiComboBox.au3>
#include <GuiEdit.au3>
#include <GuiMenu.au3>
#include <GuiToolTip.au3>
#include <file.au3>
#include <FileConstants.au3>
#include <String.au3>
#include <Date.au3>
#include <INet.au3>
错误4:
ERROR: MACADD(): undefined function.
作者自定义函数找不到。
解决4:
在反编译的源文件中,拷贝这类函数贴入待修改文档即可。
错误5:
有部分函数找不到头文件,发现是托盘相关的,暂且注释,不影响程序的主要功能。
解决5:
注释相关代码
修复以上错误以后,软件终于正常跑起来了。
四、破解
1、更改标题
GLOBAL $VERSION = 4.000000e+000 , $DL_QQ = "88888888" , $WEB_URL = "" , $SOFTNAME = "手机攻击器 [52破解首发]" , $VERTYPE = "X" , $SOFTBJ_JPG = "main.jpg" , $SOFTNAME2 = "" , $DL_NAME = "sjgj"
GLOBAL $YSERVER_URL = "j8call.com" , $SERVER_NAME = "j8"
2、更新机制
作者利用各大微博,发表一篇显示当前最新版本的加密字符串进行更新。
$A = SEARCH_SEVER ( "http://www.cnblogs.com/kgcall" , "blog" , "T" )
IF $A <> 1 THEN
$A = SEARCH_SEVER ( "http://myblog2013123.blog.163.com/" , "163" , "T" )
IF $LINKSERVEROK <> 1 THEN
$A = SEARCH_SEVER ( "http://www.cnblogs.com/kgcall" , "blog" , "A" )
IF $LINKSERVEROK <> 1 THEN
$A = SEARCH_SEVER ( "http://myblog2013123.blog.163.com/" , "163" , "A" )
IF $LINKSERVEROK <> 1 THEN
TOOLTIP ( "" )
MSGBOX ( 48 , "抱歉![" & $SOFTNAME & " 当前版本号" & $VERSION & "]" , "对不起,无法连接网络电话服务器,或许软件版本太旧,请联系客服。客服QQ:" & $DL_QQ )
从微博内容看,应该有 X8/J8/C8几个版本,我们看看如何解密
查看函数
FUNC SEARCH_SEVER ( $SERVER_SEARCH , $SERVERURL_NAME , $HTML_LINKTYPE_I = "T" )
添加调试信息(ALT +D):
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $BALANCETXT = ' & $BALANCETXT [ 0 ] & @crlf & '>Error code: ' & @Error & @crlf) ;### Debug Console
$LINKURLCODE = $BALANCETXT [ 0 ]
IF $LINKURLCODE = "over" OR $LINKURLCODE = "gameover" THEN GAMEOVER ( )
$LINKURLTXT = _HEXTOSTRING ( CHANGE_NUMBER ( $LINKURLCODE , 2 ) )
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $LINKURLTXT = ' & $LINKURLTXT & @crlf & '>Error code: ' & @Error & @crlf) ;### Debug Console
解密结果如下:
这也是作者的三个服务器所在。
域名查询,不同的人所有者,可能是作者不同时期待过的公司用过的域名把。
3、服务器验证机制
主要实现方法均在 函数 FUNC READDATA ( ) 中,我们来分析下这个函数
增加调试信息,看看从服务器拿到了什么数据:
FUNC READDATA ( )
LOCAL $AARRAY2
$COMBOTXT = ""
TOOLTIP ( " " & @CR & " 正在连接网络电话平台。。。ok " & @CR & " (如长时间停滞请重关闭后新打开软件) " & @CR & " " , @DESKTOPWIDTH / 2 - 100 , @DESKTOPHEIGHT / 2 , "" , 1 )
IF $SHTML = "over" OR $SHTML = "gameover" THEN GAMEOVER ( )
$AARRAY = STRINGSPLIT ( $SHTML , "|" , 1 )
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $SHTML = ' & $SHTML & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
返回信息:
$SHTML = 120|4.0|1||0||0|||2||随机显号#BA#0/显号#B#3/不显号#A#3/破黑名单#BA#3/破白名单#BA#5/一直响#C#5|http://www.epshops.cn/soft2/sjgj/call.rar|2312817852|2312817852@qq.com|*荣校|http://user.qzone.qq.com/2312817852/main|手机攻击器|643385|sjgj| [请按软件上QQ支付宝联系付款,要求付到其它帐号都是骗子]||386802|success
显然是一大串用”|”分割的字符串,那么接下来需要解析这些字符串。
OFTBGMIN = $AARRAY [ 1 ]
;$NEWVER = $AARRAY [ 2 ]
;软件版本
$NEWVER = "4.0"
;$ON_OFF = $AARRAY [ 3 ]
$ON_OFF = 1;
$SELFORDER = $AARRAY [ 4 ]
;剩余天数,大于1000为永久会员
;$REDAYS = $AARRAY [ 5 ]
$REDAYS = 8888
IF $REDAYS = "" THEN
$REDAYS = 0
$REDAYSTXT = "(未购买)"
ELSEIF $REDAYS > 1000 THEN
$REDAYSTXT = "终身"
ELSE
$REDAYSTXT = $REDAYS & " 天"
ENDIF
;不知道什么东西
$NEWVERTXT = $AARRAY [ 6 ]
;等级,6应该是高等级了
;$LEVEL = $AARRAY [ 7 ]
$LEVEL = 6
;到期时间
;$REGOVERTIME = $AARRAY [ 8 ]
$REGOVERTIME = "9999-12-31"
IF $REGOVERTIME = "" THEN $REGOVERTIME = "(未购买)"
;不知道什么东西
$KVER = $AARRAY [ 9 ]
;响铃时间
$RINGTIME = $AARRAY [ 10 ]
IF $RINGTIME < 0 THEN $RINGTIME = ABS ( $RINGTIME )
;$QQSIGN = $AARRAY [ 11 ]
$QQSIGN = "8888888"
;作者的响铃设置,形如如下字符串
;$IMEISELECT = 随机显号#BA#0/显号#B#3/不显号#A#3/破黑名单#BA#3/破白名单#BA#5/一直响#C#5
$IMEISELECT = $AARRAY [ 12 ]
;下载地址
;$DOWNURL = $AARRAY [ 13 ]
$DOWNURL = www.52pojie.cn
;作者QQ
;IF $AARRAY [ 14 ] <> "" THEN $DL_QQ = $AARRAY [ 14 ]
$DL_QQ = 8888888
;支付宝信息
;$DL_ZFBACCOUNT = $AARRAY [ 15 ]
;$DL_ZFBNAME = $AARRAY [ 16 ]
$DL_ZFBACCOUNT = "==无痕破解=="
$DL_ZFBNAME = "无痕破解"
;IF $AARRAY [ 17 ] <> "" THEN $WEB_URL = $AARRAY [ 17 ]
$WEB_URL ="www.52pojie.cn"
;IF $AARRAY [ 18 ] <> "" THEN $SOFTNAME = $AARRAY [ 18 ]
$SOFTNAME = "手机攻击器"
$YLINKCODE = $AARRAY [ 19 ]
IF $AARRAY [ 20 ] <> "" THEN $DL_NAME = $AARRAY [ 20 ]
;IF $AARRAY [ 21 ] <> "" THEN $SOFTNAME2 = $AARRAY [ 21 ]
$SOFTNAME2 = " [破解:无痕 52破解首发 不要非法使用] "
$CLOSETRY = $AARRAY [ 22 ]
$MACID = $AARRAY [ 23 ]
修改完以后运行如下:
4、 呼叫机制
查找字符串“成功提交“,加入如下调试代码:
$POSTTXT = "macadd=" & $MACADD & "&tp=call&phone=" & $INPUTPHONENUM & "&taskto_imei=" & $COMBOREAD & "&linkcode=" & $LINKCODE & "&upylinkcode=" & $YLINKCODE & "&callbegin=" & $CALLBEGIN & "&taskid=" & $TASKID & "&callnum_code=" & $CALLNUM_CODE & "&dl_name=" & $DL_NAME
$URL = $SERVER_URL & "call_link2.asp?" & $POSTTXT
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $URL = ' & $URL & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
IF $DEBUG = 1 THEN CLIPPUT ( $URL )
IF $DEBUG = 1 THEN MSGBOX ( 262144 , "呼叫提交地址" , $URL )
输入一个号码以后,可以看到向服务器然会如下数据:
$URL = “http://www.epshops.cn/ser/call_link2.asp?macadd=SA29BE68834B2B2&tp=call&phone=13766178056&taskto_imei=BA&linkcode=338874&upylinkcode=418162&callbegin=begin&taskid=&callnum_code=2559DA&dl_name=sjgj”
其中有MAC地址,手机号等相关信息。
再看看提交以上URL后返回数据,返回数据分为2种:
第一种:$SHTML = |1||556262|0|751305551948518377027042DA57008001E58B159|137514|120|success
第二种: $SHTML = no access-phonehavecall|success
第一种: 成功提交到服务器,进行呼死你操作。
第二种: 提交失败。
五、结语
因此,文章写到这里,我们基本已经可以给出如下结论:
1、本地exe只是一个提交工具,提交数据到服务器,进行呼死你操作。
2、由于呼叫机制在服务器实现,因此,本地破解徒劳。
3、这是一个不完全的破解,由于服务器验证,每个号码只能呼叫提交20次,但破解成功的地方是,可以进行新号码无限提交。
4、测试呼叫频率超高,号码随机显示,整人效果杠杠的。
|
|