AjaxPro.NET使用

小红书x-mini签名逆向实战:Frida动态Hook与算法还原 在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位 阅读详情

(一). 运行效果如下:

(二). AjaxPro.NET简介

         AjaxPro.NET是一个优秀的Ajax框架, 在实际应用中只要添加其DLL引用并进行简单的配置,

         即可以非常方便的在客户端直接调用服务端方法, 实现验证目的.

(三).使用AjaxPro.NET预配置

       1. 添加 AjaxPro.dll 文件的引用(示例代码中已经包含,直接COPY过来使用即可).

       2. 在Web.config文件中添加以下配置,           

1 <httpHandlers>
2             <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro" />            
3 </httpHandlers>
 
 
       3. 在要使用AjaxPro.NET框架的页面 *.aspx.cs 的 Page_Load事件中加如下代码:
 
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
 
       4. 经过以上三步骤后, 只要在后台服务端的方法前面增加属性[AjaxMethod]后:
 
 1  [AjaxMethod()]    // or [AjaxPro.AjaxMethod] 
 2 public ArrayList GetSearchItems( string strQuery )
 3 {
 4      //生成数据源
 5      ArrayList items = new ArrayList();
 6      items.Add("King");
 7      items.Add("Rose");
 8      return items ;
 9 } 
10 
 
        就可以在客户端直接使用服务端方法, 非常方便, 客户端调用后台代码如下:
var returnValue = 后台代码类名.GetSearchItems(参数);

(四). 详细代码如下:

       1. 客户端脚本代码如下:

  1 //// JScript File
  2 var DIV_BG_COLOR = "#FFE0C0";
  3 var DIV_HIGHLIGHT_COLOR = "#6699FF";
  4 var DIV_FONT = "Arial";
  5 var DIV_PADDING = "2px";
  6 var DIV_BORDER = "1px solid #CCC";
  7 var queryField;
  8 var divName;
  9 var ifName;
 10 var lastVal = "";
 11 var val = "";
 12 var globalDiv;
 13 var divFormatted = false;
 14 
 15 function InitQueryCode( queryFieldName, hiddenDivName )
 16 {    
 17     queryField = document.getElementById( queryFieldName );
 18     queryField.onblur = hideDiv;
 19     queryField.onkeydown = keypressHandler;
 20     queryField.autocomplete = "off";
 21     
 22     if( hiddenDivName )
 23     {
 24         divName = hiddenDivName;
 25     }
 26     else
 27     {
 28         divName = "querydiv";
 29     }
 30     
 31     ifName = "queryiframe";
 32     setTimeout("mainLoop()",100);
 33 }
 34 
 35 function getDiv(divID)
 36 {
 37     if(!globalDiv)
 38     {
 39         if(!document.getElementById(divID))
 40         {
 41             var newNode = document.createElement("div");
 42             newNode.setAttribute("id", divID);
 43             document.body.appendChild(newNode);
 44         }
 45         globalDiv = document.getElementById(divID);
 46         var x = queryField.offsetLeft;
 47         var y = queryField.offsetTop + queryField.offsetHeight;
 48         var parent = queryField;
 49         while(parent.offsetParent)
 50         {
 51             parent = parent.offsetParent;
 52             x += parent.offsetLeft;
 53             y += parent.offsetTop;
 54         }
 55         if(!divFormatted)
 56         {
 57             globalDiv.style.backgroundColor = DIV_BG_COLOR;
 58             globalDiv.style.fontFamily = DIV_FONT;
 59             globalDiv.style.padding = DIV_PADDING;
 60             globalDiv.style.border = DIV_BORDER;
 61             globalDiv.style.width = "100px";
 62             globalDiv.style.fontSize = "90%";            
 63             globalDiv.style.position = "absolute";
 64             globalDiv.style.left = x + "px";
 65             globalDiv.style.top = y + "px";
 66             globalDiv.style.visibility = "hidden";
 67             globalDiv.style.zIndex = 10000;
 68             divFormatted = true;
 69             
 70         }
 71     }
 72     return globalDiv;
 73 }
 74 
 75 function showQueryDiv(resultArray)
 76 {
 77     var div = getDiv(divName);
 78     while( div.childNodes.length > 0 )
 79     {
 80         div.removeChild(div.childNodes[0]);
 81     }
 82     for(var i = 0; i < resultArray.length; i++)
 83     {
 84         var result = document.createElement("div");
 85         result.style.cursor = "pointer";
 86         result.style.padding = "2px 0px 2px 0px";
 87         result.style.width = div.style.width;//Add width        
 88         _unhighlightResult(result);
 89         result.onmousedown = selectResult;
 90         result.onmouseover = highlightResult;
 91         result.onmouseout = unhighlightResult;        
 92         
 93         var value = document.createElement("span");
 94         value.className = "value";
 95         value.style.textAlign = "left";
 96         value.style.fontWeight = "bold";        
 97         value.innerHTML = resultArray[i];
 98         result.appendChild(value);
 99         div.appendChild(result);        
100     }
101     showDiv(resultArray.length > 0);
102 }
103 
104 function selectResult()
105 {
106     _selectResult(this);
107 }
108 function _selectResult( item )
109 {
110     var spans = item.getElementsByTagName("span");
111     if( spans )
112     {
113         for(var i = 0; i < spans.length; i++)
114         {
115             if( spans[i].className == "value" )
116             {
117                 queryField.value = spans[i].innerHTML;
118                 lastVar = val = escape( queryField.value );
119                 mainLoop();
120                 queryField.focus();
121                 showDiv( false );
122                 return;
123             }
124         }
125     }
126 }
127 
128 function highlightResult()
129 {
130     _highlightResult( this );    
131 }
132 
133 function _highlightResult( item )
134 {
135     item.style.backgroundColor = DIV_HIGHLIGHT_COLOR;
136 }
137 
138 function unhighlightResult()
139 {
140     _unhighlightResult( this );
141 }
142 
143 function _unhighlightResult( item )
144 {
145     item.style.backgroundColor = DIV_BG_COLOR;
146 }
147 
148 function showDiv( show )
149 {
150     var div = getDiv( divName );
151     if( show )
152     {
153         div.style.visibility = "visible";
154     }
155     else
156     {
157         div.style.visibility = "hidden";
158     }
159     adjustiFrame();
160 }
161 
162 function hideDiv()
163 {
164     showDiv( false );
165 }
166 
167 function keypressHandler(evt)
168 {
169     var div = getDiv( divName );
170     if( div.style.visibility == "hidden" )
171     {
172         return true;
173     }
174     if( !evt && window.event )
175     {
176         evt = window.event;
177     }
178     var key = evt.keyCode;
179     
180     var KEYUP = 38;
181     var KEYDOWN = 40;
182     var KEYENTER = 13;
183     var KEYTAB = 9;
184     if(( key != KEYUP ) && ( key != KEYDOWN ) && ( key != KEYENTER ) && ( key != KEYTAB ))
185     {
186         return true;
187     }
188     var selNum = getSelectedSpanNum( div );
189     var selSpan = setSelectedSpan( div, selNum );
190     if( key == KEYENTER || key == KEYTAB )
191     {
192         if( selSpan )
193         {
194             _selectResult(selSpan);
195         }
196         evt.cancelBubble= true;
197         return false;
198     }    
199     else
200     {
201         if( key == KEYUP)
202         {
203             selSpan = setSelectedSpan( div, selNum - 1 );           
204         }
205         if( key == KEYDOWN )
206         {
207             selSpan = setSelectedSpan( div, selNum + 1 );
208         }
209         if( selSpan )
210         {
211             _highlightResult( selSpan );
212         }
213     }
214     showDiv( true );
215     return true;
216 }
217 
218 function getSelectedSpanNum( div )
219 {
220     var count = -1;
221     var spans = div.getElementsByTagName("div");
222     if( spans )
223     {
224         for( var i = 0; i < spans.length; i++)
225         {
226             count++;
227             if( spans[i].style.backgroundColor != div.style.backgroundColor )
228             {
229                 return count;
230             }
231         }
232     }
233     return -1;
234 }
235 function setSelectedSpan( div, spanNum )
236 {
237     var count = -1;
238     var thisDiv;
239     var divs = div.getElementsByTagName("div");
240     if( divs )
241     {
242         for( var i = 0; i < divs.length; i++ )
243         {
244             if( ++count == spanNum )
245             {
246                 _highlightResult( divs[i] );
247                 thisDiv = divs[i];
248             }
249             else
250             {
251                 _unhighlightResult( divs[i] );
252             }
253         }        
254     }
255     return thisDiv;
256 }
257 
258 function adjustiFrame()
259 {
260     if(!document.getElementById(ifName))
261     {
262         var newNode = document.createElement("iFrame");
263         newNode.setAttribute("id", ifName);
264         newNode.setAttribute("src","javascript:false;");
265         newNode.setAttribute("scrolling","no");
266         newNode.setAttribute("frameborder","0");
267         document.body.appendChild( newNode );        
268     }
269     iFrameDiv = document.getElementById( ifName );
270     var div = getDiv( divName );    
271     try
272     {
273         iFrameDiv.style.position = "absolute";        
274         iFrameDiv.style.width = div.offsetWidth;
275         iFrameDiv.style.height = div.offsetHeight;
276         iFrameDiv.style.top = div.style.top;
277         iFrameDiv.style.left = div.style.left;
278         iFrameDiv.style.zIndex = div.style.zIndex - 1;
279         iFrameDiv.style.visibility = div.style.visibility;           
280     }
281     catch (e)
282     {}
283 }

     2. 页面文件 AutoQueryTextBox.aspx 代码如下:

 1 <head runat="server">
 2     <title>AjaxPro.NET AutoQueryTextBox</title>
 3     <script language="javascript" src="lookup.js"></script>
 4         <script language="jscript">
 5         mainLoop = function()
 6         {
 7             val = escape( queryField.value );
 8             if( lastVal != val )
 9             {
10                 var response = _Default.GetSearchItems( val );
11                 showQueryDiv( response.value );
12                 lastVal = val;
13             }
14             setTimeout('mainLoop()', 100);
15             return true;
16         }        
17     </script>
18 </head>
19 <body >
20     <form id="form1" runat="server">
21     <div>
22         <asp:Panel ID="Panel1" runat="server" BackColor="#C0C0FF" Font-Bold="True" Font-Overline="False"
23             Font-Size="XX-Large" Height="37px" Width="475px">
24             AjaxPro.NET AutoQueryTextBox</asp:Panel>
25         <br />
26         <hr align="left" style="width: 473px" />
27         <br />
28         输入查询字串:&nbsp; &nbsp;<asp:TextBox ID="txSearch" runat="server"
29             Width="134px"></asp:TextBox>&nbsp;<br />
30         <br />
31     </div>
32     <script language="jscript">
33         InitQueryCode("" + '<%= txSearch.ClientID %>' + "");
34     </script>    
35     </form>
36 </body>

       3.后台文件 AutoQueryTextBox.aspx.cs 代码如下:

 1 public partial class _Default : System.Web.UI.Page 
 2 {
 3     protected void Page_Load(object sender, EventArgs e)
 4     {       
 5        Utility.RegisterTypeForAjax(typeof(_Default));
 6     }
 7 
 8    [AjaxMethod()]// or [AjaxPro.AjaxMethod] 
 9    public ArrayList GetSearchItems( string strQuery )
10    {
11       //生成数据源
12       ArrayList items = new ArrayList();
13       items.Add("King");
14       items.Add("Rose");
15       items.Add("James");
16       items.Add("Elvis");
17       items.Add("Jim");
18       items.Add("John");
19       items.Add("Adams"); 
20 
21       //筛选数据
22       ArrayList selectItems = new ArrayList();
23       foreach( string str in items )
24       {
25          if (str.ToUpper().IndexOf(strQuery.ToUpper()) == 0)
26          {
27             selectItems.Add(str);
28          }
29       }
30       return selectItems;
31    }  
32 }

(五). 示例代码下载

        见信箱

 
Simulink机电仿真避坑指南:如何用MATLAB解决液压系统建模的3大典型问题 本文针对液压系统建模在Simulink动态仿真中常见的三大难题——参数物理意义缺失、模型收敛性差及性能优化瓶颈,提供了专业的MATLAB解决方案。文章详细阐述了如何从物理参数推导仿真模型、破解代数环与刚性系统问题,并分享了模型降阶与加速技巧,旨在帮助工程师构建精确高效的机电系统仿真模型。 阅读详情

相关推荐

当今用于探测和阻止无人机的 10 种反无人机技术

利用反无人机技术应对无人机威胁。

网络研究观 3540

AjaxPro.Net的使用

    AjaxPro.Net是一个优秀的.net环境下的Ajax框架,用法很简单,可以查阅相关资料,下面一个简单的实例讲述使用AjaxPro的几个关键点(注意,必须有AjaxPro包,即AjaxPro.dll文件,可以在VSS上下载)。    首先我们要下载 AjaxPro包,并将AjaxPro.dll 拷到项目的bin下面       在web.config中配置如下,添加以下代码 Vi...

weixin_34075268的博客 167

Java网页访问报错?手把手教你解决JRE插件缺失和浏览器拦截问题(附详细截图)

本文针对Java网页访问时常见的JRE插件缺失和浏览器拦截问题,提供了详细的诊断与解决方案。文章首先解释了问题根源在于现代浏览器出于安全考虑停止了对Java插件的支持,然后手把手指导用户确认Java安装、在控制面板配置安全站点列表,并针对Chrome、Edge、Firefox等主流浏览器的不同拦截机制给出了具体的应对策略,最后提供了系统性的故障排查清单,帮助用户彻底解决访问障碍。

weixin_29233857的博客 220

AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)

学习  [征服Ajax——Web 2.0快速入门与项目实践(.net)]  (一). 运行效果如下:(二). AjaxPro.NET简介         AjaxPro.NET是一个优秀的Ajax框架, 在实际应用中只要添加其DLL引用并进行简单的配置,          即可以非常方便的在客户端直接调用服务端方法, 实现验证目的.(三).使用AjaxPro.NET预配置

★(ChengKing)【夜战鹰】【产品级性能调优与故障诊断分析】★ 8702

sap销售发货的流程_SAP销售订单发货后如何实现发票的自动创建?

问SAP销售订单发货后如何实现发票的自动创建?答业务场景有些快消零售企业,SAP系统单据量大,单据金额少,一般在销售发货后即可确认收入。此时无需人工在系统内操作VF01或者VF04进行开票操作,可将该操作设置成后台作业进行自动批量开票,具体操作如下:1、定义任务:VF06输入完以上信息,点击保存进入以下界面:说明:当前日期的意思是“开票的日期”等于“系统电脑中的当前日期”当前日期+/-...

weixin_42358409的博客 3361

Deep Reinforcement Learning - 1. DDPG原理和算法

Deep Reinforcement Learning - 1. DDPG原理和算法 背景描述 DDPG的定义和应用场景 DDPG算法相关基本概念定义 DDPG实现框架和算法 DDPG对于DPG的关键改进 下一篇 以下用RL作为Reinforcement Learning 的简称。背景描述概括来说,RL要解决的问

kenneth_yu的博客 14万+

GPWv411:解锁全球1公里网格人口密度的数据力量与应用实践

本文详细介绍了GPWv411数据集,这是一种全球1公里网格人口密度数据,由哥伦比亚大学CIESIN开发,适用于城市规划、灾害风险评估和公共卫生资源配置等多个领域。文章还提供了数据获取、处理和分析的实用技巧,帮助读者充分利用这一高分辨率数据集。

weixin_33670713的博客 442

切比雪夫(最小区域法)直线拟合算法

切比雪夫,最小区域法直线拟合

闪电彬彬的博客 3962

构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下后篇)—减少不必要...

构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下后篇)—减少不必要的请求     前言:本篇的一些内容比较的有意思,总结了可能平时大家可以注意到的一些优化点,而且非常的实用。   本篇的议题如下: 识别和分析服务端的性能瓶颈(上) 内存(前篇) 缓存(前篇) CPU(后篇) 处理请求线程(后篇) 提高性能的一些简单改进措施(下)          部署优化(...

weixin_34062469的博客 165

Quantum Espresso Hands-On实战训练(四)——PDOS计算与轨道分析

本文详细介绍了Quantum Espresso中PDOS计算与轨道分析的实战方法,重点解析了PDOS在材料电子结构研究中的核心价值,包括原子级分辨率、轨道级解析和自旋极化分析。通过具体案例和操作步骤,帮助读者掌握从输入文件准备到结果解读的全流程,并提供了高级分析技巧和疑难问题解决方案。

weixin_29211309的博客 504

人工智能之数学基础:弄懂数学本质,让我们不再害怕数学

数学的用途远远超过了人们的想象,甚至无处不在,任何领域都需要用到数学知识,人工智能也不例外。我将尽可能地将数学知识和机器学习算法相结合,让大家知道这些数学知识咋人工智能领域中的应用,使得数学的学习不会过于枯燥,同时也帮助大家扫清在学习算法过程中的数学障碍。除此之外,我还希望帮助大家建立一种不一样的数学思维,不再将数学看成是符号的演算、公式的推导,而是将数学看成是一种描述这个世界的工具,这样你就会发现这个世界处处有数学。当我们面对问题的时候,你是否会对问题进行抽象,然后通过数学来解决问题?

huanfeng_AI的博客 631

AjaxPro让.NET的AjaxPro变得简单

AjaxPro让.NET的AjaxPro变得简单 前段时间要用到Ajax,不过,完全靠自己来写嫌太烦,不愿做些麻烦事。 碰巧看到了ajaxpro,尝试了一下,觉得很简单,很实用,兼容性也很好。 AjaxPro的官网是http:

Frebby_Li的专栏 727

C++面向对象编程-继承与派生练习题

2、共同派生类 3、人员类Person的派生(虚基类的使用)

编程小鹏的博客 1191

AjaxPro.Net的例子

AjaxPro.Net是一个优秀的.net环境下的ajax框架.net 2.0对应的DLL为AjaxPro.2.dll,这个网上提供下载的地址很多。一 环境Windows 2003VS 2005AjaxPro 2二 例子1) 新建ASP.NET工程2) 添加AjaxPro.2.dll3) 修改WEB.CONFIG4)新建一个页面ajaxpro.aspx,代码:@ Page Langua

知 行 合 一 1619

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ASP.NET使用AjaxPro实现前端跟后台交互详解

这里写自定义目录标题欢迎使用Markdown编辑器前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 提示:文章写完后,目录可以

alxiao的博客 727

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

AjaxPro.NET配置

使用AjaxPro.NET配置 1. 添加 AjaxPro.dll 文件的引用. 2. 在Web.config文件中添加以下配置, <httpHandlers>   <addverb="POST,GET"path="ajaxpro/*.ashx"type="AjaxPro.AjaxHandlerFactory,AjaxP...

dkrib1201的博客 206

AjaxPro在.NET中的应用

AjaxPro在.NET中的应用   一、简介  Ajax(Asynchronous JavaScript + XML)应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自...

120

AJAXPRO.NET中使用自定类型集合的方法

AJAXPRO.NET中使用自定类型集合的方法类1: public class QQFriend {  private int userID;  private string userName;  private string nickName;  public QQFriend()  {  }  public QQFriend(int userID,string userName

SmartJavaer的专栏 1014

如何在AjaxPro.net的AjaxMethod中使用session和cookie

解决方案:添加一个AjaxPro.HttpSessionStateRequirement 枚举的值到你的AjaxPro.AjaxMethodAttribute中.例如: [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)]    现在你就可以像下面这样存取Session的值了: this.Session["0"].ToStri

johncools的博客 1342

使用ajaxpro.net的步骤

第一步向ASP.Net Web应用程序项目中添加AjaxPro.dll的引用第二步修改Web.config文件         第三步在Web窗体的Page_Load方法中增加一行。AjaxPro.Utility.RegisterTypeForAjax(typeof(*****));注意:*****代表该网页名称。第四步在C#代码中如果有需要被客户端访问的要加上[AjaxPro.Aja

Wind_Lam的专栏 498

ASP.NET AjaxPro的应用

ASP.NET AjaxPro的应用 1、首先下载AjaxPro组件。并将AjaxPro.dll引用到网站(或项目)。 2、修改Web.config。在 <system.web> 元素中添加以下代码。 <configuration> <system.web> <httpHandlers> <!-- Register the aj...

weixin_30455023的博客 87

AjaxPro.NET使用,方便的在客户端直接调用服务端方法

(一). 运行效果如下: (二). AjaxPro.NET简介 AjaxPro.NET是一个优秀的Ajax框架, 在实际应用中只要添加其DLL引用并进行简单的配置, 即可以非常方便的在客户端直接调用服务端方法, 实现验证目的. (三).使用AjaxPro.NET预配置 1. 添加 AjaxPro.dll 文件的引用(示例代码中已经包含,直接COPY过来使用即可). 2. 在Web.config文件中添加以下配置, ...

zp19860529的博客 410
上一篇: dnn汉化
下一篇: Ajax应用xmlhttp的例子
Awinye
博客等级 码龄22年 13粉丝 122原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值