
1、脱壳
下载,安装,查壳,发现是:PECompact 2x -> Jeremy Collake
熟悉 PECompact 2x 的人都知道,这个壳的入口点就是程序的入口点,我们直接OD载入,
看到EIP那里就是入口点00401000
在输入 he eip 回车,F9运行,直接飞到OEP ,删除硬件断点,dump!
不知道是不是我OD的dump插件的问题,我用了几个OD怎么dump出来修复的都没用
只好 LoadPE 来dump ,然后 修复 ImportREC 修复
OEP输入1000,自动找RVA,修复,ok!
再查壳:E language
==============================================================================================
2、常规方法
由于常规方法我只讲思路,就是EcE或者用bp MessageBoxA找找按钮事件,然后找到之好改跳转。
但是随便输入注册码都能提示注册成功,而软件还是没有注册。经过冥想,我找到了以下方法。
==============================================================================================
3、非常规方法
细心的人会发现,od载入这个软件会发现提示有压缩代码,一般我们加载压缩壳都会有这样的提示。
但是这个软件我们已经脱壳了,显示E language
我们这时候用我师兄(luocong师兄,比我高几届,我现在还没毕业)的查找字符串插件是找不到字符串的。
这就是E语言封装的结果,我们来突破易语言的封装,找真正的“ OEP”吧。
==============================================================================================
E语言的通用入口点
00401000 > E8 06000000 call 0040100B ; F7进入
00401005 50 push eax ; 这是退出代码
00401006 E8 BB010000 call <jmp&kernel32ExitProcess> ; 退出释放进程
。。。。。(华丽的省略号)。。。。。
004010A2 50 push eax ; 初始化,准备加载E语言支持库
004010A3 E8 44010000 call 004011EC
004010A8 68 19104000 push 00401019 ; ASCII "krnlnfnr"
004010AD 8D85 FCFEFFFF lea eax, dword ptr [ebp-104]
004010B3 50 push eax
004010B4 E8 25010000 call <jmp&kernel32lstrcat> ; lstrcatA函数
004010B9 50 push eax ; 文件名
004010BA E8 19010000 call <jmp&kernel32LoadLibraryA> ; LoadLobraryA函数
004010BF 85C0 test eax, eax ; 测试支持库加载是否成功,成功就使下一句跳转
004010C1 0F85 9E000000 jnz 00401165 ; 不成功就从注册表中找E程序的安装目录
。。。。。(又是菜鸟最喜欢的华丽的省略号)。。。。。
00401191 FFD0 call eax ; 加载E格式进行本地封装等 *** 作,F7进去
00401193 6A 00 push 0 ; ExitCode=0
00401195 E8 2C000000 call <jmp&kernel32ExitProcess> ; 退出释放进程
。。。。。(还是无比华丽的省略号)。。。。。
1002998A 55 push ebp
1002998B 8BEC mov ebp, esp
1002998D 8B45 08 mov eax, dword ptr [ebp+8]
10029990 50 push eax
10029991 B9 10DB0E10 mov ecx, 100EDB10
10029996 E8 04F5FFFF call 10028E9F ; F7进去
1002999B 5D pop ebp
1002999C C2 0400 retn 4
==============================================================================================
到了看krnlnfnr的领空了
1002998A 55 push ebp
1002998B 8BEC mov ebp, esp
1002998D 8B45 08 mov eax, dword ptr [ebp+8]
10029990 50 push eax
10029991 B9 10DB0E10 mov ecx, 100EDB10
10029996 E8 04F5FFFF call 10028E9F ; F7进去
1002999B 5D pop ebp
1002999C C2 0400 retn 4
之后就到了这里:
10028E9F 55 push ebp ; 对E语言格式进行封装
10028EA0 8BEC mov ebp, esp
10028EA2 83EC 08 sub esp, 8
10028EA5 53 push ebx
10028EA6 56 push esi
10028EA7 57 push edi
10028EA8 894D F8 mov dword ptr [ebp-8], ecx
10028EAB FF15 E0230C10 call dword ptr [<&KERNEL32GetProc>; kernel32GetProcessHeap
10028EB1 8B4D F8 mov ecx, dword ptr [ebp-8]
10028EB4 8981 50040000 mov dword ptr [ecx+450], eax
10028EBA 8B55 08 mov edx, dword ptr [ebp+8]
10028EBD 8B42 30 mov eax, dword ptr [edx+30]
10028EC0 83E0 01 and eax, 1
10028EC3 85C0 test eax, eax
10028EC5 75 10 jnz short 10028ED7
10028EC7 8B4D 08 mov ecx, dword ptr [ebp+8]
10028ECA 51 push ecx
10028ECB 8B4D F8 mov ecx, dword ptr [ebp-8]
10028ECE E8 4DFB0200 call 10058A20 ; 封装完成
10028ED3 FFE0 jmp eax ; 跳到程序真正的OEP
==============================================================================================
0041E5EF FC cld ;程序真正的OEP,可以搜索字符串了
0041E5F0 DBE3 finit
0041E5F2 E8 F7FFFFFF call 0041E5EE
0041E5F7 68 A1E54100 push 0041E5A1
0041E5FC B8 03000000 mov eax, 3
0041E601 E8 36000000 call 0041E63C
0041E606 83C4 04 add esp, 4
0041E609 E8 A2E1FFFF call 0041C7B0
0041E60E 68 CC000152 push 520100CC
0041E613 E8 1E000000 call 0041E636
0041E618 83C4 04 add esp, 4
0041E61B 6A 00 push 0
0041E61D E8 0E000000 call 0041E630
0041E622 E8 03000000 call 0041E62A
0041E627 83C4 04 add esp, 4
0041E62A - FF25 F9B24100 jmp dword ptr [41B2F9] ; krnln10029892
0041E630 - FF25 FDB24100 jmp dword ptr [41B2FD] ; krnln100297FD
0041E636 - FF25 01B34100 jmp dword ptr [41B301] ; krnln10029827
0041E63C - FF25 05B34100 jmp dword ptr [41B305] ; krnln10028F95
0041E642 - FF25 F5B24100 jmp dword ptr [41B2F5] ; krnln1002995A
0041E648 - FF25 E9B24100 jmp dword ptr [41B2E9] ; krnln100297D6
0041E64E - FF25 DDB24100 jmp dword ptr [41B2DD] ; krnln10028FBA
0041E654 - FF25 E1B24100 jmp dword ptr [41B2E1] ; krnln10029011
0041E65A - FF25 E5B24100 jmp dword ptr [41B2E5] ; krnln100297B7
0041E660 - FF25 EDB24100 jmp dword ptr [41B2ED] ; krnln10029852
0041E666 - FF25 D5B24100 jmp dword ptr [41B2D5] ; krnln10029799
。。。。。(最后一次华丽的省略抢风头)。。。。。。。。
==============================================================================================
经过上面无聊的分析后发现:
那么以后找E语言真正的OEP只要在脱壳后的程序“右键”-“查找”-“二进制字符串”
输入 “ FC DB E3 ” 就可以到真正的易语言OEP了。
==============================================================================================
找到真正的OEP后就非常方便了,我们可以搜索字符串,找到关键字就可以秒杀了。
对真正的OEP按 F4 运行到所选,之后立刻“右键”-“超级字符串参考”-“查找ascii”
就会发现很多关于注册的字样,那么究竟谁才是真正的关键字眼呢?
一般都是找注册失败的提示啊,然后改跳转让它成功。
最后我找啊找,终于下面这句才是关键语句:
超级字串参考, 项目 30
地址=0041C33D
反汇编=PUSH dumped_004032EF
文本字串=未注册版本,您只能转换10次,请您注册此软件!
双击来到这里:
0041C33D |68 EF324000 push 004032EF ; 未注册版本,您只能转换10次,请您注册此软件!
往上看看有个je跳,是这样的:
0041C330 /0F84 48000000 je 0041C37E ;这个跳,改jmp跳过就注册了
0041C336 |68 04000080 push 80000004
0041C33B |6A 00 push 0
0041C33D |68 EF324000 push 004032EF ; 未注册版本,您只能转换10次,请您注册此软件!
0041C342 |68 01030080 push 80000301
0041C347 |6A 00 push 0
0041C349 |68 02000000 push 2
0041C34E |68 02000400 push 40002
0041C353 |68 EF000116 push 160100EF
0041C358 |68 CC000152 push 520100CC
0041C35D |68 03000000 push 3
0041C362 |BB 80000000 mov ebx, 80
0041C367 |B8 03000000 mov eax, 3
0041C36C |E8 DD220000 call 0041E64E
0041C371 |83C4 28 add esp, 28
0041C374 |C705 00229A00 0>mov dword ptr [9A2200], 1
0041C37E \6A 00 push 0
最后保存,运行,发现。。。已经注册了。。。连注册码都不用输入。。。
给同学测试,成功!
--------------------------------------------------------------------------------
经验总结
本文重点是讨论易语言的封装问题,突破易语言的封装去寻找用易语言编写的程序的字符串进行突破。经过这样做,才有上
面的1字节秒杀效果。
你问的问题比较含糊,大致上理解你可能是想使自己的软件能快捷浏览或使用软件附带的某些文件或针对某个功能的子应用程序!
说你的问题简单也可以,复杂也可以!
但如果我用复杂的方式去解答你的问题,你只能更加迷糊了!
下面我用比较基础的方式来解答你的问题吧:
首先,你想把所有东西都合并到一个EXE中,这是可以的,但是,这不现实!
并不是一个理想的应用程序的做法!
通常,程序总是有明确功能的,当涉及的范围较多时,往往会分成几个执行程序!
然后会有一个概览的主程序,假设运行A程序,A程序中放置N个按钮,按钮标题要能简明功能!
当点击某按钮时,使用E的运行()函数,运行处理相应功能的子应用!
一般代码为:运行(取运行目录()+'\B功能程序exe')
而通常我们都会把做好的软件打包并封装成安装文件,通过这种方式,让使用者选择安装路径,
自然就把打包好的N个文件或EXE等复制到指定的路径中例如 软件的帮助文件
复杂的,就应用很多手段了,要将预先制作好的子应用程序编译好,并在主程序中将子应用程序当成资源来导入的主程序中,当要使用的使用,就把资源数据写出到磁盘上,然后再使用运行命令来运行!
写出数据到磁盘的函数是:写到文件(参数1:写出的路径,参数2:欲写入的字节集数据)
以上内容为手工打字解答,绝非转载,望能给予LZ一些帮助!转载请注明出处谢谢!
解决了么?很简单啊 ,在易语言编程软件界面下(保持窗口激活)按住Alt键不放,然后依次按i、R、P键(字母输入状态),出现了添加资源的框,这里注意一下(他那个或图组名称是(1)等下写出文件时就要填写#1) ,然后在内容那一格双击,在选择导入新,出现通用对话框,然后在文件类型(最下面)那选择所有文件,然后找到你的视频文件添加进去就行了,接下来就是代码了 我给你写一下,你直接复制进去就行了
版本 2
子程序 __启动窗口_创建完毕
写到文件(取运行目录()+“sprm(写出的视频名称和格式)”,#1)’如果不想写出到软件的运行目录那就可以指定某个目录的路径就行了 ,记得添加写出的视频文件的名称就行了
问题一:易语言代码编辑好后,编译是变成程序来运行吗 菜单里面选择“编译”》“编译”或者是“独立编译”编译:要输出多个文件 其中的文件除有exe的可执行文件外还有相关的一些支持库 在吧软件给别人运行的时候里面的文件缺一不可 都要放到那个EXE文件的相同目录里面!独立编译:只输出一个EXE的可执行文件 就是相当于那些支持库文件被融入到exe文件中了 如果要给别人使用的时候就不那一个exe文件发别人就可以了。
问题二:怎么用易语言打开那些用易语言编译好的exe后缀的易语言程序? 靠,我看错题目了。。不能反编译的!新人总是异想天开,要是可以直接打开,别人的软件还卖上个几千块一个,你说要是可以直接改,别人还要买干什么,直接改,所以说不可能的。可以用OD工具进行反汇编,LZ的等级还没到,不可能实现,如果想学习,给你个传送门 52pojie。
问题三:易语言编译完成的文件怎么才能用易语言打开 易语言只是一个编程语言,不能反编译。您下载的软件是已经编译出来的了,如果想反编译,就很难,我也不会。。。
问题四:怎么打开用易语言编辑的软件(已经编译好的) 可以反编译,简单可以修改文本, 工具用C32ASM 可以看看反汇编教程
问题五:用易语言编译程序用哪种编译方式多好? 静态编译和普通编译一样
静态编译是封装了所有易语言的api,而普通编译把易语言api编程文件,再用易语言来调用而已
其实两者都是一样,个人推荐静态编译,这样有效减少文件数量
至于你说的独立编译和静态编译是同一种意思
问题六:请问有了易语言源码怎样编译成软件exe? bak是易语言备份文件,把bak后缀改成e就可以用易语言打开,
打开易语言时他会提示载入模块,根据 *** 作加载ec模块文件
生成win32程序,可以用易语言编译(如图下)
易语言下载:1809783171:443/461879
问题七:易语言 调试易程序一运行直接就完毕 这种情况很多人都遇到过,包括我归类以下几种可能
使用了ET助手里面的一键快捷编译
编译器配置出问题了
有进程拦截了link 因为link属于调试环境,可能是某进程防止被调试,hook了相关函数,导致link启动的时候直接被拦了
第三种的可能性是占90%以上某些游戏或者软件运行后,会启动某服务 或者驱动开机启动来防止自身主程序被调试
最主要的因素还是是因为LINK被拦截个人认为如果答错了飘过即可勿喷
问题八:易语言程序用易语言运行时没问题,但是编译出来后再运行程序出了点错怎么办 10分 易语言已经调试输出了错误信息
错误(10143): 静态编译暂不支持使用了NPK或OPK支持库的程序。
所以不可以使用“静态编译”
只能使用“编译”
问题九:易语言版本不支持编译程序及制作安装软件怎么办 因为你用的易语言是学习版的,要破解了才能编译
破解补丁放到易语言根目录下运行,以下是破解补丁的下载地址
panbaidu/s/1sjob7rB
问题十:易语言里如何运行编辑框内容? 要代码 运行 (编辑框1内容, 真, )
易语言对象型是指一种面向对象设计开发的编程语言,它可以使用易语言指令将数据和程序封装成一个可移植的、独立运行的可执行文件。它既可以通过面向过程的编程方法来实现,也可以通过面向对象的编程方式实现。
易模块是别人封装好的程序集,比较知名的像Super-EC(超级模块),它提供了很多系统支持库不存在的功能。使用很简单,易语言窗口左边框的下面,选择“程序”,在左边框可以看到一个“模块引用表”,双击它,打开一个对话框,选择EC文件,就可以调用了,如果想要删除易模块在程序中的支持的话,就右击易模块文件(左边栏中模块引用表的下面,如果载入了还没有就点一下加号),删除即可。至于易包,就是类似于DLL的EPK文件,多数用于团队开发。
纯手打,选我呗
以上就是关于将易语言生成的EXE反编汇全部的内容,包括:将易语言生成的EXE反编汇、易语言如何2个程序合成1个、如何把一个视频文件写入封装到易语言程序里面,别人打开程序以后,一样可以观看我添加的视频!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)