能力值:
( LV2,RANK:10 )
4 楼
本软件的调试信息是多窗口并显,要通过按钮来完成切换.
有时需要点击按钮来完成对应功能
比如你要反汇编,你可以在上部窗口,点击任何8位长地址,
然后点击dasm按钮前面的U/P按钮,就能进行定位反汇编.
debug窗口有最高优先级,一有断点信息,就会自动切进
上传的附件:
能力值:
( LV2,RANK:10 )
7 楼
假如安装目录为c:\jbpaint,那么安装包中的两个二次开发描述语言就会得到运行.
或者你把画面上的描述语言
var a=0;
Createsubobj="c:\jbpaint\autop\excode0000.jmp";
Createsubobj="c:\jbpaint\autop\excode0001.jmp";
的路径改为你安装的路径并上传,那么这两段线程就会得到运行
代码已经修改,路径自动修正
能力值:
( LV2,RANK:10 )
8 楼
点击函数按钮前面的G按钮,就会进行函数调用分析,用时可能会有几秒到几十秒(看程序大小).
第一次运行做完的函数分析,会得到保存,后面就不一定要做这项分析
能力值:
( LV2,RANK:10 )
9 楼
清除按钮下面的上下左右按钮是用于检查各级线程运行的二次描述语言.
上下按钮切换层次,左右按钮在本层切换.一个线程可以通过
Createsubobj="c:\jbpaint\autop\excode0000.jmp";
的Createsubobj创建子线程,最大可以有四个,目前系统限制为三层,也就可以运行16个子线程.
每个线程的描述代码在编辑后按上传,就会传送到调试模块中,并得到保存
能力值:
( LV2,RANK:10 )
11 楼
var m_windows_info="";
m_windows_info=Win_TopInfo();
var m_mainhand_str=Win_GetMainHand1("恒生");
var m_mainhand=Win_GetMainHand("恒生");
var m_sub_wininfo=Win_SubWinInfo(m_mainhand);
wininfo=m_windows_info+m_mainhand_str+"
"+m_sub_wininfo;
//
var m_pmem_info=Win_ProcessMemInfo();
meminfo=m_pmem_info;
var m_smem_dir=Win_SearchProcessMemBYTEData(0x401000,0x600000,"34 62 37 32 33 37 35 39 CC 61 37 36");
var m_pmem_data=Win_ProcessMemData(m_smem_dir-(m_smem_dir%16),m_smem_dir+0x800);//本进程内存数据
fxinfo1="搜索到:"+m_smem_dir+appstr_enter();
fxinfo1=m_pmem_data;
var m_pmem_dasm=Win_ProcessMemDasm(0x1661000,0x1662000);//本进程dasm
fxinfo2=m_pmem_dasm;
while(TRUE)
{
Sleep(2);
}
var ee=0;
var ee1=0;
var ee2=0;
var ee3=0;
var ee4=0;
能力值:
( LV2,RANK:10 )
13 楼
支持的调试函数总汇
Win_TopInfo() ;//获取目标进程主窗口信息
Win_GetMainHand(name0,...mame5) ;//获取目标进程指定的主窗口句柄
Win_GetMainHand1(name0,...mame5) ;//获取目标进程指定的主窗口句柄字串
Win_SubWinInfo(hwnd,level) ;//获取指定窗口的子窗口信息
Win_PopWnd_Proc(m_process_id,hmainWnd) ;//关闭提示类主窗口
Win_SearchXDWnd(hWnd,name) ;//搜索tbutton类名子按钮
Win_SearchZTWnd(hWnd) ;//搜索hwnd的父窗口中类名为tpanel的子窗口
Win_SearchWnd(hWnd,id,name text);//搜索hwnd的子窗口,name text为可选参数
Win_SearchWnd_MFCxGridBase(hWnd,level);//搜索hwnd的子窗口
Win_GetParent(hWnd) ;//获取父窗口
Win_GetTopWindow(hWnd) ;//获取第一个子窗口
Win_GetNextWindow(hWnd) ;//获取hwnd下一窗口
Win_GetClassName(hWnd) ;//获取窗口类名
Win_GetDlgCtrlID(hWnd) ;//获取窗口ID
Win_GetText(hWnd) ;//获取窗口文字
Win_GetDlgItem(hWnd,id) ;//获取子窗口
Win_SearchWnd_Tree(hWnd,level);//搜索hwnd的systree类子窗口
Win_SearchWnd_Tool(hWnd,level);//搜索hwnd的toolbar类子窗口
Win_SearchWnd_Dialog(hWnd,id,DisWnd1,DisWnd2,...);//搜索hwnd的子窗口,不能是DisWnd...
Win_GotoTreeItem(hWnd,text,notext);//切换到树窗口的text(非notext)条目
Win_CheckTreeItem(hWnd,text,notext);//检查当前是不是树窗口的text(非notext)条目
Win_GetListCtrl_Info(hWnd,size);//获取listctrl的字段信息
Win_GetListCtrl_Data(hWnd,index,size);//获取listctrl的第index条数据
Win_DBLCLK_ListCtrl(hWnd,index);//双击listctrl条目
Win_MFC_BNCLK(hWnd,id);//VC程序点击按钮
Win_SetWindowText(hWnd,text);//VC程序点击按钮
Win_SetWindowText_EX(hWnd,text);//VC程序点击按钮
Win_MOUSECLK(hWnd);//点击
Win_SetActiveWindow(hWnd);//激活
Win_SW_HIDE(hWnd);//隐藏
Win_SW_RESTORE(hWnd);//恢复
Win_WM_KEYDOWN(hWnd,VK_val);//键按下
Win_WM_CHAR(hWnd,VK_val);//键消息
Win_ALT_KEY(hWnd,m_char);//alt+键消息
Win_CB_SETCURSEL(hWnd,sel);//控件选择
Win_ProcessMemInfo();//本进程内存模块信息
Win_ProcessMemData(start,end);//本进程内存数据
Win_ProcessMemDasm(start,end);//本进程内存反汇编
Win_GetProcessMoudleImport(CString name);//调入本进程指定模块输入表,返回添加数量
Win_GetProcessMoudleExport(CString name);//调入本进程指定模块输出表,返回添加数量
Win_GetProcessMoudleNameList(CString name);//获取本进程指定模块的名称列表
Win_GetProcessMoudleCallList(CString name);//获取本进程指定模块的调用列表
Win_WriteProcessMemBYTEData(pwr_at,byte str);//写入进程数据BYTE字串12 23
Win_Asm(pwr,src)//汇编单条指令并写入,返回长度,若含有函数名称,请以★★开头,☆☆结束来界定
Win_ReadMemToBuf(start,end);//读进程内存数据到缓冲区
Win_ReadMemBufByteData(dir);//读内存数据缓冲区byte
Win_ReadMemBufWORDData(dir);//读内存数据缓冲区word
Win_ReadMemBufDWORDData(dir);//读内存数据缓冲区word
Win_ReadMemBufIntData(dir);//读内存数据缓冲区int
Win_ReadMemBufFloatData(dir);//读内存数据缓冲区float
Win_ReadMemBufDoubleData(dir);//读内存数据缓冲区double
Win_ReadMemBufStringData(dir,len,endbyte);//读内存数据缓冲区字串
Win_SearchProcessMemDWORDData(start,end,dword str);//搜索进程数据word
Win_SearchProcessMemIntData(start,end,int str);//搜索进程数据int
Win_SearchProcessMemFloatData(start,end,float str);//搜索进程数据float
Win_SearchProcessMemDoubleData(start,end,double str);//搜索进程数据double
Win_SearchProcessMemStringData(start,end,str);//搜索进程数据字串*忽略
Win_SearchProcessMemBYTEData(start,end,byte str);//搜索进程数据BYTE字串12 23 ...忽略cc
*****************************************
XDebug_SetInt3Break(Address,js);//置int3断点
XDebug_SetMemBreak(Address,js);//置内存断点
XDebug_SetDebugBreak(Address,js);//置硬断点
XDebug_ClearInt3Break(Address);//清int3断点
XDebug_ClearMemBreak(Address);//清内存断点
XDebug_ClearDebugBreak(Address);//清硬断点
XDebug_FlashInt3Break();//刷int3断点
XDebug_FlashMemBreak();//刷内存断点
XDebug_FlashDebugBreak();//刷硬断点
XDebug_ClearAllInt3Break();//清所有int3断点
XDebug_ClearAllMemBreak();//清所有内存断点
XDebug_ClearAllDebugBreak();//清所有硬断点
Xdebug_ClearBreakWait_Goto(index);//等同于go命令
Xdebug_ClearBreakWait_Call(index);//等同于call后命令
Xdebug_ClearBreakWait_ToCall(index);//等同于call前命令
Xdebug_ClearBreakWait_ToJmp(index);//等同于jmp前命令
Xdebug_ClearBreakWait_Proc_Head(index);//等同于函数头命令
Xdebug_ClearBreakWait_Proc_Ret(index);//等同于函数返回命令
Xdebug_ClearBreakWait_ToCmp(index);//等同于cmp前命令
Xdebug_ClearBreakWait_Step(index);//等同于单步命令
Xdebug_GetBreakWait(index);//获得等待状态
Xdebug_GetBreakWait_Flag(index);//获得等待处理标记
Xdebug_ClearBreakWait_Flag(index);//清除等待处理标记,以示已处理
Xdebug_GetBreakReg_Eax(index);//获取中断点寄存器
Xdebug_GetBreakReg_Ebx(index);//获取中断点寄存器
Xdebug_GetBreakReg_Ecx(index);//获取中断点寄存器
Xdebug_GetBreakReg_Edx(index);//获取中断点寄存器
Xdebug_GetBreakReg_Edi(index);//获取中断点寄存器
Xdebug_GetBreakReg_Esi(index);//获取中断点寄存器
Xdebug_GetBreakReg_Ebp(index);//获取中断点寄存器
Xdebug_GetBreakReg_Esp(index);//获取中断点寄存器
Xdebug_GetBreakReg_Eip(index);//获取中断点寄存器
Xdebug_GetBreakReg_Eflags(index);//获取中断点寄存器
Xdebug_GetBreakReg_Dr0(index);//获取中断点寄存器
Xdebug_GetBreakReg_Dr1(index);//获取中断点寄存器
Xdebug_GetBreakReg_Dr2(index);//获取中断点寄存器
Xdebug_GetBreakReg_Dr3(index);//获取中断点寄存器
Xdebug_GetBreakReg_Dr6(index);//获取中断点寄存器
Xdebug_GetBreakReg_Dr7(index);//获取中断点寄存器
Xdebug_SetBreakReg_Eax(index,value);//修改中断点寄存器,慎用!!
Xdebug_SetBreakReg_Ebx(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Ecx(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Edx(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Edi(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Esi(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Ebp(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Esp(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Eip(index,value);//修改中断点寄存器
Xdebug_SetBreakReg_Eflags(index,value);//修改中断点寄存器
*****************************************
能力值:
( LV2,RANK:10 )
14 楼
在语言中使用
debuginfo
wininfo
meminfo
hookinfo
fxinfo1
fxinfo2
fxinfo3
fxinfo4
这八个外部变量(不需要用var定义的变量)来将调试信息发到调试终端的对应窗口
比如你使用
meminfo="very good!";
那么very good!字串就会被发到模块窗口
(这里名字是开始搞时起的,比较不达意)
能力值:
( LV2,RANK:10 )
15 楼
使用内存搜索函数可以快速定位,就象这个
Win_SearchProcessMemBYTEData(0x401000,0x600000,"34 62 37 32 33 37 35 39 CC 61 37 36");
搜索数据中的 CC表示这位不论数据
能力值:
( LV2,RANK:10 )
16 楼
搞程序分析主要在于目标定位,所以特征搜索功能很重要.
一但目标有了,就可以利用内存断点来断程序,来确认调用部位
我个人不大喜欢int3断点,因为调试时有可能因为某种情况不能恢复原指令,就容易引起程序崩溃.
要尽量利用硬断点.
我个人比较看好Cheat Engine的ring0的调试技术,可惜我个人水平有限.
搞不了ring0.不过以后有可能会去试试,看能不能使用Cheat Engine的dbk32.dll
能力值:
( LV2,RANK:10 )
20 楼
插入后要稍等.
你是什么平台?有可能是防火墙挡住了.
另外在windows 2008/vista/win7上要以管理员权限运行,
不然就要出问题.
能力值:
( LV2,RANK:10 )
21 楼
被防火墙或系统挡住有两个环节
1,插入myrmt00.dll,不让插
2.myrmt00.dll调试模块到调试终端rmtdebug.exe的网络端口被封.
所以假如有问题,请从这两方面着手
能力值:
( LV2,RANK:10 )
23 楼
我已经在myrmt00.dll中把网络库加上,本贴下载的文件已经修改更新.
你更新一下,就可以调试notepad等没网络连接的程序了