前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

手动实现AUTOIT的反向编译_我就百不度_百度空间 相册 广场游戏 登录注册 关注此空间 我就百不度有一天我百度了两下,搜不到狐,也搜不到狗,偏偏搜到了Google! 02/19/2011 手动实现AUTOIT的反向编译 对于3.2.5.2+以前的版本编译的代码可以使用,对之后的新版将无法反编译出源代码. 教程目的:学习他人脚本思想.提醒大家注意如果要保证脚本的安全,建议使用代码迷惑.(虽然也能反)3.1.1.0+的autoit的反向编译(包括3.2.5.1最新版本).所需工具: OLLYDBG,ULTRAEDIT.AUTOIT中的autoit3a.exe请自己确定这个程序是不是autoit编写的.OD打开 autoit3a.exe (位于已经安装的autoit的路径,汉化版本默认为d:\autoit3\)参数填 那个前面确认是autoit3程序的EXE路径,A3X也可以.CTRL+S 查找命令序列:============================================push eaxANYtest eax,eaxpop ecxpop ecxANYpush ebxpush ebx============================================找到后显示为:0043964E |. 50 |push eax0043964F |. E8 ACFC0000 |call AutoIt3A.0044930000439654 |. 85C0 |test eax,eax00439656 |. 59 |pop ecx00439657 |. 59 |pop ecx00439658 |. 74 48 |je short AutoIt3A.004396A20043965A |. 53 |push ebx0043965B |. 53 |push ebx在push eax上面按F2下断,F9运行,中断.如果EAX显示:ASCII “>AUTOIT UNICODE SCRIPT<”就说明脚本是UNICODE编码的.如果显示:ASCII “>AUTOIT SCRIPT<”就说明脚本是ANSI编码的.取消断点.CTRL+S 查找命令序列:============================================lea eax,dword ptr ss:[ebp-1018]push eaxmov ecx,ebxANYtest al,alANYlea eax,dword ptr ss:[ebp-1018]============================================找到后在第二个lea eax,dword ptr ss:[ebp-1018]上面下断点(按F2)按F9一次,中断,F8一次,寄存器窗口出现脚本?取消刚才设置的断点(F2)=====================================================004069D3 |. E8 D5FDFFFF |call AutoIt3A.004067AD004069D8 |. 84C0 |test al,al004069DA |. 0F84 CE000000 |je AutoIt3A.00406AAE004069E0 |. 8D85 E8EFFFFF |lea eax,dword ptr ss:[ebp-1018] ; 断在这里004069E6 |. E8 ECF7FFFF |call AutoIt3A.004061D7004069EB |. 84C0 |test al,al=====================================================点击刚才lea eax,dword ptr ss:[ebp-1018]上面那个je AutoIt3A.00406AAE,看它跑哪里去.跑到了这里:=====================================================00406AAE |> \FF75 0C push dword ptr ss:[ebp+C]=====================================================在上面的地址下断.F9运行一次,再次中断.现在脚本解压缩完了.看看寄存器EDX的值(如果EDX未出现脚本,请使用下面的那个方法):EAX 0012F700 ASCII “U3TOOL.exe”ECX 0046E2D8 AutoIt3A.0046E2D8EDX 00C10048 ASCII 3B,” <AUT2EXE VERSION: 3.2.5.1>在EDX那一行上面点击右键>在数据窗口跟随.再看左下方内存窗口.在内存窗口右键>备份>保存数据到文件(扩展名修改为AU3).用scite打开这个保存的au3脚本,删除无用的数据.OK,脚本已经反编译完成了.另外的方法:我们按ALT+M打开内存.按CTRL+B搜索 AUT2EXE VERSION注意:这里要粘贴进去,不然无法识别.搜索到后回自动打开,里面就是包含有代码的数据了.右键>备份>保存数据到文件>随便取一个名字,保存吧.用scite打开这个保存的au3脚本,删除无用的数据.OK,脚本已经反编译完成了.附加说明:如果脚本是UNICODE编码的,先用ULTRAEDIT打开保存的那个文件,的脚本,搜索 FF FE (不用选中查找ASCII)把FF FE 前面的数据删除了(不要把FF FE删除了,这是让编辑器识别UNICODE用的).再用SCITE打开,把无用的数据删除了.搞定!收工.下次再写,怎么提取释放的文件.==============================================================================XD,继续写.先跟踪到上面提取代码的位置,并禁用所有断点.(不要运行)怎么提取文件呢?通过跟踪分析,autoit会先将A3X截取存在文件的部分放到临时文件夹(%temp%),再进行解码.解码过后,再按照脚本指定的路径复制过去.复制文件当然是用CopyFile API.那好,我们下断点.在左下方的命令行里面输入:BPX CopyFileA关闭自动打开的窗口先…按下ALT+B打开断点窗口.是否存在一个类似call dword ptr ds:[<&KERNEL32.CopyFileA>]的行?双击它.来到:004393A6 |> \6A 00 push 0 ; /FailIfExists = FALSE004393A8 |. 8D85 C8FDFFFF lea eax,dword ptr ss:[ebp-238] ; |004393AE |. 50 push eax ; |NewFileName = “d:\x.123456789″004393AF |. 8D85 D0FEFFFF lea eax,dword ptr ss:[ebp-130] ; |004393B5 |. 50 push eax ; |ExistingFileName004393B6 |. FF15 40714500 call dword ptr ds:[<&KERNEL32.CopyFil>; \CopyFileA在第一个PUSH EAX上面下断点(按F2.)解释一下:PUSH 0在这里代表如果文件存在就失败(不进行复制)第一个PUSH EAX代表要复制到哪里去(脚本中指定释放文件到哪里(fileinstall函数)或者复制到哪里(filecopy函数))...第二个PUSH EAX代表从哪里复制,前面已经说过,解码是在临时文件夹操作的...那这里当然是指向临时文件的路径.后面的那个CALL 就是执行文件复制了.OK,我们先F9一直到刚才下的这个断点.看看EAX寄存器的值就知道文件将会被复制到哪里去.文件名是什么.再按F8走到第二个PUSH EAX.此时EAX的值就是那个已经解码的临时文件的路径.再按F8走过那个CALL ,好了,文件已经释放完成了(也可能是脚本在执行filecopy函数).多的不说.请大家继续期待3.1.1.0的脚本的反编译.毕竟当时还是有不少优秀作品的.=================================XD,继续我们的反编译教程.这次是3.1.1.0的脚本(标识EA03,EA04.貌似3.2.2.0以上就是EA05了.应该说是第五代脚本压缩引擎了.)这里只是给个思路,不一定正确.大家还是自己研究.好了,我们开始.EXE来自死性不改的系统封装工具(声明:只是为了研究autoit 3.1.1.0 脚本的反编译方法,没有其他意思.)PEID查壳,UPX的,手脱可以,脚本脱也可以.这里不是为了脱壳,因为3.1.1.0及下面的版本脱壳了修复很麻烦,我们需要带壳调试.带壳调试首先还是要到真正的入口点(OEP).先给大家一个OD脚本:UPX OEP.txt (虚线内)------------------------------------------------//先加载EXE,再运行eob Breakfindop eip, #61#bphws $RESULT, "x"runBreak:stostobphwc $RESULTret----------------------------------------------------------------OD加载这个EXE.压缩代码是否分析>否打开脚本插件(插件>OD脚本>运行 或者 插件>ollydbg script>run script)运行UPX OEP.txt脚本.UPX OEP.txt在上面附件中.脚本执行完了,出现一个脚本运行完的对话框确定,现在就已经停在OEP(入口点)处了.如果下面有一个循环,请在JMP 那行F4运行一下.再F7,就是真的OEP了.===================================================================004591EB 6A 00 push 0004591ED 39C4 cmp esp,eax004591EF ^ 75 FA jnz short autohal.004591EB004591F1 83EC 80 sub esp,-80004591F4 - E9 EF1BFDFF jmp autohal.0042ADE8004591F9 0000 add byte ptr ds:[eax],al004591FB 0000 add byte ptr ds:[eax],al004591FD 0000 add byte ptr ds:[eax],al004591FF 0000 add byte ptr ds:[eax],al话说thesnow站在看台上,说道:这个OEP啊,嗯,嘿,咳…就是如此,就是这般…只见居士拿着一把斧头过来,”你Y找打!OD加载完了左下方就是显示的OEP!!!.”“非也!非也!这是壳的OEP,不是程序的OPE…”“Y的,又不早说,兄弟们上啊!”只见黄土漫天,风雨变色.几千号人硬是把看台处锤平了…继续继续…====================================================================OD左下方有个命令行插件,输入BPX READFILE并回车.按下ALT+B看看是否已经有几个断点.如果一个都没有,晕啊,你当前所在的位置还没有到OEP…====================================================================关闭其它窗口,保留CPU窗口,最大化.F9运行1次,中断在readfile API处.readfile当然就是读取文件了,读取自己身上的脚本.打个比方哈:thesnow被居士打到医院住了半个月.不幸的事情发生了.原来这个医院是dingamao的地盘…dimgamao原先沉迷美色,残害多少良家少女(少妇?)…后来被thesnow打得满地找牙.称再也不敢了.这次撞到他手里,挨…dingamao使尽(拼音:失禁?)全身力气(包括吃奶的)在thesnow头上大便(假设是大便 )thesnow身上多了东西(附加数据),thesnow昏迷醒来过后 当然要研究一下头上是什么东西.dingamao就在thesnow的手上按F2下断点.只要thesnow用手去摸(假设是摸),就会有一个恐龙护士来阻止(中断下来.)thesnow第一次去摸就被发现阻止了(中断),把dinmagao也叫来了…===========================================================在ASM代码区右键>搜索>搜索命令序列.(可以直接按CTRL+S)输入:====================================================================mov dword ptr ss:[ebp+10],edimov eax,dword ptr ss:[ebp+C]mov ecx,dword ptr ss:[ebp+10]pop edipop ebxmov dword ptr ds:[eax],ecxxor eax,eaxpop esi=====================================================================假设:dinmagao让thesnow去摸,但是在thesnow每分辨出一次**里面含有什么物质时就阻止.dimgamao的断点如下:找到后在那个POP EDI上面下断点(按F2)按F9几次(可能很多次),直到寄存器窗口出现脚本(中断在上面的POP EDI处)终于:thesnow分辨出这个东西就是**(脚本).dingamao气消了,准备把那些**弄走.毕竟以前两人还是朋友.看看dingamao的方法吧:点击ECX寄存器的HEX代码,右键>在数据窗口中跟随.内存区域就是AU3的完整代码了.选中内存窗口>右键>备份>保存到文件>随便取一个名字,保存吧.用ULTRAEDIT打开保存的那个文件,把两头无用的数据删除了.OK,脚本已经完全提取了. 注:本文转自http://www.pleasecrackme.com/course/700.html #破解技术 分享到: 举报 浏览(482) 评论 转载 你可能也喜欢 喝咖啡必知礼仪你知道多少? 医生说绝不能吃的七种肉 最强悍抗衰老的10种食物 十八个方法可以把你从你的压力中营救出来 朋友之乐,贵在那份踏实的信赖 知道偏方70ge,从此不用去医院 【转】java中的synchronized关键字 本文最近访客 站上巨人的肩膀 SmartChild trojancyborg 未秋叶已落 nrise hackxiu 评论 帮助中心 | 空间客服 | 投诉中心 | 空间协议&copy;2014 Baidu