首页
社区
课程
招聘
我对PowerBasic Edit 2.1的改造
发表于: 2010-12-25 21:32 7014

我对PowerBasic Edit 2.1的改造

2010-12-25 21:32
7014
用VB来写标准的dll是件很痛苦的事,在网上也下载了几个插件,不光使用麻烦,而且或多或少都有bug,听说PowerBasic可以用VB语言写标准的dll,下载试用了一下,感觉还真不错。
   又下载了一个PowerBasic Edit 2.1(下载地址:http://www.onlinedown.net/soft/110596.htm)配合PowerBasic使用,PowerBasic Edit(以下称其为PBedit),这款软件还有诸多方面等待作者完善,最让我头痛的是,每启动一次PBedit就要重新设置编译器(PowerBasic所带的PBWin.exe文件)的路径,所以抽空对PBedit进行了改造,目的是不要设置编译器的路径,只要把PBWin.exe和PBedit放在同一目录中就可以编译。

   所用工具:Peid0.95、ZeroAdder、Ollydbg、Peditor1.7

一、思路  
     1.为PBedit增加一个新区段。
   2.为PBedit增加一个函数GetCurrentDirectoryA用来获取当前目录中的PBWin.exe的路径。
   3.在新区段中写入获取路径的汇编代码。
二、改造   
    1.按照国际惯例,用Peid先侦查一下敌情,无壳,省事了!
   2. 用Peditor1.7为目标程序添加一个GetCurrentDirectoryA函数,用来获取编译器PBWin.exe的路径。
用Peditor1.7载入目标程序,点击“目录”。



在弹出的界面中,点击“输入表”


    点击“输入表”后,还会弹出一个输入表查看器对话框,在界面的上部会出现很多dll,右键随便点击一个,在弹出的菜单中点击“添加输入表”。



    我们要添加的函数是GetCurrentDirectoryA,这个函数在Kernel32.dll这个动态链接库中。



     这样操作后,我们就为目标程序添加了一个GetCurrentDirectoryA函数,如果目标程序中有这个函数,直接调用即可,就不用再添加了。

   3.拿出ZeroAdder为PBedit增加一个新区段,其实要写的代码不多,不增加新区段也行,考虑到以后软件升级再改造麻烦,所以我为它新增加了一个区段,区段名随便,我用的是Pbwin,尺寸填1000,不用填这么大也行(如下图)。

   

    三、编写汇编代码
     用ollydbg载入添加好区段和GetCurrentDirectoryA函数的目标程序,alt+M找到新添加的区段。
   
     回到OD的数据窗口,Ctrl+G输入66F000,就在这写代码吧。
用到我们新添加的GetCurrentDirectoryA和lstrcatA这两个函数,在下图中我给出了详细的注释,相信你能看明白。



    再取出Peditor1.7,把目标程序的入口点改为0066F000(改过OEP的目标程序PEid再查的话,将看不到是什么语言所写的了,有些免杀、做手脚等也用到这个方法),运行PBedit.exe,打开原先用它编写的代码,编译一下,出现了一个错误提示,告诉我们编译器配置错误,不怕它,OD再次载入目标程序,找到这个错误提示的来源,改其上面的跳转,再次编译代码,这次没有错误对话框提示了吧,但是还是不能编译,在PBedit的状态栏出了个提示:“运行编译器失败,请检测编译器路径是否正确”。
    我们通过给目标程序动手术,虽然获取到了编译器的完整路径,但在目标程序并没有读取获取的路径,运行编译器失败是正常的,还是用OD来解决问题吧,OD载入目标程序后,正确配置好编译器的路径,下断点CreateProcessA,断下后回到程序领空,看到了编译器的路径了吧,再下个内存断点,找到这个路径是从哪读取的,改为我们用GetCurrentDirectoryA函数获取的路径即可,我的改法是:


    再次运行目标程序,编译写好的代码,行了!


    开始时我是在程序将要调用编译器时让它跳到我写的汇编代码处,这样第一次可以正常编译,如果把工程文件保存在PBedit以外的目录中编译的话,GetCurrentDirectoryA获取的将是工程文件保存的目录,这样获取编译器的路径就错了,结果是不能正常编译。
觉睡醒以后,忽然想到把添加的汇编代码放到程序的OEP,这样目标程序就不会再次GetCurrentDirectoryA了,岂不正符合我们的本意吗?
    细心的破友们发现了,我使用的还是“未授权”版,看着这3个字心里怎么就那么不舒服呢?哪位破解好手“和谐”一下吧,我的机器码:E9A2398158825F2AE5662AA9F0A9FAB7
给我一个注册码吧,“未授权”三个字看着就难受

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2882
活跃值: (1267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
2
已下载感谢提供,学习下怎么diy
2010-12-26 01:20
0
游客
登录 | 注册 方可回帖
返回
//